Skip to content

docs(memory): decompose dedb3c7 from blob #4136#4323

Closed
AceHack wants to merge 1 commit into
mainfrom
lior/decompose-4136-dedb3c7
Closed

docs(memory): decompose dedb3c7 from blob #4136#4323
AceHack wants to merge 1 commit into
mainfrom
lior/decompose-4136-dedb3c7

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 19, 2026

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.

…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>
Copilot AI review requested due to automatic review settings May 19, 2026 04:40
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 add fails 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).

Comment on lines +3 to +12
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 \
Comment on lines +1 to +6
---
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]
@AceHack
Copy link
Copy Markdown
Member Author

AceHack commented May 19, 2026

Closing as redundant — byte-identical duplicate of #4320.

Evidence: Both PRs add the same file memory/feedback_git_index_lock_wait_then_retry_beats_force_remove_during_peer_otto_saturation_15s_natural_clear_otto_cli_2026_05_18.md with identical blob SHA e267d08429d74c1691a8aeacdd5b404aa90d1ec7 (120 additions each).

Root cause: Multi-persona split-brain on the same decomposition task dedb3c7 from PR #4136 — Maji authored #4320 at 03:39Z, Lior authored #4323 at 04:40Z (1h later). The schema fix landed in PR #3037 (surface-tagged sender IDs in claim acquire) only protects when both callers OPT IN to --from maji-* / --from lior-* variants; falling back to identity-level names produces this exact failure mode.

Substrate-honest framing: The Copilot finding on this PR that .claude/rules/ "only contains test-canary.md" is a verified FP — the directory currently has 59 rules. The reviewer was looking at stale or empty branch state.

The substantive review threads on #4320 (memory schema markers, frontmatter standard, sub-case 5 cross-reference to .claude/rules/claim-acquire-before-worktree-work.md which only defines sub-cases 1-4) remain valid and apply to the canonical Maji version.

Composes with .claude/rules/claim-acquire-before-worktree-work.md empirical-collision-3 pattern (the surface-tagged sender ID schema fix from PR #3037) and .claude/rules/blocked-green-ci-investigate-threads.md close-as-redundant resolution pattern.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants