docs(fleet): replace the stale fifteen-repo count in cloud-fleet-setup - #4181
Conversation
The bootstrap adoption paragraph claimed "all fifteen non-archived melodic-software repositories". `gh repo list melodic-software --no-archived --limit 100 --json name` returns 16 today, so the count had already rotted. Drop the hardcoded number and scope the claim to the date the pass was actually run (2026-08-16, the section's own heading date), so the sentence records a dated verification instead of asserting an ever-changing present-tense count. Name the gap class the date introduces -- a repository created after that pass is not covered by it -- rather than enumerating repos, which the paragraph's closing sentence already rules out. Also tighten the cited query to `--no-archived --json name`, which returns exactly the set the sentence describes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011mbb3nkTfMrT9vDmoUnQuj
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @kyle-sexton's task in 1m 4s —— View job Code review —
|
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 75703d7fd6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codex review raised a valid P2 on the query this PR cites: `gh repo list` returns only 30 repositories by default (`gh repo list --help`: "-L, --limit int Maximum number of repositories to list (default 30)"). At 16 non-archived repos it does not bite today, but a reader who runs the cited command once the org passes 30 would silently enumerate a truncated fleet while the prose claims fleet-wide coverage. That is the same rot class this PR exists to remove, so pin `--limit 100` in the doc to match the command the verification actually ran, and say in one clause why the flag is there. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011mbb3nkTfMrT9vDmoUnQuj
…572 DOTNET_FALLBACK_VERSIONS in components/cloud-environment/setup.sh moved from 10.0.302 10.0.400 to 10.0.400 10.0.401 (standards PR #572, merged 2026-09-15). The fallback list now matches the fleet's pinned .NET versions instead of trailing them. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011mbb3nkTfMrT9vDmoUnQuj
…k list The bullet still said 10.0.401 was in neither fallback slot after standards #572 added it to DOTNET_FALLBACK_VERSIONS, contradicting the sentence right below it. Rewrite to state github-iac's 10.0.401 (rollForward: disable) is now covered by the fallback list, matching the rest of the bullet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011mbb3nkTfMrT9vDmoUnQuj
No related issue: adjacent drift found while landing the CLOUD-FLEET-SETUP inventory fix (#4163)
Summary
docs/cloud-fleet-setup.md, under## Bootstrap adoption (2026-08-16), asserted a hardcodedrepository count in the present tense:
The org has 16 non-archived repositories today, so the number is stale. A present-tense count of a
set that grows whenever someone creates a repository will rot again the next time it grows.
Fix
Remove the number, scope the claim to the date the pass was actually run (2026-08-16, which is the
section's own heading date and already the date recorded in the doc's basis paragraph), and name the
gap class the date introduces instead of enumerating repositories. The paragraph already closes with
"Read adoption state from the repos rather than from a table here; a per-repo enumeration in this doc
can only lag them", so the fix leans on that pointer rather than duplicating it.
The cited query is also tightened from
--json name,isArchivedto--no-archived --json name, whichreturns exactly the set the sentence describes rather than requiring the reader to filter it.
Before:
After:
The
--limit 100and its explanatory clause came from Codex review feedback on the first commit(see the resolved thread); the cited query originally omitted the flag.
gh repo listreturns only30 repositories by default, so a reader running the cited command once the org passes 30 would
enumerate a truncated fleet while the prose claims fleet-wide coverage — the same rot class this PR
exists to remove. Confirmed on this host:
No count is asserted in the new text. There is no repo-inventory file to point at instead: the
"standards fleet list" this doc references elsewhere is
components/cloud-environment/fleet-plugins.json, which is a plugin list, not a repository list. Theauthoritative definition of the set is the
gh repo listquery, which the sentence already citesinline.
.NET SDK 10.0.400bullet's fallback-list sentence was pointing outthat the standards fallback list (
10.0.302 10.0.400) had drifted from the fleet's actual pins.Standards PR work-items:work — autonomous orchestrator-dispatch lifecycle underspecified (branch/worktree provisioning, PR-creation ownership, fix-subagent re-dispatch) #572 merged 2026-09-15 and changed
DOTNET_FALLBACK_VERSIONSincomponents/cloud-environment/setup.shfrom10.0.302 10.0.400to10.0.400 10.0.401, so themismatch is gone: the sentence now says the fallback list matches the fleet pins above, citing
the new value and the 2026-09-15 verification date against that script.
Verification
Current non-archived repository count. Every number in this PR comes from these commands.
Sixteen, not fifteen.
Which repositories postdate the 2026-08-16 pass:
Two repositories (
agent-plugins,claude-code-account-rotation) were created after 2026-08-16.This is what the new "a repository created after that pass is not covered by it" clause names.
Whether each repository carries
.claude/cloud-bootstrap.shtoday (16 of 16):Whether each repository's
.claude/settings.jsonregisters the hook and declares the marketplace(15 of 16):
The
0 0 0row is not a parse of an empty settings file:base64was decoding a 404 body. Thedirect listing confirms the file is simply absent:
This is the finding that made the present-tense phrasing untenable and the dated phrasing correct:
claude-code-account-rotationcarries the script but has no.claude/settings.json, so it neitherregisters the SessionStart hook nor declares the marketplace. Writing "every non-archived repository
carries / registers / declares" in the present tense would have replaced a stale number with a false
claim. See
## Relatedfor the follow-up.Standards PR #572, confirmed merged and diffed before editing:
Lints:
package.jsondeclares noscriptsblock, sonpx markdownlint-cli2is the repo's lint entry pointfor this file.
npm ciwas run in the worktree so the pre-commit hooks resolved.Swept for sibling occurrences of the same stale number; the only hit in this doc is the one fixed,
and the other hits across the repo are unrelated uses of the word:
Related
Two follow-ups for the orchestrator, neither fixed here (both are outside this item's scope):
claude-code-account-rotationbootstrap adoption gap. It has.claude/cloud-bootstrap.shand.claude/rules, but no.claude/settings.json, so thestartup|resumeSessionStart hook isunregistered and the
melodic-softwaremarketplace undeclared. It is the newest repository in theorg (created 2026-09-05, after the 2026-08-16 adoption pass).
Checked whether this is already tracked; it is not. Standards
distribution/sync-manifest.ymldoes carry the repo, andcloud-bootstrapis in itsmanagedlist (which is why the script is present), but no component in that list delivers a
.claude/settings.json— compare theclaude-settings-github-iacentry the manifest's owncomment describes as "that target's own settings file", which has no counterpart here. The one
open PR on the repo (
#60 chore: sync standards components) touches only.github/workflows/managed-files-guard.ymlandlychee.toml. So the hook registration andmarketplace declaration are delivered by nothing, in flight in nothing. Worth a tracked issue.
The original count may never have been right. Sixteen non-archived repositories minus the two
created after 2026-08-16 is fourteen, not fifteen, so either a repository has been archived since
the pass or the count was already off by one when written. Not chased; flagging it because it
argues for the dated-record phrasing this PR adopts over any re-counted number.
Optional and deliberately not done: the doc's recheck-trigger list in the basis paragraph could gain
"a repository is created in the org" as a trigger. The date-scoping plus the paragraph's existing
"read adoption state from the repos" pointer already prevent this specific rot, so it was left alone.
🤖 Generated with Claude Code
https://claude.ai/code/session_011mbb3nkTfMrT9vDmoUnQuj