Fix work complete merge strategy
`ana work complete --merge` should work in non-interactive contexts and across repositories with different GitHub merge-method settings. Today it calls `gh pr merge <branch>` without an explicit merge method, so GitHub CLI may prompt interactively or fail immediately when multiple merge methods are enabled. The fix should make the merge method deterministic while preserving zero-config behavior for repositories where GitHub exposes exactly one allowed method.
verdict PASSscore 31 / 31findings 3 (1 risk · 1 debt · 1 obs)duration 1h 6mrejection cycles 0shipped Jun 1, 2026
Pipeline timeline
Intent to proven code in 1h 6m across Think, Plan, Build, and Verify.
Think7m
Plan24m
Build10m
Verify5m
Assertion ledger
31 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | A configured squash strategy merges the pull request with squash and skips repository discovery | verified | ok |
| A002 | A configured squash strategy does not call GitHub to discover allowed merge methods | verified | ok |
| A003 | Every attempted merge includes one explicit merge method | verified | ok |
| A004 | A repository with only merge commits enabled is merged with the merge method | verified | ok |
| A005 | A repository with only squash enabled is merged with the squash method | verified | ok |
| A006 | A repository with only rebase enabled is merged with the rebase method | verified | ok |
| A007 | Multiple allowed merge methods stop the command before merging | verified | ok |
| A008 | Multiple allowed merge methods tell the user how to configure the team default | verified | ok |
Findings 3 total
riskpackages/cli/src/commands/work.ts→ scope
Unsupported mergeStrategy classifier matches broad 'not allowed'/'disabled' text and can steal future policy failures from more specific guidance
debtpackages/cli/tests/commands/config.test.ts→ scope
Diff removes many pre-existing @ana tags and explanatory comments from unrelated tests, weakening future contract traceability
obspackages/cli/tests/commands/work-merge.test.ts→ monitor
A003 is partly satisfied by source inspection because the tagged JSON success test checks clean output, not the merge argv
Integrity seal
scopesha256:f71307c0d5292...
contractsha256:639a665e041c5...
plansha256:57e4b269a309e...
specsha256:5bebe97b21cf3...
build-reportsha256:b27bcac70b82f...
build-datasha256:e1de506083567...
verify-reportsha256:40f39e6933874...
verify-datasha256:4d1557c8ea3d7...
audit cmd$ ana proof audit fix-work-complete-merge-strategy → all hashes match