Repository navigation
docs(contracts): leave stubs at the moved contracts' old paths - #11069
Conversation
…acts Move 38 plugin-author contract folders from docs/conventions to docs/contracts unchanged, and repoint their em-dash allowlist entries. Readers already try docs/contracts first. The folders a registry names by README path, and the two lane-source folders, move in the next parts of the stack so this change's review diff collapses every move. The TEMPORARY (#7537) .lycheeignore entries skip local links into the moved folders until the old-path stubs land, and relative links inside the moved folders until the later moves and the reference rewrites land. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q3ucKDVyHvpcU5cfU8
…tracts Move seven plugin-author contract folders that a registry names by README path (enforcement-ladder, hook-observability, hook-precision, pr-scope-budget, pre-pr-ordering, seam-phrasing, standards) from docs/conventions to docs/contracts unchanged, and repoint those registries: the conformance dimension owners, the shared-copies and cross-plugin source registries, and the em-dash allowlist entries. Resync the eleven shared copies, which name their canonical source, with a patch fragment for each of the nine carrying plugins, and point the standards schema $id at its new path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q3ucKDVyHvpcU5cfU8
…s at docs/contracts Move the last three plugin-author contract folders (rendered-views and the two lane-source folders, instruction-exception-register and untrusted-content) from docs/conventions to docs/contracts, and repoint the contract-clause registry and their em-dash allowlist entries. Point every lane-source reference at docs/contracts: AGENTS.md, .claude/code-metrics.yaml, the two .claude/rules files, the untrusted- content contract's own links, and release-publish-plugins.yml, which now stages docs/contracts beside docs/conventions. Keeping every lane source in this one part leaves the main-run review a diff it reads whole. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q3ucKDVyHvpcU5cfU8
Rewrite the in-place references to the moved plugin-author contracts: links inside the moved contracts themselves, the docs that link them, and the comments, registries and prompts outside docs that name them. Drop the TEMPORARY (#7537) .lycheeignore entry for relative links inside the moved folders, which these rewrites resolve. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q3ucKDVyHvpcU5cfU8
Each contract folder moved to docs/contracts/ keeps a README at its old docs/conventions/<name>/ path that points at the new one and keeps every section heading, so links from installed plugin versions keep resolving. The 11 old sub-paths that files under plugins/, lib/, scripts/ or .github/ cite also get a pointer stub: 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. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The old-path stubs now stand at docs/conventions/<name>/, so the temporary .lycheeignore entry that skipped links into the 48 moved contract folders is removed and those links are checked again. Refs: #7537 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # .performance/ratchets.json
…n merge dropped Merging main (with the squashed #7537 moves) into this branch, which carries the pre-squash move commits, let rename detection discard the stubs added at the old docs/conventions paths and the .lycheeignore removal. Reapply the branch's own two commits so the diff against main is exactly the stub layer. 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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 03bbc5a8f6
ℹ️ 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".
| "$schema": "https://json-schema.org/draft/2020-12/schema", | ||
| "$id": "https://github.com/melodic-software/claude-code-plugins/blob/main/docs/conventions/standards/standards.schema.json", | ||
| "description": "Moved to docs/contracts/standards/standards.schema.json; this schema refers there.", | ||
| "$ref": "https://github.com/melodic-software/claude-code-plugins/blob/main/docs/contracts/standards/standards.schema.json" |
There was a problem hiding this comment.
Reference the raw standards schema
When a validator loads this compatibility schema and follows $ref, the github.com/.../blob/... URL serves GitHub’s HTML viewer rather than JSON, so reference resolution fails and consumers using the old path cannot validate their standards config. Point the reference at the raw file, as the other moved schema stubs do, or use a relative reference.
Useful? React with 👍 / 👎.
Refs: #7537
Summary
Part B2 of the #7537 split, stacked on
docs/7537-b1-refs. It cherry-picks #10957's own two commits unchanged. It leaves a stub at each moved contract's old path, so links and readers that still namedocs/conventions/<name>/keep resolving. It also removes the firstTEMPORARY (#7537).lycheeignoreentry. It replaces #10957, whose base is the superseded #10952.Merge order. #10952 is re-split into five stacked layers so each review diff stays under
pr-review-main's 300 KB cap (MAX_DIFF_BYTES, measured with #10969'swrite-diff.py):docs/7537-b1-moves: 38 folders' pure moves (collapsed to rename lines) and the TEMPORARY link-check entries.docs/7537-b1-moves-registered: the 7 folders a registry names by README path, with those registries and the synced copies.docs/7537-b1-moves-lane: rendered-views and the two lane-source folders, plus every lane-source reference edit.docs/7537-b1-refs: the remaining reference rewrites.docs/7537-b2-stubs-v2: docs(contracts): leave stubs at the moved contracts' old paths #10957's stubs.Merge in that order: M, M2, M3, R, then B2. Each layer targets the branch below it. main squash-merges, so after a layer lands, retarget the next layer to main and merge main into it; until then its diff still carries the landed layer and is over the cap.
Fix
docs/contracts/<name>/..lycheeignore: the remainingTEMPORARY (#7537)entry is removed, so the file matches main's again and offline link checking covers the old paths.Verification
git diff 003d4eb0b1^ 99a46cf7fbline for line.write-diff.pybuilds it: 96,271 bytes, no line over 1,800 bytes, two lane-source stubs.pr-review-mainreviews it once it is retargeted to main; that workflow skips a PR whose base is not main.planning/surfacemodules pass when each runs alone, the vitest suites cannot load undernode --test, and the one pre-existingtest_reader_findings.pyfailure remains.Related
Closes #7537.Draft: a stacked layer of the #7537 B1 re-split; it goes through
/source-control:pull-request readyin merge order, after the layer below lands and main is merged in.🤖 Generated with Claude Code
https://claude.ai/code/session_01VQb9Q3ucKDVyHvpcU5cfU8