Evidence ledger

The evidence ledger answers one question: why is this work.id allowed to be done? It stores command output, file traces, verification results and gate verdicts next to the BVC contract — reviewable in git like any other change.

What counts as evidence

Evidence is machine-readable. Chat messages and hand-waved “done” are not sufficient for Tier A work.

Command output

npm test, bvc lint, custom scripts — exit code, stdout/stderr and timestamps attached to work.id. CI results can be referenced the same way.

Trace links

work.id ↔ files ↔ tests ↔ AN decisions. Broken links surface in diagnostics before merge, not after production.

Tier checks

Tier A demands deterministic proof. Tier B/C add optional or environment gates. The matrix is visible in the verification UI and in contract labels.

From claim to done

MCP tools enforce the sequence; skipping a step leaves the task open with a PolicyViolation or missing-evidence error.

  1. claim_work_item Agent takes work.id and reads contract
  2. edit target_files Changes stay inside allowlist
  3. run commands Only approved scripts
  4. submit evidence Structured JSON + logs
  5. assert_task_ready_for_done Gate verdict → done

Checks live in the contract

BVC Checks and MCP gates share the same definition of ready — agents and humans see the same missing[] list.

work.bvc
#ImplementTraceLinksV1@en<[
Basis:
  Current step tracing is not validated in CI
  There is no work.id ↔ files ↔ tests linkage
Vector:
  Implement trace validator
  Add MCP tool get_unified_linkage
Goal:
  Any task with trace.* labels has automatic integrity checks

Labels:
  profile: work_item
  tier: A
  trace.codegen: false

Checks:
  npm run test:deterministic
  bvc lint intent/**/implement-trace-links-v1.work.bvc
]>
MCP flow
claim_work_item("implement-trace-links-v1")
 get_work_contract(work_id)
 edit target_files
 run allowed commands
 validate_evidence(structured_json)
 assert_task_ready_for_done(work_id)
 add_work_item_evidence + complete

Ready-for-done

Closing requires evidence, checks and a traceable work contract. The gate returns exactly which field or command failed — not a generic error.

GATE

Evidence records

Lines and structured entries bind commands, diffs, traces and verification outcomes to one work.id. Export and review follow git history.

TRACE

Local by default

The ledger is files in your repository. No separate SaaS database — PR review and blame apply to evidence the same as to code.

GIT