docs(multi-repo): probing paths cannot tell absent from unlooked-at - #160
Conversation
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>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
|
|
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: 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 Not merging this — that decision is not mine to make. Assisted by claude-code:claude-opus-5 — Session |
|
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. |



multi-repo-operations.mdrecommends probing each repository withcontents/<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 plausiblephp-cs-fixerconfig paths reported 11 repositories with no config at all. Ten of them had one, atBuild/.php-cs-fixer.dist.php— the sixth path, and the most common layout in that fleet.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:
That is the path the five-candidate sweep missed.
Assisted by claude-code:claude-opus-5 — Session