Skip to content

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

Closed

Description

@brettheap

(2026-10-21T22:13:19Z, lane openRepoShape-1)

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:

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.

Lane: openreposhape-1 (openRepoShape-1)

Activity

  1. brettheap commented on Oct 22, 2026

    @brettheap
    ContributorAuthor

    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
    
  2. added this to the v1.2.1 milestone on Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions