Runs / P8 / p8-45-invoice-over-limit-declined

p8-45-invoice-over-limit-declined · P8

Declined at approve_payment

3 of 3 declared stages · recorded in the format stage-receipt-chain/0.3 · ran · received by this console

  • Records agree Yes
  • Ran as approved a straight-line run: there is no plan to compare
  • Signed by a known recorder Yes
  • Committed by a known time Not anchored
This answer's trail was checked on — each check that ran held.

Held under the checks that ran; not anchored, so it can't be shown to be the record that was made.

Repeat the check

Run it from the run's folder:

onetrace-verify --trust trust.json MANIFEST.json

The run stopped at approve_payment: the step declined by its own rule, and recorded why: an invoice of 3840.00 is over the approver's limit of 2500.00. No declared step was left without a receipt.

The answer

This record has no step that wrote an answer, so there is no answer to show.

The trail

step 1 of 3

read_invoice

What went in
invoice · 150 bytes
What came out
invoice.json · 86 bytes
When
→

Completed.

Ran as invoice-reader, 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_invoice
Version
invoice-reader · 1.0.0
What went in
invoice · 150 bytes
sha256:923e5bc4d6d2…sha256:923e5bc4d6d2a85e755dcee49adcd8ce1f0c4ed7797ffaed6814785cd028a200
What came out
invoice.json · 86 bytes
sha256:6f89e0b46dbf…sha256:6f89e0b46dbf3f18b01f0d550999c5177cb39e217a2d818d089dcaa24782e6ff
Fingerprint
sha256:c937a8449a00…sha256:c937a8449a0014db341bb58078051f8714a717fdae68329c04a45b57eceaa1fb
Settings it ran with
{
 "data": "invented example data",
 "onetrace.kept_inputs": "invoice"
}
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","onetrace.kept_inputs":"invoice"}},"coverage":{"boundaries":[],"completeness":"incomplete","declared_stages":["read_invoice","match","approve_payment"],"emitting_stages":["read_invoice"]},"digest_source":"emitter","emission":{"gaps":[],"policy":"fail-closed"},"format":"stage-receipt/0.3","inputs":[{"bytes":"150","digest":"sha256:923e5bc4d6d2a85e755dcee49adcd8ce1f0c4ed7797ffaed6814785cd028a200","media_type":"application/json","name":"invoice","trust_class":"externally-sourced"}],"instrument":{"config_digest":"sha256:b80d11206e532440dec5331fb86ffeedb8018955a09fbc9c08915706689e6863","id":"invoice-reader","kind":"reader","manifest_digest":"sha256:aaf71a395b501802eb499dcda21c878e759b71144ed7c3dec69aa040362e4ab8","rederivable":"true","version":"1.0.0"},"outcome":{"class":"ok"},"outputs":[{"bytes":"86","digest":"sha256:6f89e0b46dbf3f18b01f0d550999c5177cb39e217a2d818d089dcaa24782e6ff","media_type":"application/json","name":"invoice.json","trust_class":"operator-authored"}],"prev":null,"run_id":"p8-45-invoice-over-limit-declined","stage":{"index":"1","name":"read_invoice"},"time":{"ended":"2026-10-25T12:52:11.338+00:00","started":"2026-10-25T12:52:11.326+00:00"}}
The check's own words
[PASS   ] receipts/01-read-invoice.json: receipt format
[PASS   ] receipts/01-read-invoice.json: bytes are canonical
[PASS   ] receipts/01-read-invoice.json: required field 'format'
[PASS   ] receipts/01-read-invoice.json: required field 'run_id'
[PASS   ] receipts/01-read-invoice.json: required field 'stage'
[PASS   ] receipts/01-read-invoice.json: required field 'prev'
[PASS   ] receipts/01-read-invoice.json: required field 'time'
[PASS   ] receipts/01-read-invoice.json: required field 'coverage'
[PASS   ] receipts/01-read-invoice.json: required field 'emission'
[PASS   ] receipts/01-read-invoice.json: required field 'anchor'
[PASS   ] receipts/01-read-invoice.json: required field 'instrument'
[PASS   ] receipts/01-read-invoice.json: required field 'inputs'
[PASS   ] receipts/01-read-invoice.json: required field 'outputs'
[PASS   ] receipts/01-read-invoice.json: required field 'assertions'
[PASS   ] receipts/01-read-invoice.json: required field 'outcome'
[PASS   ] receipts/01-read-invoice.json: time.started carries its zone
[PASS   ] receipts/01-read-invoice.json: time.ended carries its zone
[PASS   ] receipts/01-read-invoice.json: instrument is named and pinned
[PASS   ] receipts/01-read-invoice.json: inputs/invoice declares a trust class
[PASS   ] receipts/01-read-invoice.json: outputs/invoice.json declares a trust class
[PASS   ] receipts/01-read-invoice.json: assertions name their constants
[PASS   ] receipts/01-read-invoice.json: outcome class is one of ['error', 'ok', 'refused']
[PASS   ] receipts/01-read-invoice.json: coverage declares completeness
[PASS   ] receipts/01-read-invoice.json: anchor state is declared, not absent
[NOT-RUN] receipts/01-read-invoice.json: originality -- record is declared unanchored; this verifier can establish consistency, not originality
[PASS   ] receipts/01-read-invoice.json: digest matches the manifest
[PASS   ] receipts/01-read-invoice.json: chain link
[PASS   ] receipts/01-read-invoice.json: output artifact 'invoice.json' matches
step 2 of 3

match

What went in
receipt:read_invoice · 1324 bytes
invoice.json · 86 bytes
What came out
match.json · 66 bytes
When
→

Completed.

Ran as three-way-match, 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 2 of 3 · match
Version
three-way-match · 1.0.0
What went in
receipt:read_invoice · 1324 bytes
sha256:c937a8449a00…sha256:c937a8449a0014db341bb58078051f8714a717fdae68329c04a45b57eceaa1fb
invoice.json · 86 bytes
sha256:6f89e0b46dbf…sha256:6f89e0b46dbf3f18b01f0d550999c5177cb39e217a2d818d089dcaa24782e6ff
What came out
match.json · 66 bytes
sha256:50f40df769cd…sha256:50f40df769cd38bbc6205bf5cc1b0968a0f0807ffa9800bb52e29af5fedd5749
Fingerprint
sha256:d65544db4e29…sha256:d65544db4e29b9328805809cb3a641d6aaeb127a373ac1a46e00c7121f9ef76a
Settings it ran with
{
 "order_quantity": "300",
 "order_unit_price": "12.50",
 "price_tolerance": "5.00%",
 "received_quantity": "300"
}
The receipt, exactly as recorded
{"anchor":{"reason":"a demo record; anchoring is not part of this demo","state":"unanchored"},"assertions":{"constants":{"order_quantity":"300","order_unit_price":"12.50","price_tolerance":"5.00%","received_quantity":"300"}},"coverage":{"boundaries":[],"completeness":"incomplete","declared_stages":["read_invoice","match","approve_payment"],"emitting_stages":["read_invoice","match"]},"digest_source":"emitter","emission":{"gaps":[],"policy":"fail-closed"},"format":"stage-receipt/0.3","inputs":[{"bytes":"1324","digest":"sha256:c937a8449a0014db341bb58078051f8714a717fdae68329c04a45b57eceaa1fb","media_type":"application/json","name":"receipt:read_invoice","trust_class":"operator-authored"},{"bytes":"86","digest":"sha256:6f89e0b46dbf3f18b01f0d550999c5177cb39e217a2d818d089dcaa24782e6ff","media_type":"application/json","name":"invoice.json","trust_class":"operator-authored"}],"instrument":{"config_digest":"sha256:824a2366fff3ce418a48864bb0501ff02b8396b0cfede1f37935ae87b389a060","id":"three-way-match","kind":"checker","manifest_digest":"sha256:aaf71a395b501802eb499dcda21c878e759b71144ed7c3dec69aa040362e4ab8","rederivable":"true","version":"1.0.0"},"outcome":{"class":"ok"},"outputs":[{"bytes":"66","digest":"sha256:50f40df769cd38bbc6205bf5cc1b0968a0f0807ffa9800bb52e29af5fedd5749","media_type":"application/json","name":"match.json","trust_class":"operator-authored"}],"prev":"sha256:c937a8449a0014db341bb58078051f8714a717fdae68329c04a45b57eceaa1fb","run_id":"p8-45-invoice-over-limit-declined","stage":{"index":"2","name":"match"},"time":{"ended":"2026-10-25T12:52:11.351+00:00","started":"2026-10-25T12:52:11.347+00:00"}}
The check's own words
[PASS   ] receipts/02-match.json: receipt format
[PASS   ] receipts/02-match.json: bytes are canonical
[PASS   ] receipts/02-match.json: required field 'format'
[PASS   ] receipts/02-match.json: required field 'run_id'
[PASS   ] receipts/02-match.json: required field 'stage'
[PASS   ] receipts/02-match.json: required field 'prev'
[PASS   ] receipts/02-match.json: required field 'time'
[PASS   ] receipts/02-match.json: required field 'coverage'
[PASS   ] receipts/02-match.json: required field 'emission'
[PASS   ] receipts/02-match.json: required field 'anchor'
[PASS   ] receipts/02-match.json: required field 'instrument'
[PASS   ] receipts/02-match.json: required field 'inputs'
[PASS   ] receipts/02-match.json: required field 'outputs'
[PASS   ] receipts/02-match.json: required field 'assertions'
[PASS   ] receipts/02-match.json: required field 'outcome'
[PASS   ] receipts/02-match.json: time.started carries its zone
[PASS   ] receipts/02-match.json: time.ended carries its zone
[PASS   ] receipts/02-match.json: instrument is named and pinned
[PASS   ] receipts/02-match.json: inputs/receipt:read_invoice declares a trust class
[PASS   ] receipts/02-match.json: inputs/invoice.json declares a trust class
[PASS   ] receipts/02-match.json: outputs/match.json declares a trust class
[PASS   ] receipts/02-match.json: assertions name their constants
[PASS   ] receipts/02-match.json: outcome class is one of ['error', 'ok', 'refused']
[PASS   ] receipts/02-match.json: coverage declares completeness
[PASS   ] receipts/02-match.json: anchor state is declared, not absent
[NOT-RUN] receipts/02-match.json: originality -- record is declared unanchored; this verifier can establish consistency, not originality
[PASS   ] receipts/02-match.json: digest matches the manifest
[PASS   ] receipts/02-match.json: chain link
[PASS   ] receipts/02-match.json: output artifact 'match.json' matches
step 3 of 3

approve_payment

What went in
receipt:match · 1631 bytes
match.json · 66 bytes
What came out
nothing
When
→

It declined to answer, and says why: an invoice of 3840.00 is over the approver's limit of 2500.00.

Ran as payment-approval, 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 3 of 3 · approve_payment
Version
payment-approval · 1.0.0
What went in
receipt:match · 1631 bytes
sha256:d65544db4e29…sha256:d65544db4e29b9328805809cb3a641d6aaeb127a373ac1a46e00c7121f9ef76a
match.json · 66 bytes
sha256:50f40df769cd…sha256:50f40df769cd38bbc6205bf5cc1b0968a0f0807ffa9800bb52e29af5fedd5749
What came out
nothing
Fingerprint
sha256:e9ddd4abfd96…sha256:e9ddd4abfd96ca22595262b9f21db74829fe5723912832f7f67f8e3cfb078f9f
Settings it ran with
{}
The receipt, exactly as recorded
{"anchor":{"reason":"a demo record; anchoring is not part of this demo","state":"unanchored"},"assertions":{},"coverage":{"boundaries":[],"completeness":"complete","declared_stages":["read_invoice","match","approve_payment"],"emitting_stages":["read_invoice","match","approve_payment"]},"digest_source":"emitter","emission":{"gaps":[],"policy":"fail-closed"},"format":"stage-receipt/0.3","inputs":[{"bytes":"1631","digest":"sha256:d65544db4e29b9328805809cb3a641d6aaeb127a373ac1a46e00c7121f9ef76a","media_type":"application/json","name":"receipt:match","trust_class":"operator-authored"},{"bytes":"66","digest":"sha256:50f40df769cd38bbc6205bf5cc1b0968a0f0807ffa9800bb52e29af5fedd5749","media_type":"application/json","name":"match.json","trust_class":"operator-authored"}],"instrument":{"config_digest":"sha256:84566ae6a0fff7aa8af09def3657bb9858b7ab7d7d92c4e9c7054a770c42f8f6","id":"payment-approval","kind":"policy","manifest_digest":"sha256:aaf71a395b501802eb499dcda21c878e759b71144ed7c3dec69aa040362e4ab8","rederivable":"true","version":"1.0.0"},"outcome":{"class":"refused","reason":"an invoice of 3840.00 is over the approver's limit of 2500.00"},"outputs":[],"prev":"sha256:d65544db4e29b9328805809cb3a641d6aaeb127a373ac1a46e00c7121f9ef76a","run_id":"p8-45-invoice-over-limit-declined","stage":{"index":"3","name":"approve_payment"},"time":{"ended":"2026-10-25T12:52:11.360+00:00","started":"2026-10-25T12:52:11.360+00:00"}}
The check's own words
[PASS   ] receipts/03-approve-payment.json: receipt format
[PASS   ] receipts/03-approve-payment.json: bytes are canonical
[PASS   ] receipts/03-approve-payment.json: required field 'format'
[PASS   ] receipts/03-approve-payment.json: required field 'run_id'
[PASS   ] receipts/03-approve-payment.json: required field 'stage'
[PASS   ] receipts/03-approve-payment.json: required field 'prev'
[PASS   ] receipts/03-approve-payment.json: required field 'time'
[PASS   ] receipts/03-approve-payment.json: required field 'coverage'
[PASS   ] receipts/03-approve-payment.json: required field 'emission'
[PASS   ] receipts/03-approve-payment.json: required field 'anchor'
[PASS   ] receipts/03-approve-payment.json: required field 'instrument'
[PASS   ] receipts/03-approve-payment.json: required field 'inputs'
[PASS   ] receipts/03-approve-payment.json: required field 'outputs'
[PASS   ] receipts/03-approve-payment.json: required field 'assertions'
[PASS   ] receipts/03-approve-payment.json: required field 'outcome'
[PASS   ] receipts/03-approve-payment.json: time.started carries its zone
[PASS   ] receipts/03-approve-payment.json: time.ended carries its zone
[PASS   ] receipts/03-approve-payment.json: instrument is named and pinned
[PASS   ] receipts/03-approve-payment.json: inputs/receipt:match declares a trust class
[PASS   ] receipts/03-approve-payment.json: inputs/match.json declares a trust class
[PASS   ] receipts/03-approve-payment.json: outcome class is one of ['error', 'ok', 'refused']
[PASS   ] receipts/03-approve-payment.json: coverage declares completeness
[PASS   ] receipts/03-approve-payment.json: 'complete' is consistent with the stage lists
[PASS   ] receipts/03-approve-payment.json: anchor state is declared, not absent
[NOT-RUN] receipts/03-approve-payment.json: originality -- record is declared unanchored; this verifier can establish consistency, not originality
[PASS   ] receipts/03-approve-payment.json: digest matches the manifest
[PASS   ] receipts/03-approve-payment.json: chain link

What could not be checked

  • Each declared step left a receipt, as the receipts themselves state.

  • This record held under the checks that ran. It has not been anchored, so it cannot be shown to be the record that was made — here is what anchoring would add.

    Anchored, it would read: this record existed by a stated date and hasn't changed since — checkable against an independent anchor.

The run, step by step