- CONVENTIONAL-COMMITS.md: vendored spec (v1.0.0); CLAUDE.md requires agent-written commits to follow it - tasks 0002-0020: remaining task breakdown of the gitea-axi spec (0019 reframed around the three-tier test taxonomy: unit, integration, end-to-end) - spec, CONTEXT.md, and ADRs 0006/0007/0011: pending design refinements from the planning sessions
1.9 KiB
spec, blocked-by
| spec | blocked-by |
|---|---|
| gitea-axi | 0001-scaffold-and-issue-list-core |
What to build
pr merge and pr update-branch.
pr merge <n> supports --method with all six Gitea methods (merge, squash, rebase, rebase-merge, fast-forward-only, manually-merged), the three common-method shorthands (--merge, --squash, --rebase), --auto, --delete-branch, --body/--body-file, --subject, and --merge-commit-id.
--merge-commit-id is required with --method manually-merged and rejected with any other method — both violations are VALIDATION_ERROR before any API call, as are conflicting shorthands.
Idempotent: an already-merged PR returns pull_request: { number, state: "merged", merged_by, merged_at } without calling the merge API.
Merge-blocked conditions surface through the standard 405/409 → VALIDATION_ERROR mapping with the server's message and remediation help lines.
pr update-branch <n> merges the base branch into the PR head via the update endpoint with --style <merge|rebase> (default merge).
Acceptance criteria
--methodaccepts all six methods and the shorthands map to their methods; conflicting or duplicate action flags yieldVALIDATION_ERROR(exit 2) before any API call--merge-commit-idwithoutmanually-merged, ormanually-mergedwithout--merge-commit-id, both yieldVALIDATION_ERRORlocally- Successful merge outputs
merged: { number, status: "ok", method } - An already-merged PR short-circuits to the entity block with
merged_byandmerged_at, exit 0, no merge API call - A 405 not-mergeable response surfaces as
VALIDATION_ERRORwith help suggestingpr update-branch <n>orpr checkout <n> pr update-branch <n> --style rebasecalls the update endpoint with the style param and outputsupdated: { number, status: "ok" }- Fixture-server tests cover each method, the local validations, the idempotent no-op, and the 405/409 mappings