Repository navigation
docs(contracts): move 38 plugin-author contract folders to docs/contracts - #11031
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
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-review reviewed No findings on this pull request. What I read. The pull request is 112 files. 109 are pure renames of 38 contract folders from Checks on the edits.
Not reviewed.
Spend. None. The change adds no billed resource and no paid setting. |
|
claude-security-review reviewed No security issues found. I read the whole diff (
Spend: the change adds no billed resources and no extra lane runs. critical-findings: 0 |
Refs: #7537
Summary
Part B1, layer 1 of 5, of the #7537 split. It moves 38 of the 48 plugin-author contract folders from
docs/conventions/<name>/todocs/contracts/<name>/as pure renames (109 files). It replaces #10952 together with the four layers above it. Main stays green with this layer alone: part A (#10942) and A2 (#10949) made every contract reader trydocs/contractsfirst.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.
Why five layers. Over the cap,
write-diff.pycollapses a pure move to its rename lines, but it prints a move whole when an added line names its new path, its last directory and name, its name or its name without extension. A registry line such asdocs/contracts/standards/README.mdnames every movedREADME.md, and the two lane-source folders always print whole and nameREADME.mdin their text. Either one in this layer would print every move whole (measured 2.17 MB). So the folders a registry names, and the lane-source folders, move in layers 2 and 3, where the patch is under the cap and prints whole anyway.Fix
git mvof 38 contract folders (109 renames), unchanged.scripts/em-dash-purged-paths.txt: those folders' entries repoint todocs/contracts/..lycheeignore: two entries markedTEMPORARY (#7537). The first skipsfile://links into the old paths of all 48 folders until B2's stubs land and remove it. The second skips relative links inside moved folders that dangle until layers 2 and 3 move their targets and R rewrites the links topr-pipeline/,pr-pipeline.yamlandreview-digest.md; R removes it..lycheeignoreis added toscripts/affected-tests-no-suite.txt.Per-folder calls (carried from #10952). The owner's decision (#7537 (comment)) leaves
standards/,commit-convention/,loop-lane/andpr-body-convention/to a per-folder call in the move PR. The decision's rule is that a convention folder is a plugin contract and a top-level<concern>.yaml/.mdfile is this repository's setting. All four are folders that shipped plugins read, so all four move:standards/(layer 2): read by discipline, improvement, planning and review.commit-convention/(this layer): read by docs-hygiene, guardrails (the commit-msg hook's convention) and source-control. Its one file, the README, calls itself the "Owner doc for the machine-readable enforcement read … consumed by more than one plugin", a contract. The consumer-side file isdocs/conventions/source-control/commit-convention.yml, read at that path bylib/resolve-convention-pattern.sh:82andplugins/guardrails/hooks/block-convention-violation.sh:201. It stays where it is: no layer touchesdocs/conventions/source-control/.loop-lane/(this layer): read by attribution, autonomy, docs-hygiene, harness-ops, implementation, playbooks, rate-limit-guard, source-control and work-items.pr-body-convention/(this layer): read by source-control and testing.pr-pipeline/stays put for its own gate.config-cascade/is path-only: its README differs from main only in paths, and those edits land in R.Verification
write-diff.pybuilds it: 35,253 bytes, all 109 moves collapsed, no line over 1,800 bytes. No lane source, sopr-review-maindoes not run on this layer.lychee --offlinewith the repo config: no error in the moved or registry files; the only other error is an HTML fixture'sbeds.pngimage link, which this change does not touch.check-affected.sh --tests: 11 passed. The shell runner reports all 83 selected suites passed or skipped, and the node suites pass. The Python suites pass apart fromtest_reader_findings.py::…non_literal_stays_partial, which fails the same way on the main checkout atd5d8ff15. Conformance, contract-clause, em-dash, shared-copies, standards-bump, changelog and config-cascade-semantics checks pass, andexamples.test.shpasses at its new path.Related
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