Skip to content

BuildExamples

Bulla examples.

Create one transaction record, check it locally, and compare the receipt set with a separate action log.

Run these examples with Bulla 0.48.0. Each command reports checks over supplied files; systems that performed or observed an action must supply evidence about occurrence.

1. Run the complete product loop

Start with a fixed local action and one ActionReceipt. An amount-only edit fails its integrity check, while a separate action log identifies a second action with no receipt.

$ python -m pip install "bulla==0.48.0"
$ 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_043

Receiver records are constructed. This 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 json

What 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.

3. Check the file without a hosted service

Run Bulla beside the checker included in the verification kit while network access is denied. Drill output separates file checks from claims that require another record or trusted key.

$ bulla receipt drill     first-action/receipts/pay_demo_042.json     --format json

Retain the verification kit and its detached digest with the receipt set.

4. Add Bulla where your application acts

python
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.receipt

Supply the action and declared context from application code; Bulla writes the receipt JSON. Models do not need to know about the receipt. Continue with the Python integration 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.

Composition and research archive

Research examples sit outside the stable package path. Their canonical pages retain the current evidence boundaries and reproduction material.

Limits of this evidence
  • 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.

Open the repository-source profile index →

Source and status

Stable commands are documented from Bulla 0.48.0. Experimental availability and external evidence counts remain on the generated status page.