Problem
src/review/auto-tune.ts's tuning advisor (computeTuningRecommendations) already computes what a loosening recommendation would be (e.g. lowering a confidence floor, raising a scope cap) — the code just refuses to ever apply one. OverridePayload's own doc comment states it plainly: "a loosening recommendation never carries a payload (autonomous loosening is the regression risk the loop exists to avoid)." #8082's Pareto-floor backtest is exactly the missing risk-measurement that comment names as the reason loosening was never allowed to be automatic. Once a proposed loosening change can be backtested against real historical ground truth and shown to regress nothing, the original justification for refusing it no longer straightforwardly applies.
Area
src/review/auto-tune.ts (computeTuningRecommendations, OverridePayload, the apply path) + #8082's calibration/backtest primitives.
Proposal
Deliverables
Deliberately none yet — decision-and-design only until #8105 resolves and the bigger step is explicitly approved.
Resources
Boundaries
No autonomous config change of any kind happens as part of this epic without an explicit, later, maintainer-approved design — this is tracking the DIRECTION, not committing to the mechanism yet.
maintainer-only — a significant trust/safety-critical architecture direction, not a build task for contributors.
Problem
src/review/auto-tune.ts's tuning advisor (computeTuningRecommendations) already computes what a loosening recommendation would be (e.g. lowering a confidence floor, raising a scope cap) — the code just refuses to ever apply one.OverridePayload's own doc comment states it plainly: "a loosening recommendation never carries a payload (autonomous loosening is the regression risk the loop exists to avoid)." #8082's Pareto-floor backtest is exactly the missing risk-measurement that comment names as the reason loosening was never allowed to be automatic. Once a proposed loosening change can be backtested against real historical ground truth and shown to regress nothing, the original justification for refusing it no longer straightforwardly applies.Area
src/review/auto-tune.ts(computeTuningRecommendations,OverridePayload, the apply path) + #8082's calibration/backtest primitives.Proposal
OverridePayloadwhen — and only when — a backtest (calibration: pure BacktestCase corpus builder from RuleFiredEvent/HumanOverrideEvent pairs #8083-calibration: render a backtest score/comparison report as Markdown #8088's primitives) shows the proposed change clears the Pareto floor (calibration: Pareto-floor comparator between two BacktestScoreReports #8086) against real historical ground truth (calibration: wire linked_issue_scope_mismatch into the shared signal-tracking module (fired + reversal) #8101/calibration: wire recordRuleFired/recordHumanOverride for the remaining isConfiguredGateBlocker codes (excludes linked_issue_scope_mismatch, covered by #8101) #8104's fired+reversed data), with the held-out split (calibration: deterministic seeded held-out/visible split of the backtest corpus #8087) guarding against overfitting to visible incidents.LINKED_ISSUE_SATISFACTION_CONFIDENCE_FLOORspecifically — calibration: wire linked_issue_scope_mismatch into the shared signal-tracking module (fired + reversal) #8101 already gives it real ground truth, and it's a single scalar value, the simplest possible loosening target to backtest against.Deliverables
Deliberately none yet — decision-and-design only until #8105 resolves and the bigger step is explicitly approved.
Resources
src/review/auto-tune.ts(computeTuningRecommendations,OverridePayload— read the "never carries a payload" comment in full before starting)Boundaries
No autonomous config change of any kind happens as part of this epic without an explicit, later, maintainer-approved design — this is tracking the DIRECTION, not committing to the mechanism yet.
maintainer-only — a significant trust/safety-critical architecture direction, not a build task for contributors.