ux(prs/finish): mergeability is invisible on the typed surface — get hides mergeable/merge_base, finish's 405 advice says retry when the PR is flagged unmergeable #22
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#22
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gaps (hit live, 2026-07-10, an earlier PR)
madt_prs action=getformatted output omits merge-relevant state.mergeable,merged,merge_base, andchanged_files/additions/deletionsare exactly what an agent needs when a merge fails, but the formatted view doesn't show them — the only routes areraw_json=true(a multi-KB dump with two full repo objects embedded) or falling back tomadt_api_callwithjq. Both are the escape hatch the typed tool should make unnecessary.madt_finish's merge-failure advice is blind to WHY. On Gitea's 405 "Please try again later" it retries 3× then says "re-run finish or merge with 'madtea pr merge'" — but in today's case the PR was sitting atmergeable: false(stale async recompute after a fresh push). Re-running finish just re-hits the same 405. The failure handler should fetch the PR's mergeable state and say which situation you're in: still-computing (retry is right), genuinely conflicted (retry is wrong — rebase/resolve first), or server-side flake.Ask
madt_prs action=get: add a merge-state line to the formatted output (mergeable / merged / merge_base / changed_files +adds −dels).madt_finishmerge step: on merge failure, include the PR's current mergeable state in the error and tailor the advice to it.raw_jsonPR payloads dropping the two embedded full repo objects (base.repo/head.repo) — they dominate the payload and an agent almost never wants them.