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
shape-doctor.py: with contracts/shape-pin.yaml and a pinned copy both conflicted, the NEXT takes the taken side's copies whole, so pasting it drops a person's --accept-local edit to the copy and the doctor then says COMPLIANT #485
(lane openRepoShape-2, 2026-10-12T22:22Z) Found by this lane's re-verify of #358 (at a5563c3), and filed on Brett Heap's word ("file L2-5 as a v1.0.0 issue", 2026-10-12). It replaces checklist item L2-5 on #460, its parent.
The state. A merge leaves contracts/shape-pin.yaml and a pinned copy both conflicted. Two ordinary flows reach it:
an update-shape.py apply --branch shape/update-<sha> pull request, beside a branch where a person edited the same copy and kept the edit with apply --accept-local (the exit the doctor's own shape currency row names for a locally modified copy, and AGENTS.md's both exit), when the update author merges main or the person's branch into the update branch;
two applies to different targets.
What the doctor says. The shape currency row's NEXT, and since #358 the manifest kinds row's too, is git -C <root> checkout --ours -- <copy> contracts/shape-pin.yaml (shape-doctor.py:2364-2407 at #358's a5563c3; on main the same command comes from #267's static copy lists, decff87).
What pasting it does.
With the update side as ours, the copy loses the person's lines, including hunks git had merged cleanly: a naming entry in contracts/repository-naming.yaml, or a project's own target appended to the Makefile. Once the merge is finished, the doctor says COMPLIANT, exit 0. The edit survives only on the other parent.
With the person's side as ours, their bytes are kept, the upgrade is dropped, and the doctor flags it (DRIFTED, shape-pin-manifest-disagree).
Meanwhile the manifest kinds row's detail.restore calls the copy project (left to a person), while its own NEXT overwrites it.
Why it is in v1.0.0. A pasted NEXT drops a person's edit, and the doctor then verifies the root. #358 fixes the same mechanism for a copy conflicted on its own. Reaching it takes two concurrent branches that each re-pin, editing the same lines of one copy; a Makefile with a project block is the likeliest copy.
Fix direction (from #358's fix round, "Left as it was"):
the manifest kinds detail and its NEXT then agree.
How to test. The review's probes OD and OD2 build the state with the real update-shape.py. Pin both as tests that are red on main, run every NEXT as pasted, and assert that the person's lines survive and that the doctor does not say COMPLIANT until the copy is merged.
Evidence: handoffs/xFactory/attachments/lane-openRepoShape-2/review358-a5563c3/ (final-report.md, fix-list.md F1 and F2, tools/) in opensoft/brett-wip.
Related: #358 (#291), which narrows this to the copies the taken side's pin lists; #267 (#237), which introduced the restore; #460, the parent.
CLAIMED — lane openRepoShape-2, session 81650e29-c906-4fe8-96c9-55580bfe0c44@Eagle, 2026-10-12T22:23:35Z, for #485
Logged in lanes/log/openRepoShape-2.md at a6f905fdc2f4ca6f8e4bdfb02d8146fad2a87147.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#485:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#485"`, kept where the row or its body names `#485`:
none
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `485` as a whole token:
none
Activity
brettheap commentedon Oct 12, 2026
CLAIMED — lane openRepoShape-2, session 81650e29-c906-4fe8-96c9-55580bfe0c44@Eagle, 2026-10-12T22:23:35Z, for #485
Logged in
lanes/log/openRepoShape-2.mdata6f905fdc2f4ca6f8e4bdfb02d8146fad2a87147.The three reads (lane-collision-protocol Rule 1):
Merge #358's head 65def40 into fix/485-doctor-conflicted-pin-and-copy…
Merge #358's final head c637722 into fix/485-doctor-conflicted-pin-an…
Merge #358's squash 5a25387 into fix/485-doctor-conflicted-pin-and-co…
Merge main cc8f2da into fix/485-doctor-conflicted-pin-and-copy, and #485
shape-doctor.py: the conflicted shape pin's note says `apply --accept…
Merge origin/main fc48854 into fix/doctor-next-is-only-a-command, aft…
tests: lane 2's #496 helpers read the conflicted shape pin's sentence…
shape-doctor.py: a NEXT is only the command, and the sentence that en…
docs/release-notes/v1.0.0.md: brought up to main d41cc29, so section …
shape-doctor.py: a conflicted shape pin's NEXT takes whole every copy…