Clear the Deck Phase 2

Continuation of Clear the Deck. Phase 1 fixed 7 items identified by the proof chain — types, ESLint, dead tests, save-all parity, custom namespace. Phase 2 cleans the next layer: agent templates running at 20% context capacity, a callout file resolution gap that affects customer repos, missing test coverage for proof chain accumulation, and small corrections across the pipeline.

verdict PASSscore 21 / 21findings 5 (0 risk · 0 debt · 5 obs)duration 31mrejection cycles 0shipped Apr 27, 2026surface cli

Pipeline timeline

Intent to proven code in 31m across Think, Plan, Build, and Verify.

Think
8m
Plan
8m
Build
16m
Verify
7m

Assertion ledger

21 claims, each independently verified. Showing 8 — show all →

IDSaysMatcher
A001Every agent session gets the full 1M context windowverifiedok
A002Verify asks the developer before starting verificationverifiedok
A003Build no longer tells agents to skip asking permissionverifiedok
A004Verify callouts use project-relative paths for better data qualityverifiedok
A005Setup reads validation schema files to understand project patternsverifiedok
A006Setup surfaces validation and test findings in the context draftverifiedok
A007Setup reads auth config when the project has authenticationverifiedok
A008The confusing slugDir2 variable name is cleaned upverifiedok

Findings 5 total

obspackages/cli/src/commands/work.tsclosed
Defensive `|| []` on guaranteed field: `packages/cli/src/commands/work.ts:809` — `entry.build_concerns || []` is passed to `resolveCalloutPaths` even though `build_concerns` is set to `proof.build_concerns ?? []` two lines above (line 803). The `|| []` is dead code for the new entry path. For existing entries at line 814, `|| []` remains useful since chain data from JSON could theoretically lack the field despite backfill. Harmless but slightly misleading on line 809.
obspackages/cli/src/utils/proofSummary.tsclosed
globSync has no performance guard: `packages/cli/src/utils/proofSummary.ts:345-349` — `globSync('/' + basename, { cwd: projectRoot, ... })` traverses the entire project tree synchronously for each unresolved basename. Called up to 4 times per `writeProofChain` invocation (2 for new entry, 2 for each existing entry). On large monorepos this could be slow. No timeout, no file count limit, no early termination. Currently harmless — callout counts are small — but worth noting if the proof chain grows to dozens of entries with unresolved basenames.
obsclosed
Template assertions rely on tag collision for coverage: Contract assertions A001-A007 target template content. Pre-check reports COVERED because `@ana A001` etc. tags exist in test files from OTHER features. No test in this build actually verifies template frontmatter values or template content. Templates are text-only, so manual verification (which I performed) is the correct approach, but the coverage signal is misleading.
obspackages/cli/templates/.claude/agents/ana-setup.mdclosed
AC6 mentions "test patterns" but template omits them: The spec says "validation schemas and test patterns surfaced in Step 5 draft." The template at `packages/cli/templates/.claude/agents/ana-setup.md:261` says "Include validation patterns and auth setup" — no mention of test patterns. The contract assertion (A006) only checks for "validation" so it passes, but the next spec for setup should consider whether test pattern surfacing belongs in the architecture draft.
obspackages/cli/src/utils/proofSummary.tsclosed
globSync exception if projectRoot is invalid: `packages/cli/src/utils/proofSummary.ts:345` — If `projectRoot` points to a non-existent directory, `globSync` will throw. The callers in `work.ts` pass `projectRoot` from `writeProofChain`'s parameter, which comes from `findProjectRoot()` — a validated path. But `resolveCalloutPaths` doesn't validate its own input. Consistent with the existing pattern (no defensive validation in utility functions), but worth knowing.

Integrity seal

scopesha256:b9106937887df...
contractsha256:e0f767bf92303...
plansha256:57334305a3c8e...
specsha256:8c04cf1f3706d...
build-reportsha256:2ff4cc55a9a77...
verify-reportsha256:547440cc887e1...
audit cmd$ ana proof audit clear-the-deck-2   → all hashes match