You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
R2-1/R2-2: t27c silicon writes the receipt artifact (device record, IDCODE, verdict word, seal hash, seeds, toolchain) #7041
Epic #6655, Round-2 requirements R2-1 and R2-2 (recorded in the epic body by the owner's decision of 2026-10-06).
What
t27c silicon proves a spec on the die and prints a transcript, but writes no artifact: the durable record of a verified run is a comment pasted by hand. R2-1 fixes that. The contract already landed as specs/verified/receipt.t27 (#6943): six fields, fixed order, first_missing fails closed, verdict words pinned to verdict.t27 (PASS=0, FAIL=1).
The tool half:
R2-1 — receipt file. Every hardware t27c silicon run (not --skip-hardware) writes .trinity/receipts/<spec-stem>.json into the repo tree with exactly the six contract fields:
device_record (busdev + full IDCODE, read live from --detect the way t27c boards reads it -- the IDCODE in a document is not evidence, 2026-08-14)
full_idcode (the whole idcode 0x03636093 line from the loader/detect log, not a re-typed constant)
verdict_word (the word the B2 stage selected by design id, as a number; a run with no verdict word writes no receipt)
seal_hash (t27c seal --verify output for the spec, or null + receipt_first_missing never lies)
seeds (pnr_seed when given, else [])
toolchain (R2-2)
R2-2 — toolchain identity. The receipt names the binary that made it: the t27c git commit from git rev-parse --short HEAD at build time (via env!), so a receipt answers "which compiler made this claim". Producer identity is verbatim, never normalized (producer_matches).
The receipt is append-only history per run: one file per run record (R2-4 consumes these), file name <stem>-<UTC-timestamp>-<pid>.json.
Why foreign code
The silicon command is Rust (bootstrap/src/service.rs). Standing owner rule 2026-10-06: label it yourself, do the foreign part. PR carries owner-approved-foreign; exceptions entry cites this issue.
Tests
Unit tests over the pure writers: receipt JSON has the six fields in contract order; a dry-run (--skip-hardware) writes nothing; a FAIL verdict word still writes a receipt (the receipt records, it does not judge); parsing of the loader log's IDCODE line.
Activity
fix(test): serde_json Map keys are &String, map to &str (Refs #7041)
fix(receipt): emit the six contract fields in contract order, not alp…
fix(receipt): Serialize is not dyn-compatible, value serializer is a …
silicon: every hardware run writes a receipt artifact (R2-1/R2-2)
fix(test): serde_json Map keys are &String, map to &str (Refs #7041)
fix(receipt): emit the six contract fields in contract order, not alp…
fix(receipt): Serialize is not dyn-compatible, value serializer is a …
silicon: every hardware run writes a receipt artifact (R2-1/R2-2)
fix(test): serde_json Map keys are &String, map to &str (Refs #7041)
fix(receipt): emit the six contract fields in contract order, not alp…
fix(receipt): Serialize is not dyn-compatible, value serializer is a …
fix(receipt): the seal field names the image hash, not the verify sen…
chore: resync the PR head after a force-push the PR object did not fo…
silicon: every hardware run writes a receipt artifact (R2-1/R2-2)
12 remaining items
chore: resync the PR head after a force-push the PR object did not fo…
feat(receipt): the receipt's toolchain is the seal's built_by -- prod…
fix(policy): resolve the exceptions tail the fd7afd4 replay left conf…
feat(verified): t27c run-record reads the receipts and judges one run (…
feat(verified): t27c run-record reads the receipts and judges one run (…
feat(verified): t27c run-record reads the receipts and judges one run (…
feat(verified): t27c run-record reads the receipts and judges one run (…
feat(verified): t27c run-record reads the receipts and judges one run…
t27b: float x*2^k, if as a struct literal field, defer, gf16::GF16 as…
t27b: tuple locals, @sqrt, out-of-range compares, unreached &repeat a…
t27b: tail expressions and discarded calls as the reference prints th…
self-host: t27core accepts compound assignment, byte-identical to gen…
t27core: numeric literal forms and pub var, byte-identical to gen-c (C…
ci(spec-guards): published figures are red only for a defect of the c…