Uh oh!
There was an error while loading. Please reload this page.
docs(console): state the ./urlParams fact directly in the FORM_RECORD_ID_PARAM comment - #5616
Conversation
…_ID_PARAM comment The docblock explained why `FORM_RECORD_ID_PARAM` is a literal rather than an import, and closed with a cross-reference: "the same unreachability `createdRecordPath.ts` documents for `resolveHostAppSegment`". Its own claim is still true — `@object-ui/app-shell` publishes `.` and `./styles.css` and the root barrel does not re-export `./urlParams` — but the borrowed witness expired. The host-app resolver was published from the package root and the console's local subset deleted, so `createdRecordPath.ts` now imports the resolver and documents that unreachability only in the past tense. A reader following the cross-reference therefore found the opposite of what it promised, which made the surviving justification read as though it had also been resolved. Point at the `./urlParams` fact directly instead, with the exports map named so it is checkable without a second file, and keep the resolver's publication as the precedent for retiring this literal rather than as a live second witness. Comment-only: comment-stripped emit is byte-identical before and after. Fixes#4319 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012u2pRjcqAYtoEjgr3wwhnK
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
os-sales
commented
Aug 21, 2026
PM review — ACCEPT (card #4319)Gates. 22 named check runs read individually for Both halves verified, and the stop condition was live rather than decorativeI asked for a stop-and-report if the surviving justification had gone false, because that would have turned a comment repair into a code question. It had not, and the check that establishes it is properly negative-with-control: The expired half is equally nailed down: The improvement over what I asked forI said to point at the That is a better answer than the instruction, for a reason worth stating: a merged historical publication cannot later invert the way the old live cross-reference did. The original sentence broke because it pointed at a sibling's current state, which then changed. Pointing at what #4280did is a fact that stays fixed. It is the same move I ruled into #4622's wording this round — scope a reference as history so it cannot rot — reached here independently. Naming the On the |
Uh oh!
There was an error while loading. Please reload this page.
Fixes#4319
The
FORM_RECORD_ID_PARAMdocblock inapps/console/src/components/FormPage.tsxexplained why the param is a literal rather than an import, then closed with a
cross-reference: "the same unreachability
createdRecordPath.tsdocuments forresolveHostAppSegment".Its own claim is still true. What expired is the borrowed second witness — PR
#4318 published the host-app resolver from the package root and deleted the
console's local subset, so
createdRecordPath.tsimports the resolver today anddocuments that unreachability only in the past tense. A reader following the
cross-reference found the opposite of what it promised, which made the surviving
./urlParamsjustification read as though it had also been retired.Both halves verified on
origin/main6606337e3before writingThe dispatch made this the load-bearing step: if the first half had moved, the
literal itself would no longer be justified and this would stop being a comment
repair. It has not moved.
Half 1 — still true, so the literal stands.
packages/app-shell/package.jsonpublishes
"."and"./styles.css"and nothing else (no subpath pattern, so adeep import is not reachable either).
grepforurlParamsandRECORD_DRAWER_PARAMinpackages/app-shell/src/index.tsexits 1 with zerohits, while the control probe
resolveHostAppSegmenton the same file hits lines74 and 79 — the absence is real, not a broken search.
packages/app-shell/src/urlParams.tsdoes exist and defines
RECORD_DRAWER_PARAM = 'recordId'at line 86; it issimply unreachable to a consumer.
Half 2 — expired.
apps/console/src/components/createdRecordPath.ts:57isimport { resolveHostAppSegment } from '@object-ui/app-shell';, and its docblocknow records the old unreachability in the past tense ("#4109 could not import the
resolver ... #4280 published the resolver from the package root and deleted the
subset").
The replacement clause
Before:
After:
Two deliberate choices. The
exportsmap is named inline so the claim ischeckable without opening a second file — un-checkability by cross-reference is
what failed here. And the resolver's publication is kept as precedent for
retiring this literal, not as a live second witness: a merged, historical
publication cannot later turn into the opposite of what it promises, which is
exactly the failure mode being repaired.
The surviving
FormPage.test.tssentence was re-verified rather than assumed —apps/console/src/components/FormPage.test.ts:260pinsFORM_RECORD_ID_PARAMto'recordId', with a comment at :257 namingRECORD_DRAWER_PARAMinpackages/app-shell/src/urlParams.ts. It is unchanged.The diff is comment-only — verified, not asserted
Every changed line sits inside the
/** ... */docblock. Rather than leave thatto the eye, both revisions of the file were transpiled with
removeComments: trueand the emitted programs compared: byte-identical, 23064 bytes,
sha256
4fdf391e7cebc470efbf6ff2b75ecffb2be641950e6a68c26c6bf3ee5ac1c36f, withzero diagnostics on either side. A control probe confirms the comparison can
fail — mutating the literal to
'recordIdX'produces a different emit.Note on scope of that claim:
tsconfig.base.jsonsets"removeComments": false,so comments do ship. The claim is not that published bytes are unchanged;
it is that the diff carries zero program semantics.
No test and no ablation is possible on a comment edit, and none was manufactured.
There is no behaviour to assert and nothing to ablate — a mutation of prose
cannot turn any assertion red.
Gates
Gate set re-derived from
.github/workflows/against this diff rather than takenon trust. Exit codes captured before any pipe; each verdict is the gate's own
line. All at
3756e86e9, the final commit.@object-ui/consoletype-checkdistwas absent, which would have been a false red)@object-ui/consolelint200 problems (0 errors, 200 warnings)— all pre-existing, all at lines 227+; the edit is lines 141-148vitest run apps/console/(repo root)Test Files 65 passed (65)/Tests 710 passed (710)check-changeset-presencecheck-changeset-no-majorNo changeset declares a major bump.check-changeset-fixedAll workspace packages are in the changeset fixed group.check-control-bytesOK (scanned 4666 tracked text file(s))check-type-check-coverage45/46 via type-check, 0 errors outstandingcheck-lint-coverage46/46 packages linted, 0 with outstanding errorscheck-phantom-dependenciesEvery in-scope import is declared by the package that publishes it.check-package-self-importNo package names itself inside its own src/.check-spec-symbol-derivationcheck-action-forward-paritycheck-i18n-call-site-keyscheck-i18n-en-driftNo en value changed in this range.check-node-esm-load --specifiers-onlycheck-skills-paths95/96 stated path(s) resolvecheck-eager-closure-budgetcheck-eager-closure-budgetfirst exited 2 — its self-declared broken-gaugecode, because no console build had written
apps/console/dist/eager-closure.json.That is not a pass. The console was built and the real number read rather than
arguing the change must be inert:
Console eager closure is 3785.7 KB gzipped across 52 of 508 chunks (budget: 3867.2 KB, headroom: 81.5 KB), exit 0.Declared narrowing. Repo-wide farm runs —
pnpm lintacross all 46 packages,the full 4-shard
pnpm test, repo-widepnpm type-check, and the CLI'spnpm check— were left to CI, which runs them once regardless. The narrowing issound here for a stronger reason than the usual one: the comment-stripped emit is
byte-identical, so no type information and no lint input anywhere in the workspace
can have moved.
check-lint-coverageandcheck-type-check-coveragebothindependently report full coverage with zero outstanding errors.
Nothing governed
The diff is exactly two files — this comment and its changeset. It touches no
docs/adr/**, no.claude/**, noskills/**, noAGENTS.mdorCLAUDE.md, andno
content/docs/releases/**. Staying draft per the dispatch regardless.Changeset
Required — the gate was run rather than guessed, and it demanded one:
apps/consoleis inside the release's fixed group, so a change under its
src/must declareitself. Empty frontmatter, the explicit first-class exemption: no consumer-visible
API documentation changes, so this releases nothing.
Generated by Claude Code
Generated by Claude Code