LearnNewsExamplesServices
Frontmatter
id11307
titleAdd merge-conflict-safe lane audit to post-review-pickup discipline
stateClosed
labels
enhancementaiarchitecturemodel-experience
assigneesneo-opus-4-7
createdAtMay 13, 2026, 3:08 PM
updatedAtMay 20, 2026, 8:35 PM
githubUrlhttps://github.com/neomjs/neo/issues/11307
authorneo-opus-4-7
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 20, 2026, 8:35 PM

Add merge-conflict-safe lane audit to post-review-pickup discipline

Closedenhancementaiarchitecturemodel-experience
neo-opus-4-7
neo-opus-4-7 commented on May 13, 2026, 3:08 PM

Friction Source

Surfaced 2026-05-13 by @tobiu after observing swarm PR distribution skew (Gemini 5 / Opus 2 / GPT 1 across 8 same-session PRs):

"checking if there are lanes without a risk for merge conflicts would be smarter. so a skills double-check feels needed."

Empirical anchor (same session, 2026-05-13):

  • 8 swarm PRs open simultaneously
  • GPT self-parked at 11:50Z with: "I remain available for a separate lane after any operator merge events settle"
  • Distribution skew: Opus + Gemini kept self-claiming lanes; GPT chose to wait
  • Root: existing post-review-pickup substrate covers halt vs next-lane but is silent on the "wait for conditions to settle" soft-park intermediate state

The Substrate Audit (V-B-A 2026-05-13)

Existing skills DO encode self-select-don't-park discipline:

  • .agents/skills/post-review-pickup/references/post-review-pickup-workflow.md §4 — "Legitimate Halt States" criterion 1 requires explicit backlog self-survey; §4.5 names v13 project board (300+ items) as the substrate-evolution-flywheel supply
  • .agents/skills/peer-role/references/peer-role-mode.md line 48 — "Self-select lanes; resist 'wait for assignment'"; line 98 — "Discipline-dressed-deference" anti-pattern

The MISSING dimension is merge-conflict-safe lane audit — the discipline of checking touched-files-in-open-PRs before claiming a next lane, to avoid creating a PR that will conflict with peer in-flight work.

The Problem

Without merge-conflict-safe audit, two failure modes recur:

  1. Soft-park as cover — peer chooses to wait for "merge events to settle" because it's safer than claiming a potentially-conflicting lane. The discipline says "self-select" but is silent on how to select safely under high open-PR count.
  2. Branch coupling — peer claims a lane, branches off dev cleanly, then later discovers a peer's pending PR touches overlapping files, creating cascading conflict cycles (empirical: PR #11299 substrate-coupling from earlier session — feedback_branch_from_origin_dev_explicitly memory).

The Architectural Reality

The audit is mechanical:

gh pr list --state open --json number,files --jq '[.[] | .files[]?.path] | unique'

This produces the "touched-by-open-PRs" file-set. Any candidate lane that:

  • Modifies files in this set → high merge-conflict risk → reconsider lane choice
  • Touches files NOT in this set → low merge-conflict risk → safe self-claim

For ticket-level lanes (no candidate PR diff yet), the heuristic is "tickets whose AC names files in the touched-by-open-PRs set" = high-risk lane.

The Fix

Add a new section to .agents/skills/post-review-pickup/references/post-review-pickup-workflow.md between current §4 (Legitimate Halt States) and §5 (Integration Points):

<h2 class="neo-h2" data-record-id="7">4.5 Merge-Conflict-Safe Lane Audit (pre-selection discipline)</h2>

Before claiming the next lane via §2 Reviewer Pickup Matrix or §3 Author Pickup Matrix, run:

\`\`\`bash
gh pr list --state open --json number,files --jq '[.[] | .files[]?.path] | unique'
\`\`\`

This produces the touched-by-open-PRs file-set. Filter your candidate lanes:

- **Low-risk lane:** touches files NOT in the open-PR set → safe to self-claim
- **High-risk lane:** modifies files IN the open-PR set → reconsider; prefer a parallel-safe lane to keep merge cadence clean

This audit short-circuits the "soft-park / wait for merge events" anti-pattern: instead of waiting, peer scans the touch-file landscape and finds an orthogonal lane.

**Exception:** if every candidate lane is high-risk, the legitimate-halt criterion 2 ("Every candidate lane is blocked on human-only action") DOES apply — but the survey + finding must be named in the halt declaration per §4.

Also add to .agents/skills/peer-role/references/peer-role-mode.md near line 48 (Self-select lanes section):

**Merge-conflict-safe audit:** when ≥3 peer PRs are open simultaneously, before claiming a lane, run the touched-by-open-PRs audit (see `post-review-pickup-workflow.md §4.5`) and prefer orthogonal lanes. Avoid soft-parking ("I'll wait for merges to settle") — that's discipline-dressed-deference per §98.

Acceptance Criteria

  • (AC1) post-review-pickup-workflow.md §4.5 added with the merge-conflict-safe audit shell command + low-risk/high-risk filter logic
  • (AC2) peer-role-mode.md Self-select-lanes section gains 1-2 line cross-reference to §4.5 audit + names soft-park as discipline-dressed-deference variant
  • (AC3) pull-request-workflow.md §2.3.1 (Branch Freshness Check) optionally cross-refs §4.5 so authors verify lane-selection before first commit (not just first push)
  • (AC4) Anti-pattern row added to post-review-pickup-workflow.md §6: "Soft-park ('I'll claim a lane later, once merges settle') without running §4.5 audit first" — names this as a discipline-dressed-deference variant per AGENTS.md §15.6

Out of Scope

  • Mechanical CI enforcement of the audit — peer agency intent; CI rejection of "conflicting branches" before review would over-rotate
  • Automated lane-suggestion engine — substrate is human-judgment + tool-output, not auto-routing
  • Lane reassignment of in-flight PRs that already conflict — handled organically via rebase or human-mediated

Avoided Traps

  • Forcing the audit into AGENTS.md §21 routing table — the audit is post-review-pickup-skill-internal, not a new top-level skill trigger
  • Hardcoding "≥3 open PRs" threshold — sometimes 1 open PR is enough to gate; the discipline should be "if any open PR" with author judgment on cost/benefit
  • Adding the audit to ticket-intake — too early; ticket-intake claims a ticket before any branch exists. Merge-conflict-safe applies at branch-from-dev moment, which is post-review-pickup territory
  • Substrate accretion bypass: this PR is net-expansion to always-loaded substrate. Per AGENTS.md §13 + pull-request-workflow.md §1.1, future-decay-mitigation rationale must be cited in PR body (preventive against future GPT-soft-park-class friction)

Related

  • Origin friction: @tobiu observation 2026-05-13 during 8-PR swarm distribution audit
  • Empirical anchor: @neo-gpt soft-park A2A 2026-05-13T11:50:36Z
  • Existing substrate (the audit gap): .agents/skills/post-review-pickup/references/post-review-pickup-workflow.md, .agents/skills/peer-role/references/peer-role-mode.md
  • Pattern precedent: feedback_branch_from_origin_dev_explicitly memory + PR #11299 substrate-coupling incident
tobiu closed this issue on May 20, 2026, 8:35 PM