How a provider result remains recheckable
Technical reference for bulla.inference-clearing/0.1-experimental
The problem is not simply whether a provider returned bytes. A later consumer needs to know which terms the provider accepted, what evidence remains, which receiver actions have matching receipts, and whether that evidence satisfies the consumer’s own rule.
The fixed demonstration compares two identical answers. One relation can be recomputed from the retained, precommitted model; the other remains a provider claim. The evidence does not establish answer truth or which model either provider historically executed.
Transaction
inference.order
→ inference.route
→ inference.accept
→ inference.delivery
→ assurance.collateral.bind
→ inference.coverage.checkpoint
→ bulla.rely
[→ assurance.settlement.authorize → rail.settlement.report]The buyer, router, provider, receiver, witness, relying agent, settlement authority, rail observer, and publisher use separate fixture keys and processes. They remain under one project control domain.
- Terms: the buyer fixes the task and acceptable evidence before execution.
- Acceptance: a provider accepts one exact instance of those terms.
- Delivery: the receiver records the returned bytes and observed effect.
- Computation evidence: retained artifacts make the promised relation recheckable.
- Policy decision: a distinct relying agent records whether the evidence satisfies the buyer’s rule.
- Consequence: eligibility, authorization, settlement attempt, and funds evidence remain separate.
Terms and relation evidence
The closed task accepts one eight-integer telemetry vector and produces PRIMARY or BACKUP. Before acceptance, the terms bind the exact expected model hash, input hash, output schema, buyer policy, receiver anchor, price, consequence, and challenge path. Provider acceptance then binds the execution-report hash and its closed process claim before receiver delivery. The recheckable adapter uses safe-integer arithmetic, fixed operation order, no floating point, and no randomness.
Recomputing the output establishes that the retained, term-bound model maps the retained input to the returned bytes. It does not establish which model the provider historically executed, model quality, training provenance, or fitness for a real scheduling decision. The opaque provider supplies only a SELF_ASSERTED process claim.
Receiver coverage
The receiver assigns effect identifiers and supplies the action record outside the provider and marketplace boundary. It signs the exact record hash, anchor, and counts before the relying agent decides. Coverage reconciles those identifiers with receiver delivery receipts. An uncovered identifier is a finding, not a receipt-integrity failure and not an explanation of cause. The signature authenticates the receiver’s supplied record; it does not establish that the receiver recorded every effect.
Witness, reliance, and settlement
Witness inclusion establishes that an exact receipt leaf is included under an externally accepted signed root. It cannot improve relation evidence or establish historical provider execution. bulla.rely records the relying agent’s policy-specific decision. Payment eligibility, settlement authorization, workflow-local settlement attempt, and actual funds movement remain separate dimensions.
Layer boundaries
| Layer | Question answered |
|---|---|
| Identity or reputation | Who is the provider, and what signals exist about it? |
| Execution evidence | What does this proof or recomputation establish? |
| Payment rail | What execution does the accepted rail report? |
| Bulla clearing record | Does the evidence for this exact order satisfy this consumer’s policy and permit this consequence? |
Gensyn-style reproducible execution, x402-style payment, ERC-8004 identity and validation, TEEs, and zkML are possible adapter classes. This alpha does not claim implemented compatibility with them. Each adapter may contribute only the facts its own verifier establishes.
Verification dimensions
- Bundle and receipt integrity, signatures, accepted roles, terms, occurrence, and exact parent lineage.
- Output binding, model binding, relation reproduction, the provider’s process claim, and historical execution occurrence.
- Receiver coverage, witness inclusion and root trust, capital allocation, and recourse conveyance.
- Reliance, payment eligibility, settlement authorization, and reported rail execution.
- Explicitly uncomputed denominator completeness, custody, collectibility, and worldly truth.
No global valid, safe, or trusted verdict is emitted.
Open inference markets
Routers can make providers substitutable before inference. Retained evidence makes a delivered result inspectable after the provider process stops. The buyer keeps one acceptance rule while providers compete to satisfy it.
Later evaluation uses the retained transaction record and separately supplied buyer context rather than a provider API or marketplace account. This profile supplies evidence infrastructure for that workflow; it is not a marketplace, payment rail, or independent verifier.
Reproduce
Browse the exact public source at commit 8067f767821e08d3125d247406c65d92228d5504.
SOURCE_DIR="$(mktemp -d)"
VENV_DIR="$(mktemp -d)"
RUN_DIR="$(mktemp -d)"
git clone --quiet https://github.com/jkomkov/bulla.git "$SOURCE_DIR/bulla"
git -C "$SOURCE_DIR/bulla" checkout --quiet --detach 8067f767821e08d3125d247406c65d92228d5504
python3 -m venv "$VENV_DIR"
"$VENV_DIR/bin/python" -m pip install "$SOURCE_DIR/bulla[identity]"
PYTHONPATH="$SOURCE_DIR/bulla/src" "$VENV_DIR/bin/python" "$SOURCE_DIR/bulla/examples/inference-clearing/run_demo.py" --story --out "$RUN_DIR"
"$VENV_DIR/bin/python" -I "$SOURCE_DIR/bulla/spec/inference-clearing/check.py" "$RUN_DIR/recheckable" --context "$RUN_DIR/contexts/recheckable.json" > "$RUN_DIR/python-report.json"
node "$SOURCE_DIR/bulla/spec/inference-clearing/check.mjs" "$RUN_DIR/recheckable" --context "$RUN_DIR/contexts/recheckable.json" > "$RUN_DIR/node-report.json"
"$VENV_DIR/bin/python" "$SOURCE_DIR/bulla/spec/inference-clearing/compare_reports.py" "$RUN_DIR/python-report.json" "$RUN_DIR/node-report.json"Download the canonical tar and its detached SHA-256. The kit digest is sha256:397d0d56687cb3ca62b9f5cc6ac774686944891942d40a685621327ab0a370f1.