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.
- claim_work_item Agent takes work.id and reads contract
- edit target_files Changes stay inside allowlist
- run commands Only approved scripts
- submit evidence Structured JSON + logs
- 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.
#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
]>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 + completeVerification and memory in the UI
The matrix shows what is still missing. Memory lists what was proven and closed — the audit trail for the next session.
Verification decides when a task can close
Tier A/B/C matrix: deterministic commands, optional checks and environment gates. assert_task_ready_for_done returns violations[] — a contract verdict, not agent prose.
Project memory keeps verified outcomes
Closed tasks with valid evidence become memory records linked to work.id and files. The next session pulls context from git, not from a recap of what the model said last time.
A task is a machine-readable BVC contract
The drawer shows Basis, Vector, Goal, analysis, decisions, checks and evidence in one place. Agents read projection via get_work_contract and know which files, commands and gates are required before done.
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.
Evidence records
Lines and structured entries bind commands, diffs, traces and verification outcomes to one work.id. Export and review follow git history.
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.