Skip to content

docs(multi-repo): probing paths cannot tell absent from unlooked-at - #160

Merged
CybotTM merged 1 commit into
mainfrom
docs/enumerate-not-guess
Aug 22, 2026
Merged

docs(multi-repo): probing paths cannot tell absent from unlooked-at#160
CybotTM merged 1 commit into
mainfrom
docs/enumerate-not-guess

Conversation

@CybotTM

@CybotTM CybotTM commented Aug 22, 2026

Copy link
Copy Markdown
Member

multi-repo-operations.md recommends probing each repository with contents/<path> when a content search cannot be trusted. That advice is sound against the search index, and it has a blind spot worth naming: the probe answers is the file at this path, never does the file exist. A sweep assembled from plausible paths therefore reports the same "absent" for a file that is not there and one that sits at a path nobody thought of — and the count that comes out reads like a measurement.

The measurement behind it

Across the 25 active t3x-* extensions, a sweep of five plausible php-cs-fixer config paths reported 11 repositories with no config at all. Ten of them had one, at Build/.php-cs-fixer.dist.php — the sixth path, and the most common layout in that fleet.

reported actual
repositories affected by the defect being tracked 3 13
repositories with "no config" 11 1

The wrong number had already reached an issue body and two messages to a colleague. The more expensive part: the fix under review had been built from the same guessed list, so it repaired the flag and left ten repositories exactly as broken as before — the guard passed, because the guard's fixtures were drawn from that list too.

What the section adds

The tree listing as the alternative, and one rule for where probing is genuinely the only option: do not name the empty bucket "absent", name it "none of the paths checked" and print the list, so the next reader sees the hole rather than inheriting the number.

Verification

The documented command was extracted from the rendered file and run as written against a repository with the awkward layout:

$ gh api "repos/netresearch/t3x-nr-image-sitemap/git/trees/main?recursive=1" --jq '…'
Build/.php-cs-fixer.dist.php

That is the path the five-candidate sweep missed.

Assisted by claude-code:claude-opus-5 — Session

The section on enumerating structurally recommends probing each repository for
a marker file with contents/<path>. That is right about the search index, but
a sweep assembled from plausible paths reports the same "absent" for a file
that does not exist and one that sits at a path the list does not name.

Measured across 25 extensions: five probed php-cs-fixer paths reported 11
repositories without a config; ten had one, at a sixth path that was the most
common layout there. The tracked defect reached 13 repositories, not 3, and
the fix under review had been built from the same guessed list — it repaired
the flag and left ten repositories unchanged.

Adds the tree listing as the alternative, and asks that an empty bucket be
named "none of the paths checked" with the list, where probing is unavoidable.
The documented command was run as written against a repository with the
awkward layout and returns Build/.php-cs-fixer.dist.php.

Assisted-by: claude-code:claude-opus-5
Agent-Session: https://claude.ai/code/session_01GSptxPLHWsttu9FuqVkvYZ
Agent-Host: 0493f0
Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
Copilot AI lite review requested due to automatic review settings August 22, 2026 06:53
@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions github-actions Bot added documentation Improvements or additions to documentation skill labels Aug 22, 2026
@sonarqubecloud

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@CybotTM

CybotTM commented Aug 22, 2026

Copy link
Copy Markdown
Member Author

The Copilot review quota is exhausted for this month, account-wide, so no bot review is available on this head. I read the diff myself.

One claim in it needed counting rather than asserting — "the sixth path, and the most common layout in that fleet". Per exact path across the 25 repositories:

10  Build/.php-cs-fixer.dist.php
 9  .php-cs-fixer.dist.php
 3  Build/.php-cs-fixer.php
 2  .php-cs-fixer.php
 1  Build/php-cs-fixer/.php-cs-fixer.php
 1  Build/php-cs-fixer.php

It holds, by one. Grouped by directory the root wins with 11, so the sentence is only true about a single path — which is the relevant unit here, because a candidate list is a list of paths.

The gh api …/git/trees/… command in the section was extracted from the rendered file and run verbatim against netresearch/t3x-nr-image-sitemap; it returns Build/.php-cs-fixer.dist.php, exit 0.

Not merging this — that decision is not mine to make.

Assisted by claude-code:claude-opus-5 — Session

@CybotTM

CybotTM commented Aug 22, 2026

Copy link
Copy Markdown
Member Author

Self-review: e831c07

The review this pull request demands is unsatisfiable (Copilot quota wall or repeated bot failures on this head). Per the documented fallback, the diff on this head was reviewed by the PR author; this comment is the on-the-record attestation the merge gate reads back. It stops matching on the next push.

@CybotTM
CybotTM merged commit afe41f2 into main Aug 22, 2026
20 of 21 checks passed
@CybotTM
CybotTM deleted the docs/enumerate-not-guess branch August 22, 2026 07:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation skill

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants