Evidence and replay

The running jobjob_7Hq2 · working · $49.00 held

One call assembles a job's evidence bundle, its record, every file by hash and the state replayed from them, so an auditor or a dispute can check the job without trusting you.

The evidence bundle answers one question: can someone else check this job, step by step?

Run
curl http://localhost:8787/owner/jobs/job_7Hq2/export   # each artifact's text left out
magic values: metadata.sandbox.review = flag_once
  "object": "evidence",
  "job": "job_7Hq2",
  "service": "localization",
  "record": "28 events: job.ordered, charge.held, decision.made, step.proposed, step.committed, review.done, job.delivered, charge.collected",
      "path": "strings/strings.de.json",
      "sha256": "sha256:0c7bd35fe41dfdcf7d5d17e225761e5e9a605ab843eee3e56b7dcec061283a37"
      "path": "listing/listing.de.txt",
      "sha256": "sha256:3cd302d9f573c87f793ef20985f8b7b9c2210fde89b985045ed694e806cff59e"
      "path": "review/qa.json",
      "sha256": "sha256:b02acc1d389f334d06bb64e508e451ff9394cc0b55217fde9aa7e93bca4a130d"
      "path": "strings/strings.de.json",
      "sha256": "sha256:b1c723d0ebe964c8745ded184fd02d9a2e36374d49078b6ab511ee90463a0553"
      "path": "review/qa.json",
      "sha256": "sha256:1b22cc595c1768dfbeabc8fe96d89fd564c1f8c80cd0e004fb8c5b657056de18"
    "record": "sha256:460a07a7ec6cec91856f8bc7d13b00f2277404619272131528ac336e40a4946d"
  "replayed": {
    "status": "delivered",
    "stage": "qa",
KeyWrittenLeft outDoes
object'evidence'required
simulatedtruerequiredEvery bundle from the sandbox says so.
jobJobIdrequiredThe job it proves.
servicestringrequiredThe Service the job ran, by its id.
recordJobEvent[]requiredThe whole record, every event in order.
artifacts(Artifact & { text: string })[]requiredEvery file the job produced, each with its sha256 and its text.
hashes{ record: Hash }requiredThe sha256 of the record itself.
replayedSummaryrequiredThe status, stage, what it waits on, its steps and its ledger, replayed from the record and the step graph alone.

It holds the whole record, every file the job produced with its sha256, a hash of the record itself, and the state the record replays to, as the bundle above shows.

Both rounds of the review are there: the flagged one and the pass, each review/qa.json with its own hash.

Replaying the record alone, with the Service's step graph, gives the same status, stage and ledger, bit for bit. Every AI decision is pinned to its model and names the brief it read:

Run
curl http://localhost:8787/owner/jobs/job_7Hq2/export   # each artifact's text left out
magic values: metadata.sandbox.review = flag_once
decisions: 10, each pinned to simulated-1; briefs services/localization.md and services/localization/qa.md
replayed from the record alone: identical, bit for bit

The export is the owner's, from the owner console or GET /owner/jobs/:id/export. A key gets needs_a_person, because the bundle holds what a buyer's surfaces never carry. How long a bundle is kept after its last use is the data key's keep.

OpAPICLIMCPSDKSiteDocsApp
job.exportGET /jobs/:id/export, GET /owner/jobs/:id/exportjobs export <job>never: a person actsnever: a person acts1 error pageowner console
job.ledgerGET /owner/jobs/:idjobs ledger <job>never: a person actsnever: a person acts1 error pageowner console

Operations has every column of every row.

CodeCategoryHTTPWhy
needs_a_personblocked403A person approves and signs, in the app. A key or a tool never can.
not_foundinvalid_request404Nothing has that id.