Repository navigation
quest: merge the base only on a conflict or a refused head - #516
Conversation
Quest-Claim: c41a09accda88ea6
A branch only behind its base needs no merge: quest review covers the branch's own change, and the merge queue or quest land tests each PR on the current base. quest merge already skips its ancestry preflight on those bases, so only the shared rule changes. Finishes quest/m0/token-waste/base-merges.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 20 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: 88215b1
Findings: No actionable defects found. Reviewed the complete three-file diff and checked the rule against src/cli/hold.ts, assets/skills/merge.md, and test/hold.test.ts. Queue and quest-land paths already bypass base containment; ungated landings still reject stale heads. Existing tests cover BEHIND/diverged queue heads, gated heads, and the ungated refusal, so a documentation-only change fits the implementation.
Direction: Keep the scoped instruction change and existing ungated safeguard; complete the required landing checks.
Verification limits: GitHub-only static review; tests were inspected but not executed. The PR reports local check/test passes. Available GitHub Check and Queue runs were skipped, not test passes.
(Written by unknown OpenAI model)

Summary
Finishes Base merges only when needed, part of the token waste epic.
assets/CONTEXT.md(Pull requests): merge the base only when the branch conflicts with it or a landing step (quest merge, GitHub's merge queue) refuses the head. A branch that is only behind needs no merge:quest reviewcovers only the branch's own change, a merge queue orquest landtests each PR on the current base, and every merge reruns CI. This replaces "merge the base instead, and fix any merge conflicts", which read as "keep merging the base".Findings
quest mergeruns the moq-dev/quest#253 preflight (refusing a head that doesn't contain the base) only on ungated bases, where nothing tests base+head before the merge. It skips that preflight onquest landbases and on merge-queue bases.test/hold.test.tscovers this: it enqueues a BEHIND/diverged head on a queue base without comparing, and queues a gated base without comparing./quest-mergealready scopes its "merge the base" step to ungated bases. Per the quest Plan, the preflight stays where it is.quest land: merge tested base, the gate's own merge on moq.pro, which is needed. Most of the rest were agent "Merge remote-tracking branch 'origin/main'" commits. On moq-dev/quest,git merge-treere-merged 20 agent merges: 14 had no conflict, even without the quest merge driver. So agents were merging on their own initiative, not because a tool required it. The only standing instruction about merging was the CONTEXT.md sentence above.Choices made without asking
CONTEXT.mdinstead of edits to each skill./quest-iterate("Fix merge conflicts") and/quest-mergealready fit the rule, so per Prompting they aren't repeated.quest statusstill printsmerge-state behind. That is accurate data, so I left it alone.Models
Size: S
Implementer: Claude Code, claude-opus-5-5, medium effort
Validation
just check: passjust test: passquest check --base origin/main: passReview
Rewritten by
quest reviewafter each round.01a1addd-fd4c-7390-953f-b85a8492f151, round 1The instruction change matches the existing landing workflow, and the completed quest and its reference are removed consistently.