daily-fix: living_docs.py bounded index.lock retry
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by /daily 2026-07-30 (problem sweep; miner-6 P10, session 74476b0d / issue #1901).
Goal
Give scripts/living_docs.py's git commit the same bounded index.lock retry the rest of the workflow tooling uses, instead of crashing with a raw traceback on a concurrent-session lock collision.
Workflow gap
- Bug observed: the #1901 Step-0c living-docs link edit's commit failed while a concurrent session held
.git/index.lock;living_docs.pysurfaced Exit code 1 + a Traceback (SystemExit from main), cancelling a parallel tool call. The edits had applied to the working tree; the session recovered by waiting out the lock and committing by explicit path. - Why it is a workflow gap: shared-root lock collisions are routine under fleet concurrency (5 firings across 4 sessions on 07-30); every other committing helper either defers (
task.pypost/plan paths) or bounded-retries — a raw traceback converts a benign contention event into a diagnosis round. - Confidence (emitter): medium (the traceback shape indicates an unhandled CalledProcessError path; unverified hypothesis — verify at plan time that no retry wrapper exists around living_docs.py's commit call)
- verified-at-filing:
grep -c 'index.lock\|retry' scripts/living_docs.py→ 0 (no lock handling or retry present; absence confirmed 2026-07-31 filing time).
Proposed change (candidate diff sketch — refine in planning)
Wrap living_docs.py's commit in the bounded index.lock recipe (retry once, then poll for the lock to clear up to ~60s, per CLAUDE.md § Concurrent repo-root committers), preserving fail-loud on genuine (non-lock) git failures; one pin test.
Scope / surfaces
- Primary target:
scripts/living_docs.py
Constraints / invariants
checkstays read-only; only the writer path gains the retry. Fail-loud preserved for non-lock failures.
Provenance
-
fingerprint: 281f654c5bb9
-
workflow_fix_target: scripts/living_docs.py
-
origin: /daily 2026-07-30 miner-6 P10 (transcript 74476b0d, #1901)