Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions changelog.d/1123-compile-parity-production-2023.removed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
The UK gate `uk_ledger_compile_parity_production_2023` is retired, with its fixture `parity_fixture_production_2023.json` and its signed-differences receipt (Mar铆a's ruling of 2026-10-13, microcosm#1123 follow-up). The gate compiled every target reference at period 2023 and compared the result with the production calibration surface of 2023. No build reads a 2023 target: the calibration binds the 2025 values. Of the surface's 149 rows, 11 still matched exactly; the other 138 were signed differences (118 changed values, 17 rows with no counterpart, and 3 whose reference no longer resolves at 2023).

The certifier and the full build no longer compile period 2023. Two compile-parity gates remain, both at the 2025 calibration period: `uk_ledger_compile_parity_incumbent_2025` and `uk_ledger_compile_parity_local_incumbent_2025`. The release contract's gate tables and digests in `microcosm-data` move with the spec.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
The UK compile-parity gates receive the compile's own report of unresolved references (microcosm#1123 follow-up). The signed-differences receipts classify a fixture row whose reference no longer resolves as `ledger_absent`, because the tool that writes them holds that report. The release-cut certifier and the full graph kept each period's compiled registry and dropped the report, so the gate read the same row as `fixture_only` and failed it as a changed kind. After the re-pin to Chronicle 942a1fa the production-2023 receipt signed three such rows, so its gate would have blocked the next release cut. That gate is retired in the same change, so the fix now protects the two gates at the 2025 calibration period. Neither of their receipts has a `ledger_absent` row today; the fix is preventive there.

`ledger_compile_parity_gate` takes `unsupported`, and the report travels beside each compiled registry as `uk_ledger_compile_unsupported` and `uk_ledger_compile_local_unsupported`, one entry for every compiled period. Both are required evidence of the gate: a producer that drops the report gets `evidence_absent`, not a verdict. The names of the period's unresolved references are part of the gate's attested evidence, so two runs that differ only in the report do not share an evidence digest. A row signed `fixture_only` whose reference stops resolving fails as a changed kind too.
5 changes: 5 additions & 0 deletions docs/uk-chronicle-feed-repin.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,3 +156,8 @@ the periods their stages were built on (UK and regional population 2023 and 2024
to FY2024-25), so the only spine inputs that move are publisher revisions: the revised mid-2024
population (UK 69,256,274 against 69,281,437, twelve regional totals) and the DfI edition's
rounding of seventeen earlier values (eleven receipts and six journeys).

The comparison with the 2023 production surface is retired (microcosm#1257, Mar铆a's ruling of
2026-10-13). Two compile-parity receipts remain, both at the 2025 calibration period: the national
one against the frozen incumbent registry, and the local one. Earlier entries above that name three
receipts describe the state at their time.
13 changes: 12 additions & 1 deletion packages/microcosm-build/src/microcosm/build/gates.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ def ledger_compile_parity_gate(
fixture: TargetRegistry | Mapping[str, object],
*,
signed_differences: Iterable[Mapping[str, object]] = (),
unsupported: Iterable[Mapping[str, object]] = (),
signed_difference_tolerance: float = 1e-9,
name: str = "ledger_compile_parity",
) -> GateResult:
Expand All @@ -197,6 +198,12 @@ def ledger_compile_parity_gate(
absent or calibration-different on either side. Every unsigned row gap or
target-value difference is still reported by the shared registry parity
comparator.

``unsupported`` is the compile's own report of the references that did not
resolve at this period. A fixture row whose reference is on it is
``ledger_absent``, as the signed-differences resource classifies it. Without
the report the same row reads as ``fixture_only``, and a signed
``ledger_absent`` row fails as a changed kind.
"""

actual = _ledger_compile_value_registry(
Expand All @@ -207,7 +214,10 @@ def ledger_compile_parity_gate(
)
signed_rows = tuple(signed_differences)
signed_keys = _signed_difference_keys(signed_rows)
live_signed_report = ledger_compile_parity_signed_differences(actual, expected)
unsupported_rows = tuple(unsupported)
live_signed_report = ledger_compile_parity_signed_differences(
actual, expected, unsupported=unsupported_rows
)
signed_failures, checked_signed = _signed_difference_check_failures(
signed_rows,
live_signed_report["differences"],
Expand All @@ -232,6 +242,7 @@ def ledger_compile_parity_gate(
"signed_difference_count": len(signed_keys),
"signed_difference_tolerance": signed_difference_tolerance,
"signed_differences": checked_signed,
"unsupported_reference_count": len(unsupported_rows),
},
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,21 +237,11 @@
"kind": "legacy_json",
"schema_id": "legacy_json"
},
{
"path": "ledger_compile_parity_production_2023_signed_differences.json",
"kind": "legacy_json",
"schema_id": "legacy_json"
},
{
"path": "national_staging_build_record.json",
"kind": "legacy_json",
"schema_id": "legacy_json"
},
{
"path": "parity_fixture_production_2023.json",
"kind": "legacy_json",
"schema_id": "legacy_json"
},
{
"path": "qrf_tail_reviewed_exclusions.json",
"kind": "legacy_json",
Expand Down
12 changes: 0 additions & 12 deletions packages/microcosm-build/src/microcosm/build/uk/gates.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,6 @@
"parameters": {},
"notes": "Frameless preflight over the materialized stage names: every family the coverage manifest marks required_at_build must have its build stage scheduled before any stage runs."
},
{
"id": "uk_ledger_compile_parity_production_2023",
"gate": "ledger_compile_parity",
"phase": "preflight",
"criticality": "release_blocking",
"parameters": {
"fixture_resource": "parity_fixture_production_2023.json",
"signed_differences_resource": "ledger_compile_parity_production_2023_signed_differences.json",
"target_period": 2023
},
"notes": "Ledger-compiled UK targets at period 2023 compared with the certified production 2023 calibration surface fixture. Signed differences are committed for adjudication rather than hidden."
},
{
"id": "uk_ledger_compile_parity_incumbent_2025",
"gate": "ledger_compile_parity",
Expand Down
Loading
Loading