Uh oh!
There was an error while loading. Please reload this page.
Renumber the colliding prune decision from LLP 0223 to 0226 (#774) - #775
Conversation
`master` carried two documents claiming LLP 0223. Per LLP 0156#renumber the later claimant moves: the converge decision reached master first (348b0ae, PR #770, 2026-08-13T23:16), the prune decision second (f581e4c, PR #749, 2026-08-14T10:36). The prune decision moves to 0226, the next free number above the highest claimed on origin/master and every remote branch (0225 is the highest; 0221 is unclaimed but numbers are minted as max + 1). Mechanical rename only, which CLAUDE.md and LLP 0156 allow on an Accepted document: no content, status, date, or reasoning changed. The inbound sweep retargets 13 references in 4 files - the `Extended-by:` header and four body links in LLP 0219, five `@ref ... [tests]` annotations in test/core/client-assets-prune.test.js, two `@ref ... [implements]` in src/core/runtime/client_assets.js, and one in src/core/runtime/client_asset_ledger.js. The eight remaining `LLP 0223` references all mean the converge decision, which keeps the number. Before: `git ls-tree -r origin/master --name-only llp/ | ... | uniq -d` prints 0223, and `no LLP number is claimed by two documents` fails. After: the duplicate check prints nothing and llp-ref-hygiene.test.js is 11/11 green, including `every @ref resolves to a live LLP document and one of its anchors`. Co-Authored-By: Claude <noreply@anthropic.com>
philcunliffe
commented
Aug 14, 2026
Verdict: clean. Reviewed Reviewed in a detached worktree off 1. Did any decision content change?No. The moved document is byte-identical to its pre-rename content apart from the first line. Normalising that one line makes the md5 identical ( The one other document touched, 2. Is the right document the one that moved?Yes. Verified independently of the PR body: The converge decision reached 3. Is 0226 actually free?Yes, and free by the stricter standard LLP 0156 sets ("above the highest number claimed anywhere, including branches without an open PR"). I enumerated every 0225 is the highest claimed anywhere, 4. Are all inbound references repointed, and only the right ones?Yes, in both directions. I built the reference set on All 13 moved references land where the PR body says: Nothing was missed. Grepping the branch for the moved document by every shape it could take ( Nothing was over-swept. All 8 surviving
An org-wide code search ( For consistency with precedent, I checked whether the earlier renumbers (0152, 0153, 0154, 0155) added a "formerly LLP NNNN" note to the moved document. None of them did, so this PR's omission of one matches how the repair has always been done. 5. Tests
Full-suite delta against the
Conventions hold: no em dash (U+2014) anywhere in the diff or the commit message, and the changed lines are comments and markdown, so the semicolon rule is not in play. FindingsNone. This is the clean mechanical renumber it claims to be. Observations, not findings, for a humanNeither of these is caused by this PR, neither blocks it, and neither should hold up a merge. Both are preference-level notes about the surrounding corpus.
Per the brief, the CI-hardening idea the PR body declares out of scope is not treated as a finding. |
Uh oh!
There was an error while loading. Please reload this page.
mastercarried two documents claiming LLP 0223. This renumbers one of them and sweeps every inbound reference. Nothing else changes.Which document moved, and why
LLP 0156#renumber settles this: the document that reached master first keeps the number, the later claimant moves.
0223-converge-on-applied-config.decision.md0223-prune-direct-children-and-unreadable-assets.decision.mdThe prune decision is the later claimant, so it becomes LLP 0226. That also happens to be the smaller blast radius by file count (4 files vs 6 for the converge decision), which is what the issue predicted:
0226 is the next free number: it is above 0225, the highest claimed on
origin/masterand on every remote branch includingorigin/integration/bounded-query-execution, andllp-create's convention ismax(existing) + 1. (0221 is unclaimed anywhere, but numbers are minted above the maximum, not into gaps.)This is a rename plus a reference sweep. No content, status, date, anchor, or reasoning changed in either decision - the mechanical edit that
CLAUDE.mdand LLP 0156 explicitly allow on an Accepted document. The rename is recorded as a rename, sogit log --followstill tracks the document.Every reference updated
llp/0219-retired-client-assets-are-pruned.decision.md(5): the**Extended-by:**header on line 9, and four body links[LLP 0223](./0223-prune-...)at lines 72, 104, 208, 244.test/core/client-assets-prune.test.js(5):@ref LLP 0223#unreadable-is-not-absent [tests]at 398 and 493,@ref LLP 0223#only-direct-children [tests]at 626, 685, 730.src/core/runtime/client_assets.js(2):@ref LLP 0223#unreadable-is-not-absent [implements]at 531,@ref LLP 0223#only-direct-children [implements]at 695.src/core/runtime/client_asset_ledger.js(1):@ref LLP 0223#unreadable-is-not-absent [implements]at 213.# LLP 0223:becomes# LLP 0226:.The eight surviving
LLP 0223mentions (inllp/0129,llp/0135,test/core/remote-login-command.test.js,src/core/cli/wizard/join.js,src/core/config/apply.js,src/core/cli/remote_commands.js) all mean the converge decision, which keeps the number. Each was checked by anchor and context, not swept blind.Evidence
Reproducing check, before:
After, on this branch, and the
llp-check.ymlworkflow's own command likewise:The named assertion, before:
After:
test/core/llp-ref-hygiene.test.jsis 11/11 green.Ref-check:
every @ref resolves to a live LLP document and one of its anchorsandevery tolerated reference forgives no more than is still brokenboth pass in that same file, which is the in-repo enforcement of/ref-check. The#unreadable-is-not-absentand#only-direct-childrenanchors resolve against the renamed document, and a grep confirms zero references to a0223-prune-...path remain.npm test: the sorted failure set is identical to theorigin/masterbaseline minus exactly one line, the duplicate-number assertion (23 failures before, 22 after). The remaining 22 are the known environmental skew in this worktree, 2report-render*from a missingmarkedand 20 parquet-pushdown / hyparquet.npm run typecheck: unchanged from baseline, the same singleCannot find module 'marked'insrc/core/reports/render.js.Not included
The issue floats hardening the duplicate-number check to run against the merge result.
llp-check.ymlalready runs onpull_request, whereactions/checkoutchecks out the merge ref, so the check is against a merge result - just one computed before the sibling PR landed, and a PR is not re-run when its base moves. Closing that gap means either requiring branches to be up to date before merging (a branch-protection setting, not a file in this PR) or checking the new number against every other branch, which would redden PRs over abandoned branches. Neither is a clean, testable change of the size this PR should carry, so it is left out.Fixes#774