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:b0453a3fe0c8…
sha256:b0453a3fe0c86e73e4d16897f1a78a1caf85cbde410860ee5cbe8e4138c4878etorques.json· 55 bytes
sha256:5b52c509e579…
sha256:5b52c509e5793ee65b71a26a9a1687ab667a567ab9d75ae5d7101deb7e0d1376sha256:0582a728b287…
sha256:0582a728b28753f1239eabc295740fae80c18ab08aca7ba47eb08fefa16f450a{
"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:b0453a3fe0c86e73e4d16897f1a78a1caf85cbde410860ee5cbe8e4138c4878e","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:5b52c509e5793ee65b71a26a9a1687ab667a567ab9d75ae5d7101deb7e0d1376","media_type":"application/json","name":"torques.json","trust_class":"operator-authored"}],"prev":null,"run_id":"p9-48-torque-one-bolt-low","stage":{"index":"1","name":"read_tool_log"},"time":{"ended":"2026-10-25T12:52:11.564+00:00","started":"2026-10-25T12:52:11.559+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