When concurrent edits cross 3+ sessions on shared arch-state §15 + ledger, prefer worktree-isolation OR --merge (NOT --rebase) for the bookkeeping commit.

Why: The 2026-05-20→21 5-way concurrent-batch burst produced 5 race-condition recoveries in 24h. Pattern: each session’s launch-prompt anticipated next-available A-NNN at authoring time (e.g., A-234) but by commit-time another session had landed first (e.g., A-234 taken by sibling) — forcing renumber + clean re-baseline. Worktree-isolation in /tmp/batch-<name> eliminates the in-tree race-condition surface: each session works on a fresh clone of origin/main clean baseline; collisions only surface at push-time as a rejected push (which is recoverable via git pull --rebase + renumber).

How to apply:

  • IF you are about to start a long autopilot run (>30 min) AND you know 2+ other autopilot sessions are likely to commit to docs-strategy in the same window → create worktree in /tmp/batch-<name>:
    git worktree add /tmp/batch-<name> origin/main
    cd /tmp/batch-<name>
    # do your work; arch-state §15 + ledger edits happen in the worktree
    # at push-time: git pull --rebase origin main (handle any collisions)
    # then git push origin main
    cd ~/testatetech/docs-strategy
    git worktree remove /tmp/batch-<name>
    
  • For shorter autopilot runs (<30 min) OR solo execution (no concurrent sessions), in-tree edits + git pull --rebase at commit-time remain fine.
  • When git pull --rebase fails due to untracked-file collision (e.g., another session’s audit-records subdir already exists locally), rm -rf <stale-untracked-path> is safe IF you’ve confirmed the path is not yours (compare via git status --short + your active-work-log claim).

Empirical evidence — 5 race-recoveries in 24h (2026-05-20→21):

  1. BATCH τ — concurrent BATCH acquirer-dd-package collision; clean re-baseline approach (git checkout HEAD on conflicted files + re-apply at next-available).
  2. BATCH acquirer-dd-package — 3-way commit-time race (BATCH q-046-substrate + BATCH OASIS evidence-pack both landed during synthesis); worktree-isolation at /tmp/batch-acquirer-dd + rebase + renumber from A-229+task-116 → final A-231+task-118.
  3. BATCH δ′ — git reset --hard dropped local commits; recovered via git reflog + git cherry-pick a89e9a8 per feedback-reflog-cherry-pick-recovery-pattern.
  4. BATCH τ′ — main working-tree blocked by BATCH δ′ unresolved rebase; escape via worktree at /tmp/batch-tau-prime-docs-strategy; bumped to v4.28 + A-236 next-available.
  5. BATCH π″ — 3-way collision: initial v4.28+A-234+task-121 → BATCH ω′ + BATCH δ′ landed (v4.28+A-235); first re-baseline to v4.29+A-236+task-123; SECOND mid-flight collision with BATCH τ′ which also took v4.29+A-236+task-123; final re-baseline via git pull --rebase to v4.30+A-237+task-124. Plus mid-flight per-action file restoration via feedback-verify-after-author-via-directory-ls.

Pattern-stability: all 5 race-condition recoveries completed cleanly net of the cherry-pick recovery in #3. No work lost. Discipline mature.

Anti-pattern: running 4+ concurrent autopilot sessions on the same shared state files (arch-state §15 + ledger) without worktree-isolation. The collision surface compounds geometrically with session count — at 5 sessions you can expect multiple 3-way races per session. See companion feedback-concurrent-burst-race-condition-count-24h for the broader project-state observation.

Routing: loaded via MEMORY.md index. Fires during autopilot launch-prompt authoring + execution.