You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
a gitlink committed by hand: the doctor's pins row and validate-pins.py name no command, though AGENTS.md says a finding names its fix; neither bump-leg.py (keep the move) nor the restore (undo it) is offered #478
(lane openRepoShape-3, 2026-10-12T21:54Z) Found by lane 3's v1.0.0 acceptance pass: an assistant following AGENTS.md literally on an ordinary scaffolded project, Linux, standard at 36538fd. Lane 3 claims it.
What is wrong. AGENTS.md's doctor section, point 3, says: "A FINDING names its fix, and you run THAT. Every one carries the exact next command — update-shape.py apply …, make bootstrap, bump-leg.py …, the project's own validator" (AGENTS.md:226-228). But no row of the doctor, and no line of validate-pins.py, ever names bump-leg.py. So the most ordinary way a person breaks the leg invariant dead-ends: they move a leg by hand and commit the gitlink.
Reproduction:
On a scaffolded, bootstrapped project, run git -C spec pull (the leg's remote has a new commit).
In the root: git add spec && git commit -m 'take the new spec'.
shape-doctor.py --root . exits 1 with DRIFTED. The pins row is FINDING pin-gitlink-mismatch, and its next line is "run validate-pins.py; it names the repair".
validate-pins.py prints the finding and THE LOCKSTEP RULE, and no command.
The repair exists and works: bump-leg.py --root . --leg spec --to <the gitlink's commit>, after which the doctor says COMPLIANT. The alternative repair is to put the gitlink back to the pin, git -C <root> submodule update --init --checkout -- spec followed by committing the old gitlink. Which of the two is wanted is the person's call: keep the move, or undo it.
Proposed fix.
For pin-gitlink-mismatch, the doctor's pins row names both commands, exactly as they would be pasted:
keep the move: the bump-leg.py … --to <gitlink commit> command, which also moves the pin and the workflow @<sha> in one commit;
undo it: the commands that restore the pinned gitlink.
validate-pins.py's lockstep message names the same two.
Tests: the doctor row and the validator name both commands for a hand-committed gitlink; running the bump command turns the doctor COMPLIANT; byte-identical output elsewhere.
Why v1.0.0. A core procedure's documented promise ("a finding names its fix") fails on the most ordinary drift a leg can have. Proposed P2.
CLAIMED — lane openRepoShape-3, session 20b4ae33-927d-4b5d-a856-e7e467ea11b2@Eagle, 2026-10-12T22:03:48Z, for #478
Logged in lanes/log/openRepoShape-3.md at a2b1cca6f005ee8fac70c5080e8bfdc39f23f41c.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#478:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#478"`, kept where the row or its body names `#478`:
none
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `478` as a whole token:
none
Activity
brettheap commentedon Oct 12, 2026
CLAIMED — lane openRepoShape-3, session 20b4ae33-927d-4b5d-a856-e7e467ea11b2@Eagle, 2026-10-12T22:03:48Z, for #478
Logged in
lanes/log/openRepoShape-3.mdata2b1cca6f005ee8fac70c5080e8bfdc39f23f41c.The three reads (lane-collision-protocol Rule 1):
shape-doctor.py and validate-pins.py: a gitlink off its pin is offere…
shape-doctor.py and validate-pins.py: a gitlink that is not its pin i…
Merge origin/main cc8f2da into fix/doctor-next-is-only-a-command, after
Merge main cc8f2da into fix/485-doctor-conflicted-pin-and-copy, and #485
Merge main cc8f2da into fix/adopt-plan-quote-yaml-keywords (#181)
validate-pins.py and validate-family.py: THE LOCKSTEP RULE closes the…
validate-pins.py and shape-doctor.py: one leg's gitlink off its pin b…