Proof Promote
The developer wants to turn a recurring finding into a permanent skill rule. `ana proof promote` takes a finding ID and a target skill, appends the rule text to the skill file, transitions the finding to `promoted` status, and commits the change. The command handles plumbing — git workflow, status transition, dashboard regeneration, skill file mutation. The caller provides the judgment: which skill, and optionally what the rule should say via `--text`.
verdict PASSscore 30 / 30findings 5 (0 risk · 2 debt · 3 obs)duration 2h 54mrejection cycles 1shipped Apr 30, 2026surface cli
Pipeline timeline
Intent to proven code in 2h 54m across Think, Plan, Build, and Verify.
Think10m
Plan10m
Build155m
Verify9m
Assertion ledger
30 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Promoting a finding changes its status to promoted in the proof chain | verified | ok |
| A002 | Promoting a finding records which skill file received the rule | verified | ok |
| A003 | Promoting a finding regenerates the proof chain dashboard | verified | ok |
| A004 | Promoting a finding creates a git commit with the correct message format | verified | ok |
| A005 | Without custom text, the finding summary becomes the skill rule | verified | ok |
| A006 | Custom text overrides the finding summary in the skill rule | verified | ok |
| A007 | JSON output shows the actual rule text that was written | verified | ok |
| A008 | Omitting the skill flag produces an error listing available skills | verified | ok |
Findings 5 total
obspackages/cli/src/commands/proof.ts→ closed
rule_text includes markdown bullet prefix '- ' in JSON output
debtpackages/cli/src/commands/proof.ts→ closed
options.skill typed as non-optional string but can be undefined after requiredOption→option change
obspackages/cli/tests/commands/proof.test.ts→ closed
A006 test passes text with shell-escaped double quotes wrapping — tests quoted-string path not raw text
obs.ana/proof_chain.json→ closed
Proof chain JSON cosmetic diff from unicode em-dash normalization still present
debtpackages/cli/src/commands/proof.ts→ closed
No summary truncation for promoted finding display — long summaries break terminal formatting
Integrity seal
scopesha256:576018ba148cd...
contractsha256:ab254390fe81a...
plansha256:e158ac015678a...
specsha256:63c1bd6da7ec4...
build-reportsha256:16562be73ac19...
build-datasha256:38f352b66c792...
verify-reportsha256:9627b7339a2b1...
verify-datasha256:d9d88c033ce87...
audit cmd$ ana proof audit proof-promote → all hashes match