Repository navigation
docs(contracts): move plugin-author contracts out of docs/conventions - #10719
kyle-sexton wants to merge 31 commits into
Conversation
Move the 48 marketplace plugin contract folders out of docs/conventions/ into docs/contracts/, per the owner decision on #7537, and rewrite every reference outside .claude/ (paths, raw and blob URLs, relative links). docs/conventions/ keeps this repository's <concern>.yaml and .md settings. Per-folder calls: standards, commit-convention, loop-lane and pr-body-convention are marketplace owner docs, so they move. pr-pipeline stays until it moves under its own gate; source-control stays because it holds the consumer settings file commit-convention.yml. ADR 0064 Decision 6 is amended and AGENTS.md names the new home. The changelog parity check also reads docs/contracts/*/CHANGELOG.md. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144XNKvN1T32ur41zrz3oaW
Each contract folder moved to docs/contracts/ keeps a README at its old docs/conventions/<name>/ path pointing at the new one, so links from installed plugin versions keep resolving. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144XNKvN1T32ur41zrz3oaW
…acts validate-plugin-contracts and the prerequisites schema test built the old path from separate segments, which the path rewrite missed. Adds the pr-pipeline fragment for its rewritten contract links. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144XNKvN1T32ur41zrz3oaW
Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144XNKvN1T32ur41zrz3oaW
…plit Re-ran the contract path rewrite over main's new text (babysit_risk.py, the pr-pipeline README cost-hold link). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144XNKvN1T32ur41zrz3oaW
Each stub at docs/conventions/<name>/README.md keeps the old README's headings in order, each pointing at the same section of docs/contracts/<name>/README.md, so deep links from installed plugin versions still land on their section. Fragments are a patch only where the shared-copy and standards-contract bump gates require one (76 plugins); the 8 path-only plugins take bump: none. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144XNKvN1T32ur41zrz3oaW
…plit # Conflicts: # docs/conventions/commit-convention/README.md # docs/conventions/loop-lane/README.md # docs/conventions/plugin-reconfiguration/README.md # docs/extensibility-contract-smoke-tests.md # lib/resolve-convention-pattern.sh # plugins/guardrails/hooks/block-convention-violation.sh # plugins/guardrails/hooks/resolve-convention-pattern.sh # scripts/validate-plugin-contracts.mjs
…aths requirements.in and the toolchain ecosystem YAMLs have no test lane, so affected-tests fails any change to them by design (scripts/affected-tests-no-suite.txt). Their only change here was a comment link to the moved contract; the stub at the old path keeps every heading, so the link still resolves. Restore them to main's text. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…te runs as a background job check-changed-skills.sh runs each checker with `&`, so the suite starts with SIGINT ignored, and bash cannot trap a signal ignored on entry: case 16's INT never reached fix-plugin-drift.sh's trap and the apply completed, failing 4 of 316 checks. Run the script under env --default-signal=INT when SIGINT arrives ignored, and skip case 16 where env lacks that flag. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ir schema The contracts move renames the four examples, and affected-tests fails any change to them because no suite read them (scripts/affected-tests-no-suite.txt asked for a check-jsonschema lane first). examples.test.sh names each example, validates it against ecosystem.schema.json, and checks that an example without the required globs key is rejected; it skips when check-jsonschema is absent, as check-convention-yaml.test.sh does. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e .claude edit lands .claude/hooks/hook-telemetry-sink.sh must match the harness-ops copy byte for byte, and its pointer edit waits on the owner's review of the .claude/ edits. Keep the plugin copy's comment on the old path for now; the stub there keeps every heading, so the pointer still resolves. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Five .claude/ files (code-metrics.yaml, check-affected-pre-push.sh, hook-telemetry-sink.sh, mod-authoring.md, skill-bodies-state-current-rules.md) and the harness-ops copy of the telemetry sink now cite the moved contracts. The owner approved these edits on 2026-10-28; the stubs at the old paths keep every heading, so older links still resolve. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs-hygiene already reads docs/conventions/docs-hygiene.yaml (the row near the top of the matrix), and #5699 deleted its .claude/ JSON, so the "listed for later adoption" row was stale. The two retirement records name the retired files without a .claude/ path prefix, so the reference check, which judges the moved file whole, stops reading them as live citations; the meaning is unchanged. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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-security-review reviewed No security findings. critical-findings: 0 This is a path move: 48 contract folders go from What I read in the trusted paths
Instruction-surface check No spend: this change adds no paid plan, billing setting or billed resource, and no prepaid-credit usage either. |
|
claude-review reviewed No findings. I did not read the whole 1065-file diff; I sampled the files where behavior can change. I had no shell, so I ran nothing and did not run the author's checks ( I read:
Everything I read holds:
Manifest items: the diff touches no Closing issue #7537: I read this against the issue's decision comments. The move, the stubs, the AGENTS.md update and the Cost: no billing or paid-plan change. |
… root The contracts move left fragment mode matching only docs/conventions/. A listed contract's fragment failed as UNKNOWN PLUGIN, its README edits needed no fragment, a non-release heading skipped FRAGMENT-MODE RELEASE, and the release job would stage the fragment deletions but not the CHANGELOG entry. root_of now finds docs/contracts/<name>/CHANGELOG.md, and the new changelog_fragments::convention_of classifies a path under either home for check-changelog-parity.sh and check-changelog-fragments.sh. The standalone write-changelog-fragments.sh, the release workflow's git add and the error text cover both homes. Each convention test now runs under both homes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The contracts move swapped the two docs/conventions/ lane-source prefixes for docs/contracts/ ones, but the stubs stay at the old paths and installed plugin versions still read them for the untrusted-content framing. Keep both prefixes until the stubs retire, so an edit to a stub still marks the pull request as one that may have changed its own review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The pr-unblock lane stopped
When a retry on this head can change the outcome, the lane runs one on its own, up to its per-head cap, and edits this comment if it stops again; a run that does not stop clears the status. When no retry can (a review thread the lane does not take or settle, or a failing check after the retries are spent), a person resolves the threads or gets the checks green, then dispatches the workflow below: that run finds the cause gone and clears the status. On a pull request the lanes App opened, the dispatchers start that run once per stop; on any other, a person does. A new commit to the branch starts clean. To run it again on this head now, dispatch the gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=10719 -f activity=resolve-conflicts |
…plit Port #10767's three-label table (needs-human, attended, host-run) from the old "When work stops for the owner" section into its new home in docs/contracts/loop-lane/README.md, with links rebased to that directory; the old location keeps its "Moved to" stub. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The pr-verify verifier failed head This pull request leaves the merge queue, and ci-status holds it out while it carries |
…l cite Leave a pointer stub at each old docs/conventions/ path that a file under plugins/, lib/, scripts/ or .github/ on main references: three sub-docs, six JSON Schemas that keep their old $id and $ref the new one, and two comment-only ecosystem-commands example stubs, recorded as no-suite paths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop the attended-label fragment carried over from #10719's branch (already released), drop the stub claim from B1's fragments (B2 adds the stubs), and restore main's wording in config-cascade/README.md so it differs only in paths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes #7537
Summary
docs/conventions/held two kinds of file: contracts for plugin authors working in this repository, and the convention and settings files a consumer repository would also have (ADR 0064). Plugins resolve a consumer's convention home todocs/conventions/by default, so this repository's own folder now holds only what a consumer's would.Fix
docs/conventions/<name>/todocs/contracts/<name>/(for examplehook-budget,enforcement-ladder,mod-authoring,hook-precision,loop-lane,config-cascade).#anchorreferences still resolve.plugins/,lib/,scripts/or.github/on main cites, which installed plugin versions carry:check-placement/adopting-git-hooks.md,config-cascade/consumer-gotchas.mdandhook-precision/guard-precision.mdkeep a heading and a "Moved to" link.ecosystem-commands/ecosystem.schema.json,hook-telemetry/envelope.schema.json,hook-telemetry/data/{block-windows-drive-tmp,lane-stop-gate,stale-path-verify}.schema.jsonandstandards/standards.schema.jsonare JSON Schemas that keep the old$idand$refthe new file's$id.ecosystem-commands/examples/{dotnet,go}.yamlare comment-only pointers; no lane reads them, soscripts/affected-tests-no-suite.txtrecords them.docs/conventions/keeps the<concern>.yamland.mdsettings files andpr-pipeline/, which moves later behind its own gate..claude/and AGENTS.md point atdocs/contracts/. Theconfig-cascadeandprerequisitesreaders read fromdocs/contracts/.hook-telemetry-sink.shstays in step with its.claude/copy.docs/contracts/ecosystem-commands/examples.test.shvalidates the moved examples againstecosystem.schema.json, with a negative case.Verification
ddf6655e27, merged with main 2026-10-28:check-affectedpassed: 12 passed, 5 skipped.guardrails-remote-reference-verifypassed in 150 s.reference-verify.shover the whole branch range: exit 0 in 87 s.examples.test.shin the affected-tests suite: 138/138.git grep -l -F <old path> origin/main -- plugins lib scripts .github; the 11 stubbed are the hits other thanstandards/CHANGELOG.md, which only this repository'scheck-standards-contract-bumpscripts name and this branch repoints. The six stub schemas passcheck-jsonschema --check-metaschema;check-affectedpassed (11 passed, 4 skipped) andcheck-changelog-fragments.sh --check-requiredpassed.Related
🤖 Generated with Claude Code