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
adopt-project.py check: a partial-clone source missing blobs that check reads is fetched into, so check's own reads run the upload-pack its config names and write a promisor pack into the source #1145
Found by: r1119b's re-check of #1119 (#1083), NIT-D, probe 10. It predates #1119. It is outside v1.2.0 by Brett Heap's ruling of 2026-10-21T10:32:04Z ("leave the follow-ups out of v1.2.0").
check promises never to write into the source. Take a source that is a partial clone (git clone --filter=blob:none --no-checkout) whose HEAD blobs are absent. check's own reads of the source make git fetch the missing blobs from the promisor remote. These are not its throwaway repositories' reads.
That fetch runs the upload-pack program the source's own config names (remote.origin.uploadpack). A counting wrapper ran 5 times in one check.
It also writes a promisor pack into the source's objects/pack.
How it was measured:
r1119b ran it on git 2.43 with check --work-dir. The plan was written first. Then the source was made again as such a clone of a local origin, at the same commit.
The probe is _lane1-scratch/r1119/r2/probe2.py (partial_after_plan), with logs in probes/partial-after-plan-*. Both are on the lane's bench.
Not yet measured:
A promisor on a network. By reading the code, the same reads would fetch over it, with the credentials of whoever runs check.
What execute does with the same source.
Two possible fixes:
Ask the source with lazy fetch off, and make a blob that is then unreadable a finding, or a NOTE that names the partial clone. git 2.43 has no --no-lazy-fetch (measured: unknown option); a later git has it.
Refuse such a source before anything is read.
Either way, a row should count the promisor's upload-pack runs, and hash the source's objects/ before and after check.
CLAIMED — lane openRepoShape-1, session 300f8f46-004a-4e72-8587-4f192be2e108@Eagle, 2026-10-22T12:16:18Z, for #1145
Logged in lanes/log/openRepoShape-1.md at 18e06c56fbc4501a31a8c5b849816649b43d4f60.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#1145:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#1145"`, kept where the row or its body names `#1145`:
1119 adopt-project.py: check asks the split's own clone of the source in the work directory, so a clone this git will not make is adopt-git-unasked before any leg, and _resolved and _answers make their repositories as check's other throwaways do (#1083) fix/1083-check-asks-the-split-clone OPEN
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `1145` as a whole token:
none
Activity
brettheap commentedon Oct 22, 2026
CLAIMED — lane openRepoShape-1, session 300f8f46-004a-4e72-8587-4f192be2e108@Eagle, 2026-10-22T12:16:18Z, for #1145
Logged in
lanes/log/openRepoShape-1.mdat18e06c56fbc4501a31a8c5b849816649b43d4f60.The three reads (lane-collision-protocol Rule 1):
adopt-project.py and docs/cli.md: `check --source` and `execute --sou…
tests/test_adopt_partial_clone_source.py: `check` and `execute` refus…
tests/test_adopt_partial_clone_source.py: a partial clone whose walk …
tests/test_adopt_plan_partial_clone.py: `plan` refuses a partial-clon…
tests/test_adopt_partial_clone_source.py: a tag alone that reaches a …
adopt-project.py and tests/test_adopt_partial_clone_source.py: the `s…
adopt-project.py, docs/cli.md and tests/test_adopt_partial_clone_sour…
tests/test_adopt_partial_clone_source.py: the refusal of a HEAD whose…
adopt-project.py and tests/test_adopt_partial_clone_source.py: the `s…
adopt-project.py: check asks the split's own clone of the source in t…
adopt-project.py and tests/test_adopt_partial_clone_source.py: the te…