docs(memory): decompose dedb3c7 from blob #4136#4323
Conversation
…ing peer-Otto saturation — 15s natural clear (0007Z empirical anchor, sub-case 6 candidate) Empirical pattern from this session's 0007Z commit: `git add` hit `.git/index.lock: File exists` because peer Otto was mid-commit; 15s sleep cleared the lock naturally; retry succeeded with tree-canary at 53/53 (no corruption). Discipline: under multi-agent saturation (Lior 3 procs + 5 claude-code procs this session), treat `.git/index.lock` as transient peer-mid-commit signal — wait then retry. Force-removal can corrupt peer's in-flight commit (peer's git process is still relying on the lock to serialize index writes). Saturation-ceiling sub-case 6 candidate (extending the 5-case taxonomy in claim-acquire-before-worktree-work.md). Single-anchor empirical; threshold for rule extension is 2-3 more session anchors. Until then, this memo is the wait-time substrate; future-Otto reads via skill router + composes_with pointers. Pre-empt-at-#5 substrate (counter-with-escalation discipline; named bounded dep was rate-reset ~11min). Concrete artifact (memo written + committed + pushed); counter reset. Composes with: claim-acquire-before-worktree-work.md, zeta-expected-branch.md (race-window-caveat), codeql-no-source-on-docs-only-pr-is-broken-commit-canary.md (Lior-active-means-no-worktree canary), refresh-world-model-poll-pr-gate.md (pure-git tier compatible). Co-Authored-By: Claude <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Pull request overview
This PR decomposes a single commit from the larger session-arc (#4136) by landing an independent memory/feedback_*.md memo documenting an observed .git/index.lock contention pattern during multi-agent saturation, with a recommended “wait then retry” mitigation.
Changes:
- Added a new feedback memory capturing an empirical sequence where
git addfails on.git/index.lock, then succeeds after waiting. - Documented a decision tree for distinguishing transient peer-in-flight locks from orphaned locks (crash recovery path).
| description: "Empirical pattern observed 2026-05-18T00:08Z under Lior-3-procs + claude-code-5-procs saturation: a primary-worktree `git add` hit `.git/index.lock: File exists` because peer Otto was mid-commit; a 15-second `sleep` cleared the lock naturally (peer commit finished, lock auto-removed), and a retry of the same `git add` invocation succeeded with no further intervention. Discipline: under multi-Otto saturation, treat `index.lock` as a transient peer-mid-commit signal — wait then retry. Do NOT `rm -f .git/index.lock` reflexively; force-removal can corrupt peer's in-flight commit (peer's git process is still relying on the lock to serialize index writes). The saturation-ceiling sub-case taxonomy in `.claude/rules/claim-acquire-before-worktree-work.md` covers worktree-creation contention + branch-name collision + switch-while-WIP + sidetick-pruned-race + peer-side-destructive-git, but does NOT yet explicitly cover this case (`.git/index.lock` at `git add` time in primary worktree). This memo is the empirical anchor for a future rule extension." | ||
| type: feedback | ||
| created: 2026-05-18 | ||
| tags: [git-index-lock, peer-otto-saturation, wait-then-retry-beats-force-remove, saturation-ceiling-sub-case-6-candidate, claim-acquire-composition, primary-worktree, otto-cli, 2026-05-18, 0007z-cold-boot-session] | ||
| session: otto-cli cold-boot 2026-05-18 sentinel `16dda3a7` | ||
| composes_with: | ||
| - .claude/rules/claim-acquire-before-worktree-work.md (saturation-ceiling sub-case taxonomy candidate extension) | ||
| - .claude/rules/zeta-expected-branch.md (race-window-caveat, primary-worktree contention) | ||
| - .claude/rules/codeql-no-source-on-docs-only-pr-is-broken-commit-canary.md (Lior-active-means-no-worktree-creation canary) | ||
| - .claude/rules/refresh-world-model-poll-pr-gate.md (operational-tier discipline; this happened in pure-git tier) |
| ### The sequence | ||
|
|
||
| ``` | ||
| $ git add docs/hygiene-history/ticks/2026/05/18/0007Z.md \ |
| --- | ||
| name: git_index_lock_wait_then_retry_beats_force_remove_during_peer_otto_saturation_15s_natural_clear_otto_cli_2026_05_18 | ||
| description: "Empirical pattern observed 2026-05-18T00:08Z under Lior-3-procs + claude-code-5-procs saturation: a primary-worktree `git add` hit `.git/index.lock: File exists` because peer Otto was mid-commit; a 15-second `sleep` cleared the lock naturally (peer commit finished, lock auto-removed), and a retry of the same `git add` invocation succeeded with no further intervention. Discipline: under multi-Otto saturation, treat `index.lock` as a transient peer-mid-commit signal — wait then retry. Do NOT `rm -f .git/index.lock` reflexively; force-removal can corrupt peer's in-flight commit (peer's git process is still relying on the lock to serialize index writes). The saturation-ceiling sub-case taxonomy in `.claude/rules/claim-acquire-before-worktree-work.md` covers worktree-creation contention + branch-name collision + switch-while-WIP + sidetick-pruned-race + peer-side-destructive-git, but does NOT yet explicitly cover this case (`.git/index.lock` at `git add` time in primary worktree). This memo is the empirical anchor for a future rule extension." | ||
| type: feedback | ||
| created: 2026-05-18 | ||
| tags: [git-index-lock, peer-otto-saturation, wait-then-retry-beats-force-remove, saturation-ceiling-sub-case-6-candidate, claim-acquire-composition, primary-worktree, otto-cli, 2026-05-18, 0007z-cold-boot-session] |
|
Closing as redundant — byte-identical duplicate of #4320. Evidence: Both PRs add the same file Root cause: Multi-persona split-brain on the same decomposition task Substrate-honest framing: The Copilot finding on this PR that The substantive review threads on #4320 (memory schema markers, frontmatter standard, sub-case 5 cross-reference to Composes with 🤖 Generated with Claude Code |
Maji anti-entropy routine: Decomposing blob PR #4136. Peeled off commit dedb3c7 (index-lock wait-then-retry memo) for independent review. The remainder stays on the backlog for iterative decomposition.