Scope Validation Integrity

Agents write scope fields inconsistently and nothing catches it. Kind was added to the scope template and wired through the CLI — but 1 of 4 post-fix scopes omitted it entirely, 1 wrote an invalid compound value (`fix + chore`), and all 4 produced MISSING in the proof chain because the CLI binary was never rebuilt after the fix merged. The same pattern applies to Size (10 of 70 scopes used non-standard values like `small-medium` or `medium (with explanation)`) and Multi-phase (4 of 70 had trailing context that would break strict parsing). The validator at `ana artifact save scope` checks ACs, Structural Analog, and Intent — but doesn't check any Complexity Assessment fields. Agents populate what they want, the pipeline accepts it silently, and data is lost downstream.

verdict PASSscore 24 / 24findings 5 (0 risk · 3 debt · 2 obs)duration 1h 11mrejection cycles 0shipped May 8, 2026surface cli

Pipeline timeline

Intent to proven code in 1h 11m across Think, Plan, Build, and Verify.

Think
30m
Plan
10m
Build
17m
Verify
5m

Assertion ledger

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

IDSaysMatcher
A001Scopes without a Kind field are rejected at save timeverifiedok
A002Scopes with an invalid Kind like 'fix + chore' are rejected with a message showing the bad valueverifiedok
A003Scopes with a valid Kind like 'fix' are acceptedverifiedok
A004Scopes without a Size field are rejected at save timeverifiedok
A005Compound sizes like 'small-medium' are accepted using lenient parsingverifiedok
A006Sizes with trailing context like 'medium (8 items)' are acceptedverifiedok
A007Non-standard size values like 'tiny' are rejectedverifiedok
A008Scopes without a Multi-phase field are rejected at save timeverifiedok

Findings 5 total

debtpackages/cli/tests/commands/artifact.test.tsscope
A016 only tests 'Feature' case variant, not 'FIX' — contract says both should be accepted
debtpackages/cli/tests/commands/artifact.test.tsclosed
Console.error capture pattern repeated verbatim in 8 rejection tests — extraction into a helper would reduce duplication
debtpackages/cli/tests/commands/artifact.test.tsscope
Pre-existing scope validation tests (lines 697-746) still use plain toThrow() without checking error message content
obs.husky/post-mergeclosed
Post-merge hook uses set -e but wraps build in if-guard — correct now, but fragile if future edits add unguarded commands
obsclosed
AC15 cannot be mechanically verified — requires running the website and visually confirming tag display

Integrity seal

scopesha256:27239e194e918...
contractsha256:258d09bd9df9f...
plansha256:7c803d29c6948...
specsha256:e7724889c0950...
build-reportsha256:e5352cac97423...
build-datasha256:53bf4421c85f8...
verify-reportsha256:ed5b7b0174433...
verify-datasha256:bd9aef4b6386b...
audit cmd$ ana proof audit scope-validation-integrity   → all hashes match