read_tool_log
tool_log.csv· 61 bytes
torques.json· 55 bytes
Completed.
Ran as tightening-tool-log
, version 1.0.0
.
Checked — it holds.
Held under the checks that ran; not anchored, so it can't be shown to be the record that was made.
Receipt · step 1 of 3 · read_tool_log
tightening-tool-log·
1.0.0
tool_log.csv· 61 bytes
sha256:8313fc7e9e28…
sha256:8313fc7e9e282650eb19512df0a25195e4d8b7f7db59e4cc9e6f1d130e186222torques.json· 55 bytes
sha256:d8b870178f9c…
sha256:d8b870178f9c2d8bd83948ec20abf944879de397747a3b91ef3858d7f5f7bebdsha256:3a0e9d566eba…
sha256:3a0e9d566ebae78a0f17b2e05fe9f72a827507d191ff68ae67ccb9edf45a2b1c{
"data": "invented example data",
"tool_firmware": "4.2"
}The receipt, exactly as recorded
{"anchor":{"reason":"a demo record; anchoring is not part of this demo","state":"unanchored"},"assertions":{"constants":{"data":"invented example data","tool_firmware":"4.2"}},"coverage":{"boundaries":[],"completeness":"incomplete","declared_stages":["read_tool_log","torque_check","station_decision"],"emitting_stages":["read_tool_log"]},"digest_source":"emitter","emission":{"gaps":[],"policy":"fail-closed"},"format":"stage-receipt/0.3","inputs":[{"bytes":"61","digest":"sha256:8313fc7e9e282650eb19512df0a25195e4d8b7f7db59e4cc9e6f1d130e186222","media_type":"text/csv","name":"tool_log.csv","trust_class":"externally-sourced"}],"instrument":{"config_digest":"sha256:e52725fc30368946bba73409c4d1d39f204841542ee3d464d5047fda3a826156","id":"tightening-tool-log","kind":"reader","manifest_digest":"sha256:a93c6c03a55d10a82c5f25ffbc7dc651a36aed7d5f914fcf436d0a1d7930895d","rederivable":"true","version":"1.0.0"},"outcome":{"class":"ok"},"outputs":[{"bytes":"55","digest":"sha256:d8b870178f9c2d8bd83948ec20abf944879de397747a3b91ef3858d7f5f7bebd","media_type":"application/json","name":"torques.json","trust_class":"operator-authored"}],"prev":null,"run_id":"p9-46-torque-baseline","stage":{"index":"1","name":"read_tool_log"},"time":{"ended":"2026-10-25T12:52:11.432+00:00","started":"2026-10-25T12:52:11.424+00:00"}}The check's own words
[PASS ] receipts/01-read-tool-log.json: receipt format [PASS ] receipts/01-read-tool-log.json: bytes are canonical [PASS ] receipts/01-read-tool-log.json: required field 'format' [PASS ] receipts/01-read-tool-log.json: required field 'run_id' [PASS ] receipts/01-read-tool-log.json: required field 'stage' [PASS ] receipts/01-read-tool-log.json: required field 'prev' [PASS ] receipts/01-read-tool-log.json: required field 'time' [PASS ] receipts/01-read-tool-log.json: required field 'coverage' [PASS ] receipts/01-read-tool-log.json: required field 'emission' [PASS ] receipts/01-read-tool-log.json: required field 'anchor' [PASS ] receipts/01-read-tool-log.json: required field 'instrument' [PASS ] receipts/01-read-tool-log.json: required field 'inputs' [PASS ] receipts/01-read-tool-log.json: required field 'outputs' [PASS ] receipts/01-read-tool-log.json: required field 'assertions' [PASS ] receipts/01-read-tool-log.json: required field 'outcome' [PASS ] receipts/01-read-tool-log.json: time.started carries its zone [PASS ] receipts/01-read-tool-log.json: time.ended carries its zone [PASS ] receipts/01-read-tool-log.json: instrument is named and pinned [PASS ] receipts/01-read-tool-log.json: inputs/tool_log.csv declares a trust class [PASS ] receipts/01-read-tool-log.json: outputs/torques.json declares a trust class [PASS ] receipts/01-read-tool-log.json: assertions name their constants [PASS ] receipts/01-read-tool-log.json: outcome class is one of ['error', 'ok', 'refused'] [PASS ] receipts/01-read-tool-log.json: coverage declares completeness [PASS ] receipts/01-read-tool-log.json: anchor state is declared, not absent [NOT-RUN] receipts/01-read-tool-log.json: originality -- record is declared unanchored; this verifier can establish consistency, not originality [PASS ] receipts/01-read-tool-log.json: digest matches the manifest [PASS ] receipts/01-read-tool-log.json: chain link [PASS ] receipts/01-read-tool-log.json: output artifact 'torques.json' matches