Kind-aware branch prefixes
Branch prefixes are static — one string for all work items. But the system already knows the work type: Ana classifies every scope as `feature`, `fix`, `chore`, or `milestone` (after Scope 1 ships). Teams with git conventions like `fix/`, `feature/`, `chore/` can't express those conventions through Anatomia. The branch always gets whatever single prefix is configured, regardless of what the work actually is. This scope makes `branchPrefix` kind-aware: a map from kind to prefix, so `fix/auth-timeout` and `feature/add-export` happen automatically based on what Ana already knows.
verdict PASSscore 23 / 24findings 8 (1 risk · 3 debt · 4 obs)duration 9h 49mrejection cycles 0shipped May 12, 2026surface cli
Pipeline timeline
Intent to proven code in 9h 49m across Think, Plan, Build, and Verify.
Think67m
Plan16m
Build399m
Verify12m
Assertion ledger
24 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | String-form branch prefix works exactly as before | verified | ok |
| A002 | Map-form config returns the correct prefix for a given kind | verified | ok |
| A003 | Map-form config falls back to feature prefix when no kind is specified | verified | ok |
| A004 | String-form config ignores the kind parameter entirely | verified | ok |
| A005 | Unknown kind falls back to the feature key in the map | verified | ok |
| A006 | Partial map without a feature key falls back to the hardcoded default | verified | ok |
| A007 | Empty map falls back to the hardcoded default | verified | ok |
| A008 | Malformed map values fall back to the hardcoded default | verified | ok |
Findings 8 total
debt→ scope
Contract assertions A013-A019 have no tagged tests — verified by source inspection only
obspackages/cli/tests/utils/git-operations.test.ts→ closed
Contract A001 has no tagged test for this contract — relies on pre-existing test from previous build
riskpackages/cli/src/commands/work.ts→ closed
getWorkBranch glob pattern `*${slug}` may over-match for short slugs (e.g., slug 'fix' matches all branches containing 'fix')
obspackages/cli/src/utils/worktree.ts→ closed
Detached HEAD produces branchName '(unknown)' — rev-list and log commands will fail silently, showing 0 commits and 0 days
debtpackages/cli/src/commands/work.ts→ closed
printExistingWorktree duplicates HEAD-reading logic from getWorktreeInfo — same pattern in two places
+3more findings
Integrity seal
scopesha256:cb2de95e02a1e...
contractsha256:0339b9da5318c...
plansha256:5660d6157d9b5...
specsha256:cdd2087218aa4...
build-reportsha256:83e993a5567ea...
build-datasha256:87aef607de4fc...
verify-reportsha256:99d547dfbee2d...
verify-datasha256:09db2f87fe288...
audit cmd$ ana proof audit kind-aware-branch-prefixes → all hashes match