Repository navigation
Conversation
Extract the UK national assembler's two manifest documents into uk_national_release_manifests, a pure function the assembler and the new golden generator both call (byte-for-byte unchanged output, checked against the previous assembler on the green fixture). tools/generate_release_contract_fixtures.py writes version 1 of the release contract's golden fixtures, following the staging-fixture pattern: the UK national line's build and release manifests (C1), an inventory of the files and certification fields the contract requires of that line, the two pointer payloads the publisher writes and a registry snapshot (C5), with SHA256SUMS. --check regenerates and compares bytes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs/release-contract.md states the ARCH-1 end state Max ruled on 2026-10-15 (d1160), what is served today, and contracts C1 to C5: what the code enforces now, cited to the function that does it, and what it will enforce from 2026-11-06. It says how C1 keys by declared country instead of release-id strings, carries microcosm#378's parity rule, documents the golden fixtures, and records the retire list's state. It replaces the branch-only docs/us-uk-release-path.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The data shard holds every fixture byte to SHA256SUMS and proves each file is what the contract's own code accepts or writes: the C1 manifests pass every release-contract check except the two files the fixture omits on purpose, the loader selects the national artifact from them through the registry, the inventory equals the live constants, both pointers equal the publisher's payloads and read back, and the registry snapshot equals the registry. test_release_contract_keying.py turns the C1 keying gap into executable statements, including that the same release bytes validate under an NZ id and fail under a US id. The build shard checks the generator reproduces the fixtures, and a property test holds uk_national_release_manifests to the contract for every valid input. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
format_uk_release_id, UKReleaseIdentity and apply_uk_release_identity minted populace-uk-<year>-<tier>-k<N> ids and had no caller outside their own tests and the uk_runtime re-export. The 10-09 systems report listed the two functions as retire-now; UKReleaseIdentity goes with them because it is built on format_uk_release_id and is equally unused. New releases take their id from C1's declared identity (docs/release-contract.md). The module keeps the national and dense line ids and the tier vocabulary, which the release assemblers and input-coverage checks import. The contract still validates existing exact-k ids. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 15, 2026
SLD per-district local layer: 2024-vintage membership, doctrine solve, validated sidecar (#625)
#642
Closed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add changelog fragments for the contract, its fixtures and the retired UK id-minting helpers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
October 15, 2026 10:16
- The C1 golden's gates now carry each certification part's status census
({"passed": N}), the shape the certifier writes and the contract requires;
the property strategy draws the same shape, and a new assembler test holds
a real assembly's manifests and directory to the golden key for key.
- uk_national_release_manifests copies runtime instead of aliasing it, and
the property compares serialized bytes so key order is covered.
- docs/release-contract.md: correct the US Logbook writers; qualify the
model-package checks by id; describe the source-enrichment compatibility
rule and make C2 v1 generalize it (Core pinned exactly, claims bounded,
PEP 440 equality, first matching claim); grandfather by published
revision, not id; route every id-keyed check and the pointer readers
through the declared country; keep remote staging delivery required with a
re-delivery path and move the gate into prepare_release; ship the staging
terminal document and Logbook row in the release directory; smaller
wording fixes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Opus 5.5 review of c2d50d8: REQUEST_CHANGES (0 blockers, 3 majors, 16 minors and nits). All 19 are addressed at 47389ec. Majors:
Design points, now settled in the doc:
Also: Local runs: 67 tests pass across the touched files, and The independent GPT-6.1 Sol review is re-queued on 47389ec (Subfleet job |
The live-tree guard (test_no_incumbent_data_package_references_in_live_tree) refuses the retired package's full name outside frozen references; the contract document is live text, not a frozen reference. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 of 12 tasks
Brings in main at 4a36edc. One conflict, in tools/assemble_uk_release_dir.py: main's SPI Public Use Tape marker (49c4bcb) edited the manifest construction this branch moves into uk_national_release_manifests. The pure function now takes spi_marker and writes main's two additions, the microdata entry's spi_public_use_tape_dependent flag and licensed_data, in main's key order; _stage_and_finalize passes the marker through. Two main changes reach the release-contract fixtures and tests: - The SPI marker changes what the national assembler writes, so the generator passes a marker built by uk_spi_public_use_tape_marker from one synthetic stage that reads the tape, and the C1 release_manifest.json golden gains the flag and licensed_data. - microcosm#823 (003dbd0) made the national line the UK 2025 default load: its registry key is ("uk", 2025, "compact") now, not ("uk", 2025, "national"). The C5 registry.json snapshot is regenerated, and the three tests that looked the spec up by the old key use DEFAULT_VARIANT, as main's own assembler test does. The Hypothesis property draws the marker and checks that the manifest restates it. The golden-shape test no longer treats a list's length as shape, because the golden's marker names one stage and an assembly from the packaged spec names every stage that reads the tape. inventory.json, build_manifest.json and both pointer payloads regenerate byte for byte. same_edit.py flags no identical edit on both sides. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… findings docs/release-contract.md now reads each "today" statement from origin/main 4a36edc and states each version-1 requirement as the plan's, with a dated column for how far each milestone had got. When refusal starts stays Max's call. Sol's review of fda37a7: - 1: rules 2 and 3 tighten the validator for calibration releases; rule 4 tightens both loaders. - 2: C2 v1 rule 6 keeps today's rule for schema-1 manifests in both loaders. - 3: the certification needs every scoped gate passed, shippable: true and the full-spec digests; one HMAC covers the whole document. - 4: the failed-diagnostics exception, in the validator and the pointers. - 5: an exact pin compares Version(V) == Version(built). - 6: present-tense M3 wording in agent-guide.md, README.md, both changelog fragments, release_identity.py and two test docstrings. - 7: the re-delivery command writes staging_redelivery.json and never rewrites the build manifest. - 8: the producer copies its Logbook row when record_build_attempt returns. - 9: the dense line's signed verdict is uk_local_gates.json; whether it composes a certification stays open. - 10: the publish order names publish_cli's gates and require_parent_publication. Main moved under the document: the compatibility_recertification release type (#1366), the emitter behind microcosm-emitter-interface with the staging hand-over (#1410), and the UK registry flip (#1432). The document covers each and records one new open item: the recertification lane writes two entries that C2 v1 rules 2 and 3, as written, refuse. The retire list's #873 row records that #873 closed unmerged later on 2026-10-15. The prose uses active voice throughout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been 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.
Milestone M0 of the ARCH-1 end state Max ruled on 2026-10-15 (cos d1160). It puts the release contract on paper, freezes C1 and C5 as golden fixtures, and clears the 10-09 systems report's retire-now items that are still open. It turns no refusal on. Enforcement starts 2026-11-06 per the ruling; nothing here changes what publishes or any published number.
What changes
docs/release-contract.md(new). It covers:required_release_files,_expected_model_package,line_for_release_id);It replaces the branch-only
us-uk-release-path.md. The emitter section follows what merged in Delegate local telemetry and graph publication to microcosm-emitter (deferred) #1153 (externalmicrocosm-emitter), as d1162's note records.tools/assemble_uk_release_dir.py. The two manifest dicts move intouk_national_release_manifests, a pure function. Output is byte-for-byte unchanged: I ran the old and new assembler on the green fixture with a fixed clock, and the manifests were identical in key order and the evidence files identical in bytes, apart from the NPZ digest, which changes on every run because zip entries carry timestamps.tools/generate_release_contract_fixtures.pywrites the golden fixtures underpackages/microcosm-data/tests/fixtures/release_contract/v1/, following the staging-fixture pattern:build_manifest.jsonandrelease_manifest.json, written by the assembler's own function, plusinventory.json, read from the contract's constants (required files, the files shipped, the certification's kind, schema, fields, parts and signing-key variable).latest.jsonandlatest-national.json, serialized exactly aspublish_releaseuploads them, andregistry.json.SHA256SUMSand a--checkmode.The fixtures carry no gate report or signed certification, on purpose: those embed the live UK gate-spec digests.
uk/gates.jsonchanged 94 times since 2026-09-01, so byte-frozen copies would churn almost daily.Retired:
format_uk_release_id,UKReleaseIdentityandapply_uk_release_identity. None had a caller outside its own tests and the re-export, in this repository or in policyengine.py, microcosm-dynamics or the benchmark, runs or emitter repositories. The line ids and tier vocabulary stay, and the contract still validates existing exact-k ids.Changelog fragments, and pointers from README.md and docs/agent-guide.md.
Invariants the tests hold
generate_release_contract_fixtures.py --checkreproduces every committed byte. A change to the assembler's manifests, the contract's required files or certification fields, the pointer payloads or the registry fails it until the fixtures are regenerated. Mutation checks: rewording the manifest description failed--check, and renaming a registry file failed the C5 test.uk_national_release_manifestsoutput:_check_build_manifest,_check_release_manifestand the cross-manifest check;validate_release_diron the golden UK directory raises exactly two failures, the two files the fixture omits (calibration_diagnostics.json,release_certification.json).latest_pointer_payload/line_pointer_payloadbyte for byte and read back throughlatest_release/latest_line_release. The line pointer names the C1 release at its cut tag.registry.jsonequalsREGISTRY.test_release_contract_keying.py): today's id-string keying, which M3 flips deliberately. One test shows the same release bytes validate undermicrocosm-nz-2025-nationaland fail under apopulace-us-id.Retire list (checked 2026-10-15)
run_outcome) and Keep US staging telemetry on for every build #1082 (belongs in Emit staging telemetry for US exact-K builds #933).tools/build_uk_rowwise_dataset.py: kept. The report's premise fails, because the graph driver takes--candidate-clone-countsonly with--dry-run, and UK-3 is undecided.Review
20261015-061558-m0-1285-review). The Codex lanes reopen at about 14:53Z.🤖 Generated with Claude Code