docs(deployment): state the per-package walk de-duplication bound as the source states it - #19241
Conversation
…s the source states it `content/docs/deployment/validating-metadata.mdx` said of the per-package walk that "what it reports is exactly the set the union could not see". That sentence was removed from eight code carriers by #18878 because it is false, and the two notes that replaced it forbid restating it: `packages/cli/src/commands/compile.ts` carries "Do not re-inflate that to" it, and `packages/cli/src/utils/artifact-packages.ts` records that the claim the pass is entitled to make "is narrower than" it. The page was the last place in the tree still asserting it as a claim. The page now states the bound in the source's own settled words — the set of per-package findings no union finding already carried under the same rule, `where`, message and non-top-level position — and carries the narrowness note the source wrote down so the next reader does not re-inflate it: the key is position-insensitive, not collision-proof. Claude-Session: https://claude.ai/code/session_01QCdUBjM47SxioST9z5Zwdf Co-authored-by: Claude <noreply@anthropic.com>
…ur-doors-dedup-bound-r2
|
The gate's own prescription decides this, and it has two branches. Quoted verbatim from the failing run's error line (run
This PR has no ⭐ The 「releases nothing」 premise was measured, ⛔ not assumed, because
Re-read after the write: label present ( ⛔ The PR stays draft; this clears one red and is not a landing judgement. Its dev is still running and owes the terminal report. Readings taken and posted 2026-09-20T03:29Z. Generated by Claude Code |
|
Reviewed, green and ready — ⏳ parked OUTSIDE the merge queue, because arming auto-merge was refused by this session's permission classifier.
State at this moment, each field read back rather than assumed:
The arm — ⇒ the one remaining act is a human's: either grant this session the auto-merge permission, or put the PR into the merge queue by hand. ⛔ Nothing else about this PR is outstanding — there is no red to chase and no review thread waiting on anyone.
Readings taken and posted 2026-09-20T03:37Z. Generated by Claude Code |
Fixes #18893
content/docs/deployment/validating-metadata.mdxwas the last place in the tree still asserting, as a claim, the sentence the CLI source explicitly forbids restating — of the per-package walk: "what it reports is exactly the set the union could not see".PR #18878 (card #18779) removed that sentence from eight code carriers because it is false, and the two notes that replaced it are this page's acceptance baseline:
packages/cli/src/utils/artifact-packages.ts— thefindingKeydocblock records that the claim the pass is entitled to make "is narrower than" that sentence, and that the key is "position-insensitive, ⛔ not collision-proof".packages/cli/src/commands/compile.ts— "⛔ Do not re-inflate that to" it, beside the settled statement of what does survive.What changed
One sentence, one file. The page now states the bound in the source's own settled words — the set of per-package findings no union finding already carried under the same rule,
where, message and non-top-level position — says why the leading collection index is neutralised (a package body re-bases its collections from 0, so one finding would otherwise get two keys), and carries the narrowness note the source wrote down so the next reader does not re-inflate it. The surrounding paragraph's teaching is untouched.⛔ No source file was changed. The source is the authority here; the page is what was wrong.
Measurement
Whitespace-normalised, because the target sentence wraps across two lines and a line-oriented
grep -Freturns0on it — a zero triage and two seats each paid for once on this very card:e233db9exactly the set the union could not seeone gate, four doorszzzNotARealTokenThe lit control still fires after the edit, so that
0is a reading and ⛔ not an instrument artefact. The naive line-orientedgrep -Freads0both before and after — recorded here so nobody re-derives a clearance from it.Gates
39 families derived from the actual diff (
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, change set taken by the script itself from the merge base), every one run, every one exit0, reconciled39 derived / 39 run / 0 UNRUN. Plus the fullpnpm lintunion, whichdispatch-gatesdoes not name.Four of the 39 first exited
3/1carrying PREREQUISITE-NOT-MET text — "Nothing was measured: this gate exited before running a single check" — because workspace packages were unbuilt. They were re-run to a real verdict after building@objectstack/spec,@objectstack/formula,@objectstack/lintand@objectstack/client-react. ⛔ Those refusals are recorded as not-measured-then-measured, never as a failed measurement.Changeset
skip-changeset, derived rather than assumed: the one changed path lives under no package directory except the private monorepo root (@objectstack/spec-monorepo,private: true), so no published package's tarball can contain it whatever decides its contents; and no published package namescontent/docsin itsfiles[]. ⛔ No label was written — this dispatch forbids label writes, so the label is the seat's to apply.Acceptance notes
de-duplicat,union could not,could not see,only what,echoandduplicateacross the page — the corrected sentence was the single restatement. No second one exists.compile.ts,lint.ts,validate.tsand five CLI pin tests. Two are still assertions:.changeset/18677-validate-per-package-authoring-pass.mdstates "Bycompile.ts' own description the survivors of that second pass are …" and.changeset/18778-lint-per-package-authoring-pass.mdstates "every finding that pass produces — … — in the build command's own words". Both attribute the sentence to source text that no longer says it, both are unreleased, and a changeset body ships verbatim intoCHANGELOG.mdas the text an upgrading agent greps. ⛔ Not fixed here — out of this card's declared one-file surface, and.changeset/18677-…is the claimed surface of in-flight card [finding] PR #18769's PENDING changeset declines the BREAKING banner on the ground that the narrowing "could not be exhibited" — an at-tier review exhibited it, and the file is still unreleased #18823 (PR docs(cli): #18769's pending changeset declares theos validate --strictnarrowing an at-tier review exhibited #18867) for a different defect. Reported for filing.Clause-②: no
Generated by Claude Code