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
setup-project.py: under self-bootstrap, an $OPENREPOSHAPE_REPO holding U+202E or another character the launcher refuses is printed and handed to git clone, because its check has no drawn-as-another test #953
Goal: setup-project.py's self-bootstrap refuses an $OPENREPOSHAPE_REPO holding a character the launcher refuses, by code point and in the launcher's words, before it prints the value or hands it to git.
Filed by lane openRepoShape-3, from RV947's review of #947 (#947 issuecomment-6252705614). It is the same family as #939's "Found while measuring" item about setup.sh --shape-ref.
State (origin/main 64464d31)
setup-project.py:881-882 checks $OPENREPOSHAPE_REPO with checked_value(..., PATH_RE).
That check has no drawn-as-another test: no check against the launcher's MISDRAWN_CHARACTERS (openRepoShape:501).
The self-bootstrap then prints and runs git clone --quiet -- <repo> <tmp> (setup-project.py:902, :3076-3077).
Reached with the package: the package's openRepoShape gets here beside a source tree with no .git.
beside_checkout (src/openreposhape/standard.py:451-463) checks for files only (CHECKOUT_MARKERS). So a "Download ZIP" tree, or an sdist installed with pip install -e ., counts as beside a checkout.
The run hands over to that tree's setup-project.py. Its is_shape_checkout fails, so it self-bootstraps.
Reached without the package:python3 setup-project.py --org acme, the documented self-bootstrap mode.
The ref is already safe: a bad --shape-ref is refused in ascii() form, so no raw bytes appear.
The run wrote the raw bytes E2 80 AE where this shows [U+202E]. The result is the same at origin/main.
Direction
Check $OPENREPOSHAPE_REPO in the self-bootstrap by code point, against the launcher's list and in checked_repo's words, before any printed line or git call names it.
CLAIMED — lane openRepoShape-5, session 50cede29-ab82-4ca3-9f67-d98e1a58c8d2@Eagle, 2026-10-20T05:16:25Z, for #953
Logged in lanes/log/openRepoShape-5.md at c790d11d7fdc80e1853a16538c70017b1037eea4.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#953:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#953"`, kept where the row or its body names `#953`:
947 standard.py: the package's `openRepoShape` refuses a repository or ref holding U+202E, U+200B or another character the launcher refuses, by code point, before `--version` or any `git` call names it, and refuses `a.lock/b`, `a/.b`, `a//b`, `a/b/` and `a.` before it clones, in the launcher's words (#939, #941) l3-939-941-package-standard MERGED
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `953` as a whole token:
none
Activity
standard.py: the package's `openRepoShape` refuses a repository or re…
brettheap commentedon Oct 20, 2026
CLAIMED — lane openRepoShape-5, session 50cede29-ab82-4ca3-9f67-d98e1a58c8d2@Eagle, 2026-10-20T05:16:25Z, for #953
Logged in
lanes/log/openRepoShape-5.mdatc790d11d7fdc80e1853a16538c70017b1037eea4.The three reads (lane-collision-protocol Rule 1):
setup-project.py: the self-bootstrap refuses an `$OPENREPOSHAPE_REPO`…