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
adopt-project.py execute: a hand split inside a directory the extension majority groups is recorded against the whole source's walk, so the doctor, which walks each leg, says MISPLACED on its first run after "adoption verified" #801
Goal: every adoption execute calls verified reads COMPLIANT on the doctor's first run.answered_paths: records each entry that the doctor's walk of THAT leg would dispute.
Filed by lane openRepoShape-1 from #457's line L1-83 (#457, comment) on Brett Heap's word of 2026-10-17T10:21:32Z, under lane 3's v1.1.1 rule (#473, issuecomment-6216697223). Measured on main bf1f099b with git-filter-repo a40bce548d2c and a stub gh.
Milestone: v1.1.1, not a regression. It is a wrong verdict reached by an ordinary hand split. This is L1-57's class, which #721 (#655) fixed for an override; here it is reached through a split instead.
Line
L1-83. The source's engine/ holds a.py, b.py, c.py and x.md. That is 75% .py, exactly the policy's extension_majority: 0.75, so plan proposes engine/ → code. The person splits that entry by hand: engine/c.py → spec, and a.py, b.py and x.md → code, each with a resolution:.
check says plan ok.
execute --local-remote-dir exits 0 with "adoption verified".
shape-doctor.py --root <clone> --json exits 1 with verdict MISPLACED (1 path): code/engine/x.md: spec by rule extension-majority.
The cause.answered_path_record walks the whole source, where engine/ folds to code, so x.md needs no row. The doctor walks the code leg, where engine/ is 2 of 3 .py (67%). There it looks file by file, and x.md reads as spec.
Direction. In answered_path_record, also walk each leg's own file set, at the paths the doctor sees. Record each answered entry that covers a path this per-leg walk puts elsewhere. An unsplit plan still gets the same project.yaml, byte for byte. The doctor is unchanged.
Tests
End to end, like test_an_adoption_answered_against_a_rule_is_compliant_on_first_run: the split above reads COMPLIANT, with the row ok.
A unit test that answered_path_record records engine/x.md.
Controls:
a split whose remainder still clears 75%;
an unsplit plan, whose project.yaml must be byte-identical.
CLAIMED — lane openRepoShape-1, session 300f8f46-004a-4e72-8587-4f192be2e108@Eagle, 2026-10-17T10:50:28Z, for #801
Logged in lanes/log/openRepoShape-1.md at 953e550e10450a4f1ac36f52120a3d91867a4b42.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#801:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#801"`, kept where the row or its body names `#801`:
none
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `801` as a whole token:
none
Activity
brettheap commentedon Oct 17, 2026
CLAIMED — lane openRepoShape-1, session 300f8f46-004a-4e72-8587-4f192be2e108@Eagle, 2026-10-17T10:50:28Z, for #801
Logged in
lanes/log/openRepoShape-1.mdat953e550e10450a4f1ac36f52120a3d91867a4b42.The three reads (lane-collision-protocol Rule 1):
adopt-project.py: `answered_paths:` also records each entry a leg's o…
adopt-project.py: `answered_path_record`'s docstring says a leg's own…