⚠️ Definition of Done: this issue must be completed in full, in a single PR. Do not split this
work across multiple PRs, and do not defer any Deliverable below to a follow-up issue. A PR that
satisfies only some of the Deliverables, stubs a required test, or leaves a checkbox
partially-done does NOT resolve this issue and will be closed.
Context
src/review/rule-gate-eval.ts:162's module header describes two views: one keyed by (project, ruleCode), and a blended counterpart keyed by ruleCode alone. The blended one, computeBlendedRuleGateEval, is fully wired into both src/review/outcomes-wire.ts (auto-tune breaker) and src/services/operator-dashboard.ts. Its sibling computeRuleGateEval -- the finer-grained "which rule is broken on which repo" view -- has zero consumers anywhere except test/unit/rule-gate-eval.test.ts.
Requirements
Add a route (or a new operator-dashboard field, following the existing pattern used for the blended view) that surfaces computeRuleGateEval's per-project rows, so the finer-grained view is actually reachable by an operator.
Deliverables
All of the above Deliverables are required in the same PR unless the deliverable text itself states otherwise.
Test Coverage Requirements
src/** -- 99%+ patch coverage, branch-counted, on the new route/field.
Expected Outcome
An operator can see which specific rule is broken on which specific repo, not only the blended cross-repo view, closing a gap between what's computed and what's surfaced.
Links & Resources
src/review/rule-gate-eval.ts:162
src/review/outcomes-wire.ts
src/services/operator-dashboard.ts
test/unit/rule-gate-eval.test.ts
Context
src/review/rule-gate-eval.ts:162's module header describes two views: one keyed by (project, ruleCode), and a blended counterpart keyed by ruleCode alone. The blended one,computeBlendedRuleGateEval, is fully wired into bothsrc/review/outcomes-wire.ts(auto-tune breaker) andsrc/services/operator-dashboard.ts. Its siblingcomputeRuleGateEval-- the finer-grained "which rule is broken on which repo" view -- has zero consumers anywhere excepttest/unit/rule-gate-eval.test.ts.Requirements
Add a route (or a new operator-dashboard field, following the existing pattern used for the blended view) that surfaces
computeRuleGateEval's per-project rows, so the finer-grained view is actually reachable by an operator.Deliverables
computeRuleGateEval's per-(project, ruleCode) rowsAll of the above Deliverables are required in the same PR unless the deliverable text itself states otherwise.
Test Coverage Requirements
src/**-- 99%+ patch coverage, branch-counted, on the new route/field.Expected Outcome
An operator can see which specific rule is broken on which specific repo, not only the blended cross-repo view, closing a gap between what's computed and what's surfaced.
Links & Resources
src/review/rule-gate-eval.ts:162src/review/outcomes-wire.tssrc/services/operator-dashboard.tstest/unit/rule-gate-eval.test.ts