2.2 KiB
2.2 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec |
|---|---|---|---|---|---|---|
| 01-backend-queue-aware-merge | Backend queue-aware merge | done | 1 | plan.md | ../../specs/integrations/requirements/github-pr-merge-queue.md |
Task 01: Backend Queue-Aware Merge
Inputs
docs/specs/integrations/requirements/github-pr-merge-queue.mddocs/plans/github-pr-merge-queue/plan.mdapps/backend/AGENTS.md
Likely Files
apps/backend/internal/github/client.goapps/backend/internal/github/gh_client.goapps/backend/internal/github/pat_client.goapps/backend/internal/github/mock_client.goapps/backend/internal/github/noop_client.goapps/backend/internal/github/service_pr.goapps/backend/internal/github/controller.goapps/backend/internal/github/graphql.goapps/backend/internal/github/models.goapps/backend/internal/github/store.goapps/backend/internal/github/service_pr_watch.goapps/backend/internal/task/statussummary/projector_pr.go- Their focused
*_test.gofiles
Acceptance
- GitHub merge requests use the asynchronous endpoint with
merge_action=defaultand preserve allowed merge-method selection. - Provider responses normalize to explicit
mergedorqueuedoutcomes, including already-queued idempotency, and unknown results fail closed. - The workspace-scoped HTTP endpoint returns the normalized outcome while retaining auth routing, cache invalidation, validation, and error mapping.
- The existing GraphQL status sync observes queue state, one-based position, and optional estimate; persistence preserves queue-unaware reads, clears authoritative exits and terminal states, and the bounded task projection exposes the queued state with multi-PR attention ranking.
Verification
make -C apps/backend test ARGS='./internal/github/...'
Dependencies And Risks
- No task dependency.
- GitHub's asynchronous API response shapes and HTTP statuses must be captured from the official contract rather than inferred from the synchronous API.
- Both PAT and
ghCLI transports must remain behaviorally identical.
Results
make -C apps/backend test ARGS='./internal/github/...'passed (the Make target executed the full backendgo test -tags fts5 ./...suite).