Skip to content

Regenerate series catalog to match same-commit observations - #174

Merged
MaxGhenis merged 2 commits into
codex/thesis-ledger-factsfrom
fix/catalog-observation-coherence
Aug 18, 2026
Merged

Regenerate series catalog to match same-commit observations#174
MaxGhenis merged 2 commits into
codex/thesis-ledger-factsfrom
fix/catalog-observation-coherence

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

The witnessed append path appends observations without regenerating the catalog, so the 2026-08-14 and 2026-08-15 appends left observations_sha256/observation_rows at the 2026-08-13 state. Thesis's catalog-v3 pin requires same-commit coherence, so its resolve loop has failed daily since 8/14 (thesis #190/#193/#196/#197).

Pure regeneration via scripts/build_series_catalog.py: 191 rows, 219 series, minted=0, superseded=0. Per-series last_observed_period/observation_count advance for exactly the two appended DOL weekly-claims prints; --check passes on the result.

Thesis-side follow-up (appends regenerate the catalog in the same proposal commit, so coherence can't drift again) is being prepared separately.

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits August 17, 2026 20:38
The witnessed append path (thesis resolve_pending.py) appends
observations without regenerating this catalog, so the two appends of
2026-08-14 and 2026-08-15 (DOL weekly claims prints for weeks
2026-08-01 and 2026-08-08) left observations_sha256/observation_rows
committed at the 2026-08-13 state. Thesis's catalog-v3 pin requires
same-commit coherence, so its resolve loop has refused to advance the
ledger pin daily since 2026-08-14 (thesis issues #190/#193/#196/#197).

Pure regeneration via scripts/build_series_catalog.py: 191 rows, 219
series, minted=0, superseded=0; per-series last_observed_period and
observation_count advance for exactly the two appended prints. The
thesis-side fix making appends regenerate the catalog in the same
proposal commit follows separately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The regenerated catalog picks up the 2026-08-08 weekly-claims print's
stripped alias segment; the current-catalog test pins the full list and
needs the new entry. Catalog test file: 155 passed locally.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis merged commit cf0b3a7 into codex/thesis-ledger-facts Aug 18, 2026
8 checks passed
MaxGhenis added a commit to ThesisInstitute/thesis that referenced this pull request Aug 18, 2026
…commit

Chronicle's catalog v3 requires same-commit coherence: series_catalog.json
must carry the digest/row count of the same-commit observations file, and
per-series first/last/count derive from it. The witnessed append path
published observation appends without regenerating the catalog, so every
append broke the invariant pin_ledger enforces; unrelated chronicle mint
PRs kept re-cohering the branch until the 8/14 and 8/15 appends left it
broken and the resolve loop failed daily (#190/#193/#196/#197; data
repair: PolicyEngine/chronicle#174).

_prepare_release_files now writes the candidate ledger into the staged
base tree and runs the STAGED tree's own scripts/build_series_catalog.py
(same-commit generator, invoked with the current interpreter), refusing
the proposal when the generator is missing or fails, when it mutates the
UUID registry (appends must never mint or supersede identities — byte
compare), when it writes no catalog, or when the result fails the exact
same-commit predicate pin_ledger applies (_validate_catalog_binding). The
regenerated catalog ships in the proposal commit alongside the ledger and
its four-sibling release. _fetch_repository_tree stages the generator and
its inputs via the pinned CATALOG_REGENERATION_INPUTS tuple, and the
resolver workflow installs receipt==0.5.1 (the staged generator imports
it via check_thesis_facts_append; pinned to chronicle's own pin).

Tests: success-path regeneration assertions, generator-failure and
mint-refusal refusals, legacy pre-genesis path unchanged, and a
fixture-fidelity pin asserting the fixtures stage only files the real
fetch provides. Full suite: 2123 passed, 4 skipped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant