Repository navigation
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
MaxGhenis
force-pushed
the
w6/receipt-base-events
branch
from
October 15, 2026 20:29
e4dee5e to
167466a
Compare
… grid lists For W4's replay gate (d1344 decision record, agreed 2026-10-15): a candidate gap is known only on positive evidence that the base had the same pair. - The release diff records, per side, each event's grid as that side's verified staging recorded it (DIFF.json base/head `grids`, diff_uk_event_runs.staging_grid): supported_years from the run manifest (staging does not record them), full_supported_grid_complete, inert_measure_years (always present), and staging's missing and unsupported measure-years with staging's meanings. Variant runs only: a legacy-layout run has no grid, so no gap is ever inferred for it. - diff.base_events copies the base side's grids from DIFF.json, with the staging and run manifest digests the diff recorded; diff_sha256 binds it and nothing is re-read. A requalified certified pair's base and candidate share one result root, so a second read from the receipt's checkout would have read the candidate (review of e4dee5e). - Each corpus event carries staging's missing and unsupported lists too. - Schema: additive and optional; a shared measure_years definition with unique pairs and non-empty keys. Tests: staging_grid values and the legacy gate; a property test that base_events copies the grid verbatim with unsupported a subset of missing (a swap fails); an integration test where base and candidate share a root and differ; event_results lists; schema acceptance and refusals. Mutants (swaps in staging_grid and event_results, no variant gate, base_events from the head, no recorded grid) each fail a test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
force-pushed
the
w6/receipt-base-events
branch
from
October 15, 2026 20:40
167466a to
cb8d33f
Compare
This branch was successfully deployed
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.
Stacked on #175. Merge #175 first, then this with a merge commit.
Draft until CI passes and an independent review agrees. The local full suite passes: 1,848 passed, 15 skipped.
W4's replay gate (d1344 decision record, agreed with W4 on 2026-10-15) counts a candidate gap as known only when there is positive evidence that the base had the same pair. Today a receipt can't show that:
full_supported_grid_completecovers both inert and missing pairs, and diff flags can't prove the base's state. This adds the base side's own record.Receipt changes
All additive and optional. Receipts already issued stay valid; the golden fixture is unchanged and still validates.
diff.base_events.<event>— the base namespace's grid record:staging_manifest_sha256andrun_manifest_sha256;supported_years, taken from the base'sRUN_MANIFEST.json, because staging does not record supported years (the receipt's own corpus block already reads them from there);full_supported_grid_complete;inert_measure_years, always present,[]when there are none;missing_measure_yearsandunsupported_measure_years, with staging's names and meanings.How it is read:
STAGING_MANIFEST.jsonandRUN_MANIFEST.json, bound to the digestsDIFF.jsonrecorded for them. The receipt step fails if the files differ.corpus.events.<event>now also carries staging'smissing_measure_yearsandunsupported_measure_years, so W4 matches candidate pairs directly.Schema:
docs/uk_replay/schemas/replay_receipt.v1.jsongains$defs.measure_years(now also used byinert_measure_years),$defs.base_event, the two optional corpus fields and the optionaldiff.base_events.QUALIFICATION_INTERFACE.mddocuments each field and when it is absent.Invariants
base_eventsentry exists exactly when the base staging hasfull_supported_grid_completeand both grid lists (property-tested). Its digests equal thoseDIFF.jsonrecorded.Checks run
diff_summarycarries the record, andevent_resultscarries the lists (legacy-shaped staging gets none);inert_measure_yearsomitted, no candidate lists, and a summary withoutbase_events.ruff format --checkpass.W4 vendors the schema change from this PR's head.
axiom: n/a: replay receipt format; no policy encoding.
🤖 Generated with Claude Code