Bulla examples.
Create one transaction record, check it locally, and compare the receipt set with a separate action log.
These examples use Bulla 0.47.1. They show what can be checked from the supplied files. Evidence from the systems that performed or observed an action is still needed to establish what happened.
1. Run the complete product loop
The fixed example records a local action and writes an ActionReceipt. A changed copy fails its integrity check. A separate action log then identifies a second action with no receipt.
$ python -m pip install "bulla==0.47.1"
$ bulla demo --out first-action
receipt emitted pay_demo_042
changed copy FAILED
coverage before 1/1
coverage after 1/2
unreceipted action pay_demo_043The receiver record is constructed. The demonstration does not establish that funds moved, and it computes no reliance or payment-eligibility decision. Follow the complete quickstart.
2. Create and verify one receipt
$ bulla receipt create --type demo.write --subject path=/tmp/example.txt --principal did:web:example.invalid:agent --policy policy://demo-v1 --forum-endpoint https://example.invalid/challenge --forum-root fixture:independently-pinned-root --out receipt.json
$ bulla receipt verify receipt.json --format jsonWhat the receipt check does not prove
This checks the receipt file. Evidence from the systems that performed or observed the action is still needed to establish what happened.
Technical evidence
Verification establishes only the reported digest, identity, or inclusion depth; it does not establish the truth of the underlying process.
3. Check the file without a hosted service
The drill runs Bulla and the checker included in the verification kit with network access denied. It reports file checks separately from claims that require another record or trusted key.
$ bulla receipt drill first-action/receipts/pay_demo_042.json --format jsonRetain the verification kit and its detached digest with the receipt set.
4. Add Bulla where your application acts
from bulla import wrap_action
with wrap_action("payments.charge", {"amount": 200, "currency": "USD"}) as act:
act.set_result("sha256:...")
act.add_evidence("counterparty_ack", "sha256:...", "counterparty_signed")
receipt = act.receiptYour application supplies the action and declared context; Bulla writes the receipt JSON. The model does not need to know about the receipt. Continue with the Python SDK guide.
5. Compare receipts with an action log
$ bulla coverage --anchor pypi --receipts releases/Bulla reports actions in the supplied log that have no matching receipt. It cannot find actions missing from that log. Open the coverage walkthrough.
Limits of the comparison
Bulla can find actions in the supplied action log that have no matching receipt. It cannot find actions missing from that log.
Technical evidence
Coverage is computed relative to the supplied denominator; a compromised or incomplete independent log narrows what reconciliation can find. The browser recomputes digests and the set difference over unsigned fixture receipts and does not verify signer identity or the denominator's independence.
Composition and research archive
These source and research surfaces are separate from the stable product path. Their canonical pages retain the current evidence boundaries and reproduction material.
- Recourse gateSigned deeds, independently grounded inclusion, and relying-party policy.
- Conflicting registry historyPinned roots and the boundary between publisher assertions and relying-party grounding.
- Semantic seam diagnosisScoped bridges and finite composition diagnostics.
- Exact and downgraded repairThe finite-model conditions for exact, surrogate, and unresolved repairs.
- MCP proxy researchObserve-and-advise integration behavior and its execution limits.
- Routed inferenceDraft handoff evidence, fault injections, and current reproduction limits.
- BABEL challengeThe separate empirical benchmark for structural composition methods.
What this check cannot tell you
- A host's assertion about its own root is not independent grounding; the relying party must obtain or anchor the root separately.
- The coherence fee measures undisclosed conventions in a pinned composition model; it is not Bulla's safety foundation or an execution-failure predictor.
- Exact means minimum-cost within the pinned finite repair model; it is not proof of safe execution or a universal real-world cost.
- The demonstrated proxy advises and records; it does not silently modify traffic or verify underlying tool execution.
Source and status
Stable commands are documented from Bulla 0.47.1. Experimental availability and external evidence counts remain on the generated status page.