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 --rebaseat commit-time remain fine. - When
git pull --rebasefails 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 viagit status --short+ your active-work-log claim).
Empirical evidence — 5 race-recoveries in 24h (2026-05-20→21):
- BATCH τ — concurrent BATCH acquirer-dd-package collision; clean re-baseline approach (
git checkout HEADon conflicted files + re-apply at next-available). - 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. - BATCH δ′ —
git reset --harddropped local commits; recovered viagit reflog+git cherry-pick a89e9a8per feedback-reflog-cherry-pick-recovery-pattern. - 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. - 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 --rebaseto 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.