Proof chain active issues index
Surface callouts from the proof chain in a file-organized index at the top of PROOF_CHAIN.md so agents can immediately find relevant issues when scoping work on specific files. Currently callouts are captured but buried in chronological entries — finding issues for `scan-engine.ts` requires reading through all history hoping to spot mentions.
verdict PASSscore 16 / 16findings 6 (0 risk · 1 debt · 5 obs)duration 1h 1mrejection cycles 0shipped Apr 17, 2026
Pipeline timeline
Intent to proven code in 1h 1m across Think, Plan, Build, and Verify.
Think8m
Plan8m
Build45m
Verify0m
Assertion ledger
16 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | File references with line numbers are extracted from callout text | verified | ok |
| A002 | File references with line ranges are extracted | verified | ok |
| A003 | Filenames without line numbers are extracted | verified | ok |
| A004 | Multiple file references in one callout are all extracted | verified | ok |
| A005 | Callouts without file references return an empty array | verified | ok |
| A006 | Various file extensions are recognized | verified | ok |
| A007 | Callouts are grouped under file headings | verified | ok |
| A008 | Callouts without file refs appear under General | verified | ok |
Findings 6 total
obspackages/cli/src/utils/proofSummary.ts→ closed
Hard truncation at 100 characters without ellipsis — proofSummary.ts:361 uses `substring(0, 100)` which can cut mid-word. Adding `+ '…'` when truncated would improve readability. Minor — the active issues index is a developer tool, not user-facing output.
obspackages/cli/src/utils/proofSummary.ts→ closed
File path segments lost in extractFileRefs — proofSummary.ts:253 regex uses `\b` word boundary which won't match after `/`. Callouts mentioning `src/utils/index.ts` will group under `index.ts`, potentially merging unrelated files from different directories. In practice, callout text from verify reports typically uses bare filenames (e.g., "Dead logic in projectKind.ts:105"), so this is dormant but worth knowing if callout format evolves.
obspackages/cli/src/commands/work.ts→ closed
ProofChain interface duplicated in three locations — work.ts:661, proof.ts:29, and now proofSummary.ts has `ProofChainEntryForIndex`. The gotcha explicitly warned about this. The builder chose a narrow projection interface rather than importing the full type — defensible, but the duplication count is growing. Consider consolidating in a future cycle.
debtpackages/cli/tests/utils/proofSummary.test.ts→ closed
A009 cap test doesn't verify WHICH callouts were dropped — proofSummary.test.ts:550-564 creates 25 identical-structure callouts and asserts count is 20, but doesn't verify the 5 dropped are the oldest. The separate "takes most recent callouts when capping at 20" test (line 691) does verify this. Together they provide full coverage, but A009 alone would pass even if the implementation kept the oldest instead of the newest.
obspackages/cli/tests/utils/proofSummary.test.ts→ closed
A012 heading position test is fragile — proofSummary.test.ts:606 asserts `output.indexOf('# Active Issues') === 0`. If the function ever adds a leading newline or BOM, this breaks. The contract says "contains", but the test asserts position. Stricter than required — not wrong, but fragile.
+1more findings
Integrity seal
scopesha256:6b683abb02438...
contractsha256:d6596f99bfa98...
plansha256:52dc312de7336...
specsha256:86dfda47c216e...
build-reportsha256:05aecb3851068...
audit cmd$ ana proof audit proof-chain-active-issues → all hashes match