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
family.py add: the commit is never checked for a gitlink at exactly members/<P>, and members: null is refused as a missing members: line #920
Goal: family.py add confirms that its own commit holds the gitlink at exactly members/<P>, and reads every spelling of an empty members: line that the holder's reader reads.
Filed by lane openRepoShape-3, from its triage of #459 at the v1.1.1 release commit 5017830. It groups #459's lines U049 (#363's option 2, from #574) and U188 (RV870's NIT-3), one pull request's worth.
Check the commit after the fact (U049)
State.#574 (62ef256) refuses the known causes of a misplaced gitlink, the case variants of members/, before the mount. Nothing checks the result: _commit_one (scripts/family.py:1757) reads no git ls-tree HEAD for the new gitlink. PR #574's body left it out: "The ruling refuses before the mount, so nothing here needs it."
What happens. A cause nobody foresaw would commit a misplaced gitlink, and fresh clones would leave the member empty.
Evidence.scripts/family.py:1757 at 5017830; PR #574's body.
Direction. After the commit, read git ls-tree HEAD for a gitlink at exactly members/<P>. If it is anywhere else, undo the command's own commit and mount, and refuse with the spelling git chose.
members: null is refused as no members: line (U188)
State.add's line finder takes only ("members:", "members: []") (scripts/family.py:423), and otherwise raises family-members-unrecognised with "has 0 members: line(s)" (:430-437). _checked_members_readable lets a null through to the verbs (:468-469: "Absent or null is no members"). def45de (#870, #864) left the finder as it was.
What happens. A holder whose family.yaml says members: null, with the null written as a word (or ~), is refused by add with a reason that is untrue: the line is there, and the readers read it as null. Nothing is written. Measured by RV870 on #870's head 03fe51e6; the same on main.
Evidence.scripts/family.py:420-437 at 5017830:
if line.rstrip() in ("members:", "members: []"):
Direction. Have the finder take each null spelling the parser reads (null, Null, NULL, ~) as it takes members:, so add writes the first member there; otherwise have the refusal name the null. One test per spelling.
CLAIMED — lane openRepoShape-4, session 11c6c0ef-495a-4a05-94cf-811b7b0a1012@Eagle, 2026-10-18T14:59:35Z, for #920
Logged in lanes/log/openRepoShape-4.md at 674ee2b97a329abdbfc38361caaeb3484dca44bf.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#920:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#920"`, kept where the row or its body names `#920`:
none
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `920` as a whole token:
none
Activity
brettheap commentedon Oct 18, 2026
CLAIMED — lane openRepoShape-4, session 11c6c0ef-495a-4a05-94cf-811b7b0a1012@Eagle, 2026-10-18T14:59:35Z, for #920
Logged in
lanes/log/openRepoShape-4.mdat674ee2b97a329abdbfc38361caaeb3484dca44bf.The three reads (lane-collision-protocol Rule 1):
family.py add: a second `members:` line above the block is refused wi…
family.py add: a commit that records the member's gitlink anywhere bu…