tests/gateway/test_feishu_comment_rules.py::TestCommentDocumentRuleParsing::test_invalid_policy_ignored tests/gateway/test_feishu_comment_rules.py::TestCommentDocumentRuleParsing::test_parse_empty_rule tests/gateway/test_feishu_comment_rules.py::TestCommentDocumentRuleParsing::test_parse_full_rule tests/gateway/test_feishu_comment_rules.py::TestCommentDocumentRuleParsing::test_parse_partial_rule tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_default_config tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_exact_match tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_exact_overrides_wildcard tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_exact_takes_priority_over_wiki tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_explicit_empty_allow_from_does_not_fall_through tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_field_by_field_fallback tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_top_level_fallback tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_wiki_token_match tests/gateway/test_feishu_comment_rules.py::TestResolveRule::test_wildcard_match tests/gateway/test_feishu_comment_rules.py::TestHasWikiKeys::test_empty_documents tests/gateway/test_feishu_comment_rules.py::TestHasWikiKeys::test_has_wiki_keys tests/gateway/test_feishu_comment_rules.py::TestHasWikiKeys::test_no_wiki_keys tests/gateway/test_feishu_comment_rules.py::TestIsUserAllowed::test_allowlist_allows_listed tests/gateway/test_feishu_comment_rules.py::TestIsUserAllowed::test_allowlist_denies_unlisted tests/gateway/test_feishu_comment_rules.py::TestIsUserAllowed::test_allowlist_empty_denies_all tests/gateway/test_feishu_comment_rules.py::TestIsUserAllowed::test_pairing_allows_in_allow_from tests/gateway/test_feishu_comment_rules.py::TestIsUserAllowed::test_pairing_checks_store tests/gateway/test_feishu_comment_rules.py::TestMtimeCache::test_reads_file_and_caches tests/gateway/test_feishu_comment_rules.py::TestMtimeCache::test_reloads_on_mtime_change tests/gateway/test_feishu_comment_rules.py::TestMtimeCache::test_returns_empty_dict_for_missing_file tests/gateway/test_feishu_comment_rules.py::TestLoadConfig::test_load_missing_file_returns_defaults tests/gateway/test_feishu_comment_rules.py::TestLoadConfig::test_load_with_documents tests/gateway/test_feishu_comment_rules.py::TestPairingStore::test_add_and_list tests/gateway/test_feishu_comment_rules.py::TestPairingStore::test_add_duplicate tests/gateway/test_feishu_comment_rules.py::TestPairingStore::test_remove tests/gateway/test_feishu_comment_rules.py::TestPairingStore::test_remove_nonexistent