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
validate-family.py member-duplicate runs only with the members checked and compares project: exactly, so --no-members passes a family.yaml that names one row twice, and rows IRRS and irrs with distinct ids pass, though members/IRRS and members/irrs are one directory on macOS and Windows #331
What happens.member-duplicate is raised in _member_project_name, which only _check_member calls, and _check_members returns before that loop under --no-members. _check_member_ids_unique (#221) runs before the return, but it compares project in projects exactly as well. Measured on be2790e with a family holder from family.py init, a hand-written family.yaml of two rows, and --no-members:
two rows `project: IRRS` (repositories InkRouter/IRRS twice) -> family ok: Fam (fam), 2 member(s) exit 0
rows `IRRS` and `irrs` with different ids -> family ok: Fam (fam), 2 member(s) exit 0
With members checked the comparison is if project in seen, exact (read from the code; not run with two mounted members).
Where. templates/family-root/scripts/validate-family.py:_member_project_name (:215-228), _check_members (the --no-members return), _check_member_ids_unique (:525).
Why it matters.--no-members is the run a private family's CI falls back to when its members cannot be checked out, so a duplicate row passes the one gate that runs. family.py add now refuses a case variant, so only a hand edit makes such rows. The file is one of the copies a holder pins, so a change is a shape update. Direction: move member-duplicate ahead of the --no-members return, like member-duplicate-id, and compare project: case-folded.
Source. PR #221, ## Left out, second and third bullets.
CLAIMED — lane openRepoShape-4, session 3431c370-df80-4c11-a041-41bce42d8b38@Eagle, 2026-10-12T11:07:57Z, for #331
Logged in lanes/log/openRepoShape-4.md at 1804d5716abfd6a345c672b1cd9a264837f59cfa.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#331:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#331"`, kept where the row or its body names `#331`:
none
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `331` as a whole token:
none
Activity
brettheap commentedon Oct 12, 2026
CLAIMED — lane openRepoShape-4, session 3431c370-df80-4c11-a041-41bce42d8b38@Eagle, 2026-10-12T11:07:57Z, for #331
Logged in
lanes/log/openRepoShape-4.mdat1804d5716abfd6a345c672b1cd9a264837f59cfa.The three reads (lane-collision-protocol Rule 1):
validate-family.py: fix round on the review of f8650c8: `member-dupli…
Merge origin/main 92e29d9 into fix/adopt-root-kept-symlinks: #190's r…
validate-family.py: a gitlink in `members/` or a `.gitmodules` sectio…