{"repo":"NousResearch/hermes-agent","public_id":"93927","display_label":"Plugin guard falsely flags test fixture strings","summary":"A bug caused plugin_guard to scan test directories and treat destructive strings in test fixtures as DANGEROUS, blocking legitimate plugin installs. The fix excludes test trees from the scan and improves block reason reporting.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":110218,"merged_at":"2026-09-13T21:43:05+00:00"},"resolution":{"state":"resolved","by":"pr-110218"},"freshness":{"state":"verified","last_verified_at":"2026-09-13T21:43:05+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":89610,"pr_number":110218,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-13T21:43:05+00:00"},{"issue_number":93927,"pr_number":110218,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-13T21:43:05+00:00"},{"issue_number":109391,"pr_number":110218,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-13T21:43:05+00:00"}],"members":[{"kind":"issue","number":93927,"title":"plugin_guard: destructive strings in TEST fixtures produce DANGEROUS verdict, blocking install of legitimate plugins with no override","url":null,"state":"closed"},{"kind":"pr","number":97686,"title":"fix(plugin-guard): exclude tests/ from plugin scan (closes #93927)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"1e76efbe28ef","number":0},{"kind":"pr","value":"#110218","number":110218}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":110218,"title":"plugin_guard: test trees no longer force a DANGEROUS verdict; block reason names the critical rule (#93927, #109391, salvage #89613 #109420)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["tests/tools/test_plugin_guard.py","tests/tools/test_plugin_guard_block_reason.py","tools/plugin_guard.py","website/docs/user-guide/features/plugins.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}