Repository navigation
D-TGB-4: thought-git receipt and deterministic replay (lab, thought-git-probe) - #1674
Conversation
Receipt carries base ref, program id + inputs, seed, exec config, the live slot (provenance only), a fold over the values read, provenance roots and a fold over the writes. Replay recomputes from the receipt alone and refuses on missing seed, changed config, unknown base, changed sources or a different output. Landed receipts live in a metadata table keyed by (dataset, version, thought), staged then sealed; replay accepts only a sealed, untorn row whose data version exists. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fbZ92dFKQ5BJHrA3YcH9A
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fbZ92dFKQ5BJHrA3YcH9A
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fbZ92dFKQ5BJHrA3YcH9A
…elled roots are caught Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fbZ92dFKQ5BJHrA3YcH9A
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fbZ92dFKQ5BJHrA3YcH9A
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@codex review Generated by Claude Code |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3496242fc7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The metadata seal folded only ReceiptIdentity, which left out the outcome. A sealed row changed from Commit to Prune would still pass landed() and replay_landed(), and next_version would then drop the writes while every fold still matched. The outcome is now part of ReceiptIdentity and of the seal, and the partial-write test adds a torn case that mutates it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fbZ92dFKQ5BJHrA3YcH9A
|
@codex review Generated by Claude Code |
STATUS_BOARD D-TGB-4 row to Shipped, PR_ARC_INVENTORY and LATEST_STATE entries for #1674. Also regenerates the entries index, whose count went stale when #1674 and #1675 merged one after the other (421 -> 422). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fbZ92dFKQ5BJHrA3YcH9A
Board: D-TGB-4 shipped (#1674)
D-TGB-4 (EXO-58, under EXO-44). A thought's receipt holds what is needed to recompute its writes after its live slot is gone, and replay reproduces those writes from the receipt alone.
This is lab only, inside the workspace-excluded
crates/thought-git-probe. It does not touch the contract,cycle_driver,LanceCycleWriter, the supervisor or the CE64 bits. Claim: EXO-50session_019fbZ92dFKQ5BJHrA3YcH9A/003, acknowledged insession_01G22yT6htkcdyXsihxxXdrg/036.What changes
src/receipt.rs:Receiptholds:ProgramIdplus template version;ProgramInputsas two lanes, sources and targets, read at the same position;ExecConfig;replay(receipt, store, config)takes no slot pool. It refuses on:The writes themselves are not stored in the receipt.
replay_live, andcapture/stage, check that the slot still holds the same thought under the same generation. A stale, reused or ABA slot fails closed.MetadataTableis keyed by (dataset, data version, thought id), separate from the data version it describes.stagerefuses before the data version is sealed (data first, then metadata) and on a key naming another thought.sealwrites a fold over every field, last.landed/replay_landedaccept only a sealed row whose seal still matches and whose data version exists.Replayedreports the receipt's roots as inherited, with zero independent roots, so a replay cannot earn new certification.BaseRefandVersionStoreare probe-local stand-ins for D-CPG'sDurableRef(no contract type yet) and for Lance.Also in this PR:
tests/receipt.rs: 10 falsifier tests..github/workflows/thought-git-probe.yml: until now no workflow ran this crate.entries/2026-10-21-d-tgb-4-receipt-replay.md, the STATUS_BOARD D-TGB-4 row (In PR), the PREREGISTRATION row, and the regenerated entries index.Falsifiers and disables
Each disable was applied to the source and the suite rerun. Each one turned the named test red; the tests were green again after restore.
next_version, exactly one contradiction)One disable first came back green: test 8's prior horizon already held the receipt's roots, so mislabelling them as independent could not look new. The prior now predates them, and the disable turns both tests 7 and 8 red.
Local results:
cargo test: 36 passed (26 existing + 10 new).cargo clippy --all-targets -- -D warnings: clean.cargo fmt --check: clean.Measured and not measured
Measured: the 10 tests and 10 disables, on the fixture address space (12 rows × 4 lanes) with one program (
DERIVE). No timing was taken.Not measured or not built:
DERIVE.The folds are 64-bit witnesses, not proofs.
Caveat: replay returns a
Thoughtwhosewritesfield is the fixture's existingVec<(Cell, u64)>, carried over from D-TGB-0. The comparisons themselves run on folds. Whether a reference may hold tuples internally is still an open operator question (/036item 1).Open
DurableRefinlance-graph-contractat D-TGB-7. This PR does not.Generated by Claude Code