Context (AMS adversarial audit)
packages/loopover-miner/lib/deny-hook-synthesis.ts's refreshProposals (:44/:187) has NO caller outside tests (no CLI subcommand either), and coding-agent-construction.ts:140-158 + both its callers (attempt-cli.ts:270, cross-repo-evaluation.ts:711-712) invoke the driver with no houseRulesConfig — so coding-agent-house-rules.ts:58-61 always falls back to DEFAULT_DENY_RULES and resolveEffectiveDenyRules (which merges maintainer-approved synthesized proposals) is never consulted. An operator who approves synthesized rules reasonably believes future attempts respect them; they never do.
Fix
Wire initDenyHookSynthesisStore(...).resolveEffectiveRules(repoFullName) into buildAttemptDeps' houseRulesConfig, add a refresh CLI subcommand, and pin with a test that an approved synthesized rule actually blocks the matching tool call. (Contrast: the min-rank calibration loop (#8172) is the correctly-wired precedent for this same advisory-then-double-gated-apply shape.)
99%+ patch coverage, branch-counted.
Context (AMS adversarial audit)
packages/loopover-miner/lib/deny-hook-synthesis.ts's refreshProposals (:44/:187) has NO caller outside tests (no CLI subcommand either), and coding-agent-construction.ts:140-158 + both its callers (attempt-cli.ts:270, cross-repo-evaluation.ts:711-712) invoke the driver with no houseRulesConfig — so coding-agent-house-rules.ts:58-61 always falls back to DEFAULT_DENY_RULES and resolveEffectiveDenyRules (which merges maintainer-approved synthesized proposals) is never consulted. An operator who approves synthesized rules reasonably believes future attempts respect them; they never do.
Fix
Wire initDenyHookSynthesisStore(...).resolveEffectiveRules(repoFullName) into buildAttemptDeps' houseRulesConfig, add a refresh CLI subcommand, and pin with a test that an approved synthesized rule actually blocks the matching tool call. (Contrast: the min-rank calibration loop (#8172) is the correctly-wired precedent for this same advisory-then-double-gated-apply shape.)
99%+ patch coverage, branch-counted.