docs: reconcile cloud-fleet setup, freeze the renames map, add a retirement policy - #2885
Conversation
…rement policy CLOUD-FLEET-SETUP.md carried a per-repo fleet table whose rows had gone stale (standards was still listed as "no bootstrap hook") and a second copy of the per-repo bootstrap script that had drifted from what the fleet actually runs. A scan of every melodic-software repo's .claude/ and settings.json at origin/main shows adoption is universal: all of them carry .claude/cloud-bootstrap.sh on a startup|resume SessionStart hook, declare the marketplace, and enable the catalog. The enumeration is retired rather than corrected, and the embedded script is replaced by a pointer to the canonical standards components/cloud-bootstrap plus the never-synced .claude/cloud-bootstrap.local.sh enrich seam. Step 1's rollout note now says plainly that the rollout kit's edit-Default-in-place supersedes standing up a separate named environment. Two doctrine gaps close in MIGRATION-PLAYBOOK.md. The marketplace renames map is recorded as frozen-historical -- its twelve entries stay so settings naming pre-rename plugin ids keep resolving, nothing new is added, and later renames ship as clean breaking changes per the shadowed-skill-renames posture; the claude-config README no longer reads as if the map were the go-forward mechanism. And plugin retirement is codified: catalog entry and plugins/<name>/ directory removed in one PR (check-plugin-manifest-presence.sh forces the symmetry in both directions), the retirement recorded in the PR body because the changelog goes with the directory, and consumer guidance for installed copies and enabledPlugins. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012tKxg98B3QySqEPf8UqwX3
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Claude finished @kyle-sexton's task in 2m 49s —— View job Code review complete
This is a documentation-only reconciliation PR ( 1 finding (🟡 Nit) — inline on Everything else checked out:
Not independently re-run: the PR's listed verification commands ( |
|
Claude finished @kyle-sexton's task in 39s —— View job Claude finished the security review
Security review — no findingsRead the full diff (
No GitHub Actions workflows, scripts, permission configs, or executable code are touched. There's no injection surface, no auth/access-control logic, no secret/token handling, and no Result: no security issues found. |
|
Last security-reviewed head: |
…veat The adoption claim now names its population explicitly (all fifteen non-archived melodic-software repositories, per `gh repo list`) rather than quantifying over an unstated set, and the Step 2 pointer carries the standards#397 in-flight caveat where a reader following the link will hit it. The retirement policy's installed-copy claim cross-references the version-keyed cache behavior already established in "Same-version commit drift" instead of asserting it afresh. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012tKxg98B3QySqEPf8UqwX3
|
Claude has reviewed this PR 4 times. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
|
Claude finished @kyle-sexton's task in 4m 55s —— View job Code review —
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 439cca3f30
ℹ️ 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".
…397 is merged The cloud-bootstrap component and its manifest rows are live on standards main (merged 2026-08-16T22:26:57Z), so the dated blockquote and its cross-reference describe a state that no longer exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012tKxg98B3QySqEPf8UqwX3
|
Claude finished @kyle-sexton's task in 3m 15s —— View job Code review complete
This PR has been reviewed by this lane three times already at earlier SHAs. This push ( 1 finding (🟡) — posted inline on Commit Everything else in this delta is clean: no dangling references to the removed blockquote or its Not re-filed as new findings (still open from earlier rounds, unchanged by this push, so not re-verified here): Codex's P2 on Not independently re-run: the PR's listed verification commands ( |
…ready landed (#398) ## Summary Corrects a wrong exclusion recorded in #397: dotfiles was left out of the `cloud-bootstrap` component's targets on the claim it had no adoption yet, but `melodic-software/dotfiles` main already carries `.claude/cloud-bootstrap.sh`. ## Fix Drop the stale exclusion comment and add `cloud-bootstrap` to dotfiles' `managed` list. Verified live via the GitHub contents API: dotfiles main has the bootstrap (an older generic generation, 70 lines, no repo-specific content — safe to converge), the SessionStart hook registration, and the full baseline plugin declaration. The clone that informed the original comment was on a stale feature branch. dotfiles is already a sync target, so the App installation's selected-repo set is untouched. ## Verification - `distribution/sync-manifest.sh validate`: `Manifest valid: 38 components, 8 targets`. - `plan --targets melodic-software/dotfiles` renders `100755 components/cloud-bootstrap/cloud-bootstrap.sh -> .claude/cloud-bootstrap.sh`. No linked issue ## Related - #397 (component introduction; recorded the exclusion this PR reverses) - melodic-software/claude-code-plugins#2885 (fleet audit that surfaced the discrepancy) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_012tKxg98B3QySqEPf8UqwX3 Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…h seam honestly Review follow-ups: a repo onboarding before its manifest row lands copies the component file verbatim and proposes the row (interim guidance the removed status blockquote used to imply), and the cloud-bootstrap.local.sh seam is stated as a canonical-script feature — live in managed targets, absent by design in locally-owned repos such as this one. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012tKxg98B3QySqEPf8UqwX3
|
Claude finished @kyle-sexton's task in 4m 11s —— View job Code review —
|
#399) ## Summary Agents working in consumer repos had no in-repo statement of the two conventions the cloud rollout rests on. Adds a "Cloud sessions and plugins" section to the synced orientation (AGENTS.md in every agent-orientation target). ## Fix Two bullets: the checked-in `.claude/settings.json` is the repo's plugin source of truth (cloud sessions install exactly what it declares — a repo that declares nothing gets nothing); `.claude/cloud-bootstrap.sh` is owned by the `components/cloud-bootstrap` component with `.claude/cloud-bootstrap.local.sh` as the repo's never-synced enrich seam. Mode (`managed` vs `locally-owned`) is deliberately left to the manifest, so the text stays true for repos that own their copy. ## Verification - markdownlint clean; `sync-manifest.sh validate` green (content-only change; no manifest edit). - Fans out to the 5 agent-orientation targets on merge via the ordinary sync. No linked issue ## Related - #397 / #398 (cloud-bootstrap component + targets) - melodic-software/claude-code-plugins#2885 (fleet doc reconciliation this orientation complements) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_012tKxg98B3QySqEPf8UqwX3 Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
Three documentation/doctrine changes that were contradicting reality or each other.
docs/CLOUD-FLEET-SETUP.mdcarried a per-repo fleet table whose rows had gone stale — thestandards row still read "settings + CLAUDE.md, no bootstrap hook" — and a second copy of the
per-repo bootstrap script that had drifted from what the fleet actually runs. The doc also framed
per-repo bootstrap adoption as work still to be scheduled.
The
renamesmap contradiction..claude-plugin/marketplace.jsoncarries a 12-entry map;docs/topics/shadowed-skill-renames/PLAN.mdrecords the standing posture that no new entries areadded while the marketplace settles; but
plugins/claude-config/README.mdstill described the mapas the live migration mechanism.
Plugin retirement was undocumented.
docs/MIGRATION-PLAYBOOK.mdcodifies creation and updatedelivery but says nothing about deleting a published plugin.
Fix
from the stale table (
gh repo list melodic-software --json name,isArchived→ 15 non-archivedrepos; the three archived ones are
medley-archive,melodic-main-archive,itinerary-planner). Each of the 15 was checked atorigin/mainviagh api repos/melodic-software/<repo>/contents/.claudeplus itssettings.json: adoption isuniversal — all 15 carry
.claude/cloud-bootstrap.sh, register it as astartup|resumeSessionStart hook, declare the
melodic-softwaremarketplace, and enable the catalog. Theper-repo enumeration is retired rather than corrected (it restated state cheaper to read
from the repos), leaving the toolchain-pin inventory, which is the one input to Step 1 that
lives nowhere else. The embedded bootstrap script is replaced by a pointer to standards
components/cloud-bootstrapplus the never-synced.claude/cloud-bootstrap.local.shenrichseam — this repo no longer maintains a second copy. Step 1's rollout note now states plainly
that the rollout kit's edit-Default-in-place supersedes standing up a separate named
Melodic environment.
docs/MIGRATION-PLAYBOOK.mdunder "Versionpinning and update delivery": the existing twelve entries stay (removing one strands consumers
whose settings still carry a pre-rename plugin id), no new entries are added, and later renames
ship as clean breaking changes per the
shadowed-skill-renamesposture.plugins/claude-config/README.mdnow describes its entry as a historical migration aid ratherthan the go-forward mechanism.
docs/MIGRATION-PLAYBOOK.md: catalog entry andplugins/<name>/directory removed in one PR (
scripts/check-plugin-manifest-presence.shFORWARD/INVERSE checksforce the symmetry), derived surfaces regenerated, the retirement recorded in the PR body
because the
CHANGELOG.mdgoes with the directory, plus consumer guidance (installed copieskeep working from the version-keyed cache; drop the
enabledPluginsentry; no tombstone orrenamesentry).plugins/claude-configbumped0.38.5→0.38.6with a matching changelog entry, as theREADME edit requires.
Verification
Run in the worktree, all green:
bash scripts/validate-plugins.shAll plugin manifests and the catalog validated.node scripts/validate-plugin-contracts.mjs46 setup skills and 2566 plugin files checkednode scripts/generate-catalog.mjs --checkCatalog is in sync with the manifests.node scripts/generate-cheatsheet.mjs --checkCheat sheet is in sync with skill frontmatter.bash scripts/check-plugin-manifest-presence.shbash scripts/check-changelog-parity.sh --checkbash scripts/check-changelog-parity.sh --check-bump origin/main0.38.6entry present)bash scripts/check-changelog-parity.sh --check-preserved origin/mainbash scripts/check-changelog-parity.sh --check-ordernpx markdownlint-cli2on the changed.mdfiles0 issueslychee --offline --config lychee.tomlon the changed files0 ErrorsCI on this branch is green across every required gate (
hygiene,plugin-gate,review,security-review,pr-issue-linkage,pr-title,do-not-merge,shell-portability-lint, andthe rest).
The retirement section's gate claims were read out of the scripts rather than assumed:
check-plugin-manifest-presence.sh's header documents the FORWARD/INVERSE pair, andcheck-changelog-parity.sh --check-preservedexplicitlycontinues when a changelog is absentand its directory is gone — a removal, not an absorbed section — which is why the policy puts
the retirement note in the PR body rather than in a final changelog entry.
One deviation from the brief, called out deliberately: the brief states standards PR #397 has
landed. It has not —
gh pr view 397 --repo melodic-software/standardsreportsOPEN, andcomponents/cloud-bootstrapdoes not exist on standardsmain. The two links this doc now pointsat therefore 404 until #397 merges, so a dated status blockquote says so and names the PR, and the
Step 2 pointer refers back to it so a reader following the link is not surprised. Link checking is
unaffected in CI (the online lane is advisory and weekly; the offline lane skips external URLs),
and the blockquote is a single deletable paragraph once #397 lands.
Also found, not fixed here (standards-repo concern): the
cloud-bootstrapblock indistribution/sync-manifest.ymlon the #397 branch comments that "dotfiles: no cloud-bootstrapadoption yet", but
melodic-software/dotfilesonmainalready carries.claude/cloud-bootstrap.shand registers it. Seven repos with a committed bootstrap have nomanifest row at all (
dotfiles,knowledge-corpus,songwriting,claude-code-proxy,codex-plugins,cursor-plugins,claude-lane-sandbox) — unmanaged copies that will drift. Thisdoc deliberately points at the manifest instead of restating the split, so it stays correct as
those rows land.
docs/CLOUD-SESSIONS.mdwas left untouched: it describes this repo's own bootstrap and thepre-launch call, and nothing in it contradicts the reconciled fleet doc.
Related
No linked issue
🤖 Generated with Claude Code
https://claude.ai/code/session_012tKxg98B3QySqEPf8UqwX3