Repository navigation
M4: accepted baselines change only by a classified, approved, non-destructive record - #70
Merged
fd-starscream-bot merged 3 commits intoSep 27, 2026
Conversation
regression/baselines/lineages.json establishes the accepted Windows baseline as lineage windows-retail, version v1 (the current Georgia and Lebanon baselines, unchanged, stored under regression/baselines/ windows-retail/v1/; regression/windows/ is its working copy). Versions are never overwritten or removed; earlier git history is not reconstructed. tools/baseline-governance.py: - propose: a red pack report becomes a change record in regression/changes/ with every failed claim and check UNCLASSIFIED; - each delta is classified, with evidence, as one of AGENT.md's four classes; no other class is accepted; - regression: REGRESSION - REJECTED, never advances a baseline; - approved-defect-correction / intentional-semantic-change: advance only with a formal APPROVED GitHub review by fd-starscream-bot of a commit holding this exact record (bound by its digest); adopt adds a version, keeps the old one and materialises the new current version; - expected-input-world-variation: never replaces the equivalent-input baseline; approved, it founds a separate lineage; - check: lineages, versions, working copies and records consistent. regression/changes/2026-09-27-s3-mutant.json classifies every failure of #69's S3 mutant report as a regression (evidence: #68's attribution, #62's S3 decision); adopt refuses it and windows-retail v1 stays current. regression/fixtures/governance/ (test only, not an EECH baseline) and tools/baseline-governance-selftest.py exercise an approved v1 -> v2 transition with a local test approver, and detect or refuse ten broken variants (11 of 11 as expected). tools/regress-windows.ps1 refuses -Update and no longer writes a missing baseline. tools/regression-pack.py checks the lineage, runs the fixture self-test, names the current accepted baseline, and gives each failure its disposition without turning it into a pass. regression/pack.json records the 15 checkers and runners. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C64rJFJLY8BTJbC1QimZDK
docs/governance/REVIEW.md gains "Baseline changes": propose, classify every delta with evidence in AGENT.md's four classes, review, then adopt with a verified approval reference; versions are never overwritten or removed; a disposition never makes a failing check pass. BASELINE_RECORD.md points its "Differences and acceptance" to the checked change records for the campaign baselines, and regression/README.md replaces -Update with the governed path. tools/baseline-governance.py reads a PR's reviews as one UTF-8 JSON line each (gh api --jq): on Windows the console code page failed on a review body's UTF-8 text. Exercised read-only on #69's real reviews. regression/pack.json records its new hash. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C64rJFJLY8BTJbC1QimZDK
docs/m4-baseline-governance.md answers: when accepted behaviour changes, can we tell why, prevent an unapproved re-baseline, preserve what was accepted, and identify the authoritative baseline? Yes, for the Windows campaign baselines: windows-retail v1 is current and unchanged. reference/m4-baseline-governance/, at 61b53bd: - s3-regression.txt: #69's red S3 report proposed (all UNCLASSIFIED), classified as REGRESSION - REJECTED (all 23 failures), adopt refused, lineage and working baselines byte-unchanged; - update-refused.txt: regress-windows.ps1 -Update refused; - fixture-selftest.txt: the test-only approved v1 -> v2 transition and ten broken variants, 11 of 11 as expected; - s3-mutant/: the full pack on the mutant: behaviour identical to #69, every failure with its disposition, verdict FAIL - CLASSIFIED AS REGRESSION - REJECTED, exit 1; - accepted/: the full pack on the accepted build: PASS, 40 checks, against windows-retail v1; - check.txt: lineages and records consistent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C64rJFJLY8BTJbC1QimZDK
8 tasks done
fd-starscream-bot
approved these changes
Sep 27, 2026
fd-starscream-bot
left a comment
There was a problem hiding this comment.
Approved.
This slice establishes the baseline-change governance M4 needed.
The important properties are all present and evidenced:
- the authoritative Windows baseline is explicit (
windows-retail v1) and unchanged; - the old
-Updatepath cannot silently create or overwrite an accepted baseline; - every red-pack failure must be classified with evidence using the programme's four existing classes;
- classification remains separate from behavioural PASS/FAIL;
- regressions can never advance a lineage;
- defect corrections and intentional semantic changes require a formal fd-starscream-bot approval bound to the exact reviewed proposal digest;
- expected input/world variation cannot replace the equivalent-input lineage;
- adoption preserves superseded versions and the retained tier detects removal, tampering or working-copy overwrite;
- the fixture proves the approval/adoption mechanics without pretending to be campaign evidence;
- the real S3 mutant remains a rejected regression and leaves windows-retail v1 byte-for-byte unchanged.
The approval verifier's real GitHub reader has been exercised read-only, while the first real baseline advancement remains correctly identified as future live evidence rather than claimed here.
The runs were regenerated after the UTF-8 reader change at 61b53bd, and the final commit adds only retained evidence/documentation.
No further changes requested.
fd-starscream-bot
merged commit Sep 27, 2026
a02d489
into
claude/eech-campaign-native-spike-tjkj6g
0 of 5 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task and scope
Epic / milestone: #31, M4 — Establish regression confidence.
Base:
claude/eech-campaign-native-spike-tjkj6gate0801614(#69 merged).Candidate:
a810dd29. The runs are at61b53bde; the later commit adds only the record and evidence.The question: when accepted behaviour changes, can we tell why it changed, prevent an unapproved re-baseline, preserve what was previously accepted, and identify exactly which baseline is authoritative now?
Answer: yes, for the Windows campaign baselines.
UNCLASSIFIED.regress-windows.ps1 -Updateis refused, and the runner no longer writes a missing baseline;regressionnever advances a baseline;windows-retailv1: today's accepted Georgia and Lebanon baselines, unchanged. Every pack report names it.The record is
eech-campaign/docs/m4-baseline-governance.md. The procedure is in the existingdocs/governance/REVIEW.md, "Baseline changes".Non-goals, as specified:
Changes
regression/baselines/lineages.json: lineagewindows-retail.regression/windows/), the versions, and which one is current.e0801614, stored byte-identically inregression/baselines/windows-retail/v1/, with its sources ([Epic][M1] Prepare a credible EECH_DC campaign module candidate #19, M1: remove S2, restore the original EECH supplier rule; new Lebanon baseline (#19) #63).regression/changes/<id>.json: the change record. It carries:defect(the corrected defect and the retired behaviour),semantic_changewithclaim_changes, andvariation(what changed, and a new lineage);tools/baseline-governance.py:propose,status,adopt,check.{pr, review_id, commit}, verified on GitHub. The review must be by fd-starscream-bot, APPROVED, of that commit, and not withdrawn by a later request for changes.approved-defect-correctionandintentional-semantic-changeadd a version, and the superseded one is kept. An approvedexpected-input-world-variationfounds a separate lineage.tools/regress-windows.ps1:-Updatethrows with the procedure, and a missing baseline is a FAIL, never written.tools/regression-pack.py:governance.lineageandgovernance.fixture;FAIL - CLASSIFIED AS REGRESSION - REJECTED, still exits 1.regression/pack.json: records 15 checkers and runners (the two governance tools added;regress-windows.ps1andregression-pack.pyrehashed).REVIEW.mdgains "Baseline changes";BASELINE_RECORD.mdpoints its classification section to the checked records;regression/README.mdreplaces-Update.Evidence (local Windows 11, 2026-09-27; retained in
eech-campaign/reference/m4-baseline-governance/)s3-regression.txt)proposemakes 14 deltas covering 14 failed claims and 9 failed checks, allUNCLASSIFIED.regression/changes/2026-09-27-s3-mutant.jsonclassifies all 23 asregression(evidence: #68's one-patch attribution, #62's S3 decision,difference.txt,chains.json), givingCLASSIFIED AS REGRESSION - REJECTED.adoptis refused, exit 1.lineages.jsonandregression/windows/*.jsonare byte-unchanged.s3-mutant/report.md)61b53bde: the same claim statuses and check results as #69, now each with its disposition. VerdictFAIL - CLASSIFIED AS REGRESSION - REJECTED (change record ...), exit 1. Accepted baselinewindows-retail v1 (... unchanged).accepted/report.md)governance.lineageandgovernance.fixture. Judged againstwindows-retail v1.-Update(update-refused.txt)fixture-selftest.txt)regression/fixtures/governance/: not an EECH baseline; approvals come from a local test approver, never fd-starscream-bot. The approved path:UNCLASSIFIED, thenAPPROVAL REQUIRED(adopt refused), then approved at a commit, thenAPPROVED, then adopt: v2 current, v1 kept, and the lineage printed. The old report then readsagainst v1: approved intentional-semantic-change; v2 is the accepted baseline. Ten broken variants are detected or refused (no classification, no approval, v1 removed, record tampered after approval, wrong reviewer, withdrawn approval, overwritten working copy, invented class, regression, variation). 11 of 11 as expected.61b53bde).Known gaps
pack.json.Review and handover
Next bounded action: the lead's review. After that, the remaining M4 work, possibly the M4 acceptance record, as the lead chooses.
🤖 Generated with Claude Code
https://claude.ai/code/session_01C64rJFJLY8BTJbC1QimZDK