Repository navigation
adopt-project.py and shape-doctor.py: a plan answer that overrides a confident rule passes check and execute, then the doctor's first run says MISPLACED, and an emptied .gitmodules is asked on every run #655
Description
Lane: openreposhape-1 (openRepoShape-1)
A plan answer that overrides a confident rule should not end adoption verified and then MISPLACED on the doctor's first run. And an emptied .gitmodules should have a record that can answer it, so the doctor stops asking about it on every run.
From lane 1's triage of 2026-10-15, D6, approved by Brett Heap at 2026-10-16T11:21:17Z ("Approve all (Recommended)"). One pull request covers the lines below.
Parent: #457 (#460, the doctor's tracking issue, is closed). Milestone: v1.1.0.
Lands after: #617.
Effort: M. Platform: all.
Lane openRepoShape-1 claims it at filing; see its CLAIMED comment.
Why this is P2.
- L1-57 is a wrong verified result.
docs/(rulespec-governance) answeredcodeendsadoption verified, and the doctor then saysMISPLACED (1 path), exit 1. The line measured it, the writer and the review, on main 2e6c6fa and on adopt-project.py, shape-doctor.py, validate-manifest.py:executerecords the plan's answers underanswered_paths:and a moved submodule names its row, so an answeredexamples/is not asked again and a deliberate move names no plan (#525) #617's 3b78fae. - L1-56.
git rmof a leg's only submodule leaves a 0-byte.gitmodules.ambiguous-gitmodulesasks about it on every run, and no record can answer it. - The riders concern the same
answered_paths:rows that adopt-project.py, shape-doctor.py, validate-manifest.py:executerecords the plan's answers underanswered_paths:and a moved submodule names its row, so an answeredexamples/is not asked again and a deliberate move names no plan (#525) #617 adds. L1-58: a directory row without its/settles nothing. L1-59: a row also settles files added later, and nothing says so.
The open question for L1-57.
- (A)
executerecords an override of a confident rule as an answer the doctor honours, as adopt-project.py, shape-doctor.py, validate-manifest.py:executerecords the plan's answers underanswered_paths:and a moved submodule names its row, so an answeredexamples/is not asked again and a deliberate move names no plan (#525) #617 records a question's answer. - (B)
checkfinds the override and asks for aresolution:.
Direction: A. The plan is the person's word, as #617 already treats an answered question.
Lines
- L1-56 (P2): an emptied
.gitmodules(0 bytes, left bygit rmof a leg's only submodule) is asked byambiguous-gitmoduleson every run, and no record can answer it:answered_paths:leaves it out andsubmodules:answers it only where the leg keeps one. Where: shape-doctor.py'sambiguous-gitmodules. The line measured it on 3b78fae and on main 2e6c6fa. Not re-checked since. (source) - L1-57 (P2): a plan answer can override a confident rule:
docs/(rulespec-governance) answeredcodepassescheckandexecutesaysadoption verified, but the doctor's first run saysMISPLACED (1 path). The line measured it on 3b78fae and on main 2e6c6fa. Not re-checked since. (source)
Rides along (backlog; tick it here if the same change covers it)
- L1-58: a hand-written
answered_paths:row for a directory without its trailing/(examples) passes the validator and silently settles nothing, because_coveringreads it as a file. From the code at 3b78fae; the validator's silence was probed. Not re-checked since. (source) - L1-59: an answered directory row also settles files added under it after the adoption, because
source_commitis never consulted. By design, but nothing a row's reader sees says so. From the code at 3b78fae. Not re-checked since. (source)
Each line above is a line of #457's checklist comment (issuecomment-6200110061). Tick it there too when this closes.
The lines as written on the tracking issue
[L1-56] An emptied
.gitmodules(0 bytes, left bygit rmof a leg's only submodule) is asked byambiguous-gitmoduleson every run, and no record can answer it:answered_paths:leaves it out andsubmodules:answers it only where the leg keeps one. Measured on 3b78fae and on main 2e6c6fa. (Found in #617's writer and review.)
[L1-57] A plan answer can override a confident rule:
docs/(rulespec-governance) answeredcodepassescheckandexecutesaysadoption verified, but the doctor's first run saysMISPLACED (1 path). Measured on 3b78fae and on main 2e6c6fa (repro kept by lane 1). (Found in #617's writer and review.)
[L1-58] A hand-written
answered_paths:row for a directory without its trailing/(examples) passes the validator and silently settles nothing, because_coveringreads it as a file. From the code at 3b78fae; the validator's silence was probed. (Found in #617's writer and review.)
[L1-59] An answered directory row also settles files added under it after the adoption, because
source_commitis never consulted. By design, but nothing a row's reader sees says so. From the code at 3b78fae. (Found in #617's writer and review.)
Activity
brettheap commentedon Oct 16, 2026
CLAIMED — lane openRepoShape-1, session 300f8f46-004a-4e72-8587-4f192be2e108@Eagle, 2026-10-16T11:41:47Z, for #655
Logged in
lanes/log/openRepoShape-1.mdat30cafe91bbbc872079938a6860bcdc3d53e2510c.The three reads (lane-collision-protocol Rule 1):
adopt-project.py: an answer is recorded against a rule only where it …
shape-doctor.py: the `placement` row asks a leg's top-level `single-r…
adopt-project.py: `answered_paths:` also records each entry a leg's o…