Skip to content

Commit d57f27a

Browse files
authored
Merge pull request #165 from LuminLynx/claude/gate-exempt-preserve-splits
Exempt faithful preserve-by-default splits from the pre-merge gate
2 parents 7f658c8 + 446abbc commit d57f27a

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

docs/REGRESSION_GATE.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ This capability asymmetry has a hard consequence for gate triage:
2727

2828
This principle was added 2026-05-21 after the c2-split batch surfaced the asymmetry: several early gate realignments flipped Opus-authored values to match Sonnet's stricter/looser reads, which was backwards.
2929

30+
## When the pre-merge gate is required vs. optional
31+
32+
`RUBRIC_AUDIT.md` § Decisions locked originally required a full pre-merge gate run for *every* rubric change. The grader/gold-standard principle above narrows that:
33+
34+
- **Gate REQUIRED** for any change that *realigns* expected values, or any new authoring — i.e. anything where the grader's output could change a recorded value or where there's no locked value to fall back on.
35+
- **Gate OPTIONAL (informational only)** for a *faithful preserve-by-default split* — a structural c2-split that only redistributes a locked `old-c2=T` into `c2=T` + `c3=T` (and `old-c2=F` into a fair-read name/mechanism judgment), with **zero realignments**. These don't change any locked value's meaning, and since we don't act on grader output, a gate run can't change a single expected value — it would only produce a documented snapshot of Sonnet calibration gaps. Local validators (lint, `ingest_units --check`, `run_regression_set --check`, pytest) plus the faithful decomposition are sufficient to merge.
36+
37+
Rationale: the original "always gate" rule predated this principle; its purpose was to catch grader miscalibration we'd *act on*. When we preserve by default, that purpose doesn't apply. Running the gate remains welcome as an informational snapshot, just not a merge gate. (Recorded 2026-05-21, during the MEDIUM-batch rollout, to avoid silent process drift.)
38+
3039
## Procedure (operator)
3140

3241
For any PR that edits `content/units/**` (rubric text) or `content/regression-sets/**`:

docs/RUBRIC_AUDIT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
## Decisions locked (2026-05-20)
99

1010
- **Approach:** SPLIT. Every flagged criterion in this audit is split into two criteria. Rubrics for Units 2–9 grow from 3 → 4 criteria. Units 10–13 use SPLIT as well (Option A — new criterion) rather than the Option B "move meta-claim into existing c3" path, for cross-unit consistency.
11-
- **Regression backfill:** every unit's regression set is re-run end-to-end before its PR merges. No spot-checks. Operator procedure in `docs/REGRESSION_GATE.md`.
11+
- **Regression backfill:** every unit's regression set is re-run end-to-end before its PR merges. No spot-checks. Operator procedure in `docs/REGRESSION_GATE.md`. *(Narrowed 2026-05-21: a faithful preserve-by-default split with zero realignments is exempt from the pre-merge gate — see `docs/REGRESSION_GATE.md` § When the pre-merge gate is required vs. optional. The gate stays required for any change that realigns expected values.)*
1212
- **PR cadence:** one PR per unit (pilot first, then batched if the pilot is clean). Each PR includes the rubric edit, `ingest_units` re-run, regression-set updates, and a regression-run report.
1313
- **C1 / c3 follow-up:** deferred. Separate audit doc after this sweep lands, not folded into per-unit PRs.
1414

0 commit comments

Comments
 (0)