{"repo":"NousResearch/hermes-agent","public_id":"109391","display_label":"Plugin guard critical-finding scan and exclusion fixes","summary":"These items address how the plugin guard identifies and handles critical findings during install checks, including blocking behavior and the exclusion of test trees from scans.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"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.5},"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":109391,"title":"plugin_guard: one CRITICAL finding in a plugin's test suite blocks install outright (tests/docs not excluded, no per-finding waiver)","url":null,"state":"closed"},{"kind":"pr","number":109395,"title":"fix(plugin): exclude test trees from guard scans","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#89613","number":89613},{"kind":"pr","value":"#109391","number":109391},{"kind":"pr","value":"#89610","number":89610}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":109420,"title":"fix(plugin): identify critical findings in install blocks","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}}