docs(metadata-protocol,objectql,cli): correct six comments describing the standalone stamp as proj_local - #17295
Conversation
… the standalone stamp as `proj_local` #13366 completed the v5.0 `project` to `environment` rename at the two stamps it had not reached (`runtime/src/standalone-stack.ts`, `metadata/src/plugin.ts`); both now stamp `env_local`. Six comments in three other packages still described the old value. Judged per site rather than search-and-replaced: - Five sites whose verb describing the stamp is present indicative — they describe today's tree, and two of them point the reader at `standalone-stack.ts` to go look — take the current spelling `env_local`. - `cli/src/utils/schema-migrate.ts` names `'proj_local'` as the value the historical #9380 deduction consumed, so the literal stays and its present-tense relative clause moves into the past, with today's spelling named beside it. The causal claim at every site is about PRESENCE, not spelling: the retired gate read `environmentId === undefined`, so it would have misfired identically under either literal. That reading is preserved at all six. Comments only: 21 of 21 changed lines are comment lines. No behaviour, no export, no assertion reads either literal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XTBcV7zZHmokdyQgXjbyEU
…the corrected comments Graded by measurement rather than by the "comments only" shape. Built the three packages and grepped the paths their `files[]` actually ships, with a positive control: @objectstack/metadata-protocol dist/index.d.ts, dist/index.d.cts HIT @objectstack/objectql dist/index.d.ts, dist/index.d.mts HIT @objectstack/cli dist/utils/schema-migrate.js HIT positive control `runPlatformMigrations` / `bootSchemaStack` HIT old spelling `standalone stack stamps `'proj_local'`` in dist 0 Two of the six sites are TSDoc on exported interface members, so they land in the shipped declaration files; the CLI site lands in shipped JS because that package builds with `removeComments` unset. All three packages are public and ship `dist`, so `skip-changeset` — which is for a diff that publishes nothing from any released package — does not describe this diff. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XTBcV7zZHmokdyQgXjbyEU
📓 Docs Drift CheckThis PR changes 3 package(s): 5 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
What this run could not see
Coarse fallback — 39 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 743cdd284c17611932aa342afb66b5ce5b3aa813 && git checkout 743cdd284c17611932aa342afb66b5ce5b3aa813
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin ab450f49a154859630dee81aeb1ba86d9665100f 74bec1b00f86d90d27554aa375be7a578d01bcfa && git checkout -B drift-repro ab450f49a154859630dee81aeb1ba86d9665100f && git merge --no-ff 74bec1b00f86d90d27554aa375be7a578d01bcfa
node scripts/docs-audit/affected-docs.mjs --json ab450f49a154859630dee81aeb1ba86d9665100f
|
Fixes #15202
Clause-②: no
(Declared by the claiming seat, not by the implementer —
check-clause2-carriers.mjsforbids anyone else supplying it: ⛔ do not fill the line in on the claiming seat's behalf, the declaration IS the judgement. It matches theClause-②: noon this card's claim comment. This PR corrects comment text describing a stamp; it adds no export, no schema key, no closed-set member and no registry entry, so the C5 widening-tell limb has nothing to collide with.)Check Changesetrefused on the LEVEL AXIS — 「the PR body carries noClause-②:line」 — which the gate clears from the body on the nexteditedevent with no push and no re-run. ⛔ The grade was NOT touched: the gate itself says the remedy is the declaration, never a regrade. Thepatchon all three packages is correct and stays — these packages ship their comments.#13366 completed the v5.0
projecttoenvironmentrename at the two stamps it had not reached —packages/runtime/src/standalone-stack.tsandpackages/metadata/src/plugin.ts— and both now stampenv_local. Six comments in three other packages still described that stamp as'proj_local', naming a value the tree no longer produces.Comments only. 21 of 21 changed source lines begin with
//or*; nothing renamed, no behaviour, no export, no assertion reads either literal.Premise re-confirmed before the first edit
The card opens
Blocked-by: #13366and warns the work is not yet valid. Re-measured on this branch's baseebf9a4891, not taken on the card's word:Per-site judgement: five corrected, one preserved as history
The six are not the same edit. Each was judged on one question: read on today's tree, does the sentence assert something false, and is its job to describe the tree or to narrate the historical deduction?
metadata-protocol/src/protocol.ts:4758bind), enumerating today's topologyenv_local; the two clauses now name one shared value instead of repeating a literal twicemetadata-protocol/src/plugin.ts:133stamps), with a pointer tostandalone-stack.tsinviting the reader to lookenv_localmetadata-protocol/src/plugin.ts:279stamps), past-tense consequenceenv_localobjectql/src/plugin.ts:144stamps), past-tense consequenceenv_localcli/src/utils/schema-migrate.ts:299deduced ... fromcli/src/utils/platform-migrations-arming.integration.test.ts:15stamps), with a file pointerenv_localSites 2, 3 and 4 all state the same fact about the same stack; grading two of them present and one historical would have left a reader looking at two contradicting sentences in one file.
The one preserved site is preserved deliberately: it names
'proj_local'as the value the historical arming deduction consumed, so rewriting it toenv_localwould have falsified the record in the other direction — the failure mode the card names.The causal claim is preserved at all six. It is about presence, not spelling: the retired gate read
environmentId === undefined, so it would have misfired identically under either literal. No sentence was corrected into implying the spelling was the cause.Census by claim, not by spelling
Swept for sentences describing the standalone stamp however worded, not for the token:
Count reconciled against the card's six: the six are exactly right, and the sweep found three more sentences that are already correct plus one excluded by an earlier ruling.
runtime/src/standalone-stack.ts:751andruntime/src/standalone-stack-default-environment-id.test.ts:10 / :84already sayenv_localor narrateproj_localin the past — landed correct by [finding] the default/local-dev environment id has three spellings —proj_local,env_localanddefault— and one consumer deliberately accepts two of them #13366, untouched.content/docs/deployment/seed-tenancy-repair.mdx:84saysproj_localand is deliberately not touched: [finding] the default/local-dev environment id has three spellings —proj_local,env_localanddefault— and one consumer deliberately accepts two of them #13366's ruling held it untouchable because its text is true history. Measured and excluded, not missed.protocol.tssaysbind, notstamps;schema-migrate.tssplits the literal and its verb across two lines), which is why the census used four sweep shapes rather than one.Region fence: re-derived by symbol at edit time, not trusted from the card
The card's
protocol.tssite was filed at:4747-4748and re-measured by triage at:4707. Measured again immediately before editing::4758-4759.Open PR #17252 holds the same file; its current lowest hunk is
@@ -4827. 68 lines of clearance. The edit was written to replace three comment lines with three, so no line below it moved, and the fence is untouched. Nothing was relocated to dodge it.Grade: a
patchchangeset, notskip-changeset— and this is the one place the diff diverges from the dispatch's expectationThe dispatch expected
skip-changeset. Measured against what the packages actually ship, that grade does not hold, so apatchchangeset is included instead.skip-changesetis for a diff that publishes nothing from any released package. Built the three packages and grepped the paths theirfiles[]actually ships, with a positive control:Two of the six sites are TSDoc on exported interface members (
AssembleMetadataProtocolOptions.runPlatformMigrations,ObjectQLPluginOptions.runPlatformMigrations), so they land in the shipped declaration files; the CLI site lands in shipped JS because that package builds withremoveCommentsunset. All three packages are public and shipdist. The corrected text is what an author reads on hover after upgrading, so it publishes.Verification
All figures below were taken at
74bec1b00f, the final commit on this branch.Gate reconciliation — every derived family run, none deferred:
Included
check:nul-bytes,check:doc-authoring,check-comment-mask-adoption,check-comment-mask-corpus,check-keyed-text-bounds,check-closing-keyword-parity, the four changeset families (check-empty-changeset,check-changeset-no-major,check-adr-0087-registration,check:objectui-changeset),check:published-files,check:dts-closure,check:tier-file-adoption,check:test-source-aliasandcheck:cross-package-test-inputs.check:type-check-debtfirst returned exit 3 = PREREQUISITE NOT MET (its re-measure leg needs a built tree). Re-run after the build: exit 0. Recorded as NOT MEASURED until it was actually measured, never as a pass.Build, tests and types (heavy runs serialized through
scripts/pm/os-verify-lock.sh; each verdict below is the wrapper's ownVERDICT command-exitline, never a bare$?):The CLI integration tier was run because the diff touches an integration-tier file — its header comment — rather than being declared to CI.
Lint — the full repository scan, so no narrowing needs proving:
Type-aware linting is not enabled anywhere in
eslint.config.mjs(noparserOptions.project, noprojectService, no typed rules), which the config states itself with its own recorded positive control — so a comment-only diff cannot move any other file's verdict either way.Byte hygiene:
grep -naPfor control characters over the five touched files plus the changeset — clean;check:nul-bytesexit 0.Acceptance notes
Noted, not filed:
docs/audits/2026-06-handwritten-docs-accuracy-followups.md:260records, in the present tense, thatcreateStandaloneStackdefaultsenvironmentIdto'proj_local'while the CLI defaults to'env_local', and closes "Reported for awareness only; no doc change warranted". [finding] the default/local-dev environment id has three spellings —proj_local,env_localanddefault— and one consumer deliberately accepts two of them #13366 resolved exactly that mismatch, so the entry is a dated audit note whose subject is now settled. It is outside this card (which enumerates three packages, notdocs/audits/), and a dated audit log going stale is a property of a dated audit log, not a defect. Successor: the nextdocs-accuracy-auditround, which owns that tree.packages/rest/src/rest.test.tsandpackages/cloud-connection/src/cloud-connection-plugin.tsholdproj_localas a real value, not prose — a test fixture id and a live sentinel arm that deliberately accepts both spellings. Correctly untouched under this card's comments-only ruling; neither is a finding.Generated by Claude Code