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
update-shape.py: update-accept-local-missing-name asks only the copies this run's --accept-local names, so a copy an earlier apply kept (read unchanged after) is never asked, and the next apply writes a siblings.py that cannot import from it #1082
Goal: update-shape.py apply refuses, before any write, every run that would leave a copy importing a name from a copy that does not define it, wherever the kept copy came from: this run's --accept-local, or an earlier run's.
A copy an earlier apply kept reads unchanged in the next check. The next apply never asks it, and writes a new importer beside it.
Its docstring calls it "the general guard" (:4210).
What happens (measured)
rv1075, lane 5's independent reviewer of #1075 (#1055), measured this offline.
Setup: a holder cut at main 6476c170, whose scripts/bootstrap.py has no untraced, with its own edit to scripts/bootstrap.py committed.
First apply:update-shape.py apply --at 00f6d7f7 --accept-local scripts/bootstrap.py exits 0. That target's siblings.py imports no untraced, so nothing is refused.
Ask every copy this run writes against the copy it imports from, as the run leaves that copy, not only against the copies this run's --accept-local names. The copy it imports from may be:
written by this run;
kept by this run's --accept-local;
left on disk as an earlier run kept it.
Keep the refusal's code, update-accept-local-missing-name.
Where the kept copy reads unchanged, the line could say an earlier run kept it. That is the writer's call.
Verify
The two applies above: the second is refused before any write, naming scripts/bootstrap.py and untraced. The holder's files, HEAD and status are unchanged.
CLAIMED — lane openRepoShape-5, session 50cede29-ab82-4ca3-9f67-d98e1a58c8d2@Eagle, 2026-10-21T10:34:45Z, for #1082
Logged in lanes/log/openRepoShape-5.md at ef6ad56f468fdf0099531c6a1f60412ce3526def.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#1082:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#1082"`, kept where the row or its body names `#1082`:
1075 the family root's siblings.py: with a token in use, the clone and the fetch that carry it run in bootstrap.py's `untraced()` environment, so `make siblings` and `family.py siblings` write the token to no trace the caller asks git for (#1055) fix/1055-siblings-untraced OPEN
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `1082` as a whole token:
none
Activity
the family root's siblings.py and its test: a row with a member whose…
brettheap commentedon Oct 21, 2026
CLAIMED — lane openRepoShape-5, session 50cede29-ab82-4ca3-9f67-d98e1a58c8d2@Eagle, 2026-10-21T10:34:45Z, for #1082
Logged in
lanes/log/openRepoShape-5.mdatef6ad56f468fdf0099531c6a1f60412ce3526def.The three reads (lane-collision-protocol Rule 1):
the family root's siblings.py: with a token in use, the clone and the…
update-shape.py: `update-accept-local-missing-name` asks a copy an ea…
docs/release-notes/v1.2.0.md: the fix round on #1155's four section r…
tests/test_update_shape_kept_helper.py: the both-directions row asser…