Repository navigation
fix(scripts): correct the RETIRED_FIELD_TYPES excluded sentence that dropping the line refutes (objectui#10070) - #10961
Conversation
…t dropping the line refutes (objectui#10070) The WITHHELD declaration for RETIRED_FIELD_TYPES in INDIRECT_REGISTRATIONS said that dropping its `excluded` line "flips one switch and nothing else": the collection's keys (`field:owner`) would enter the universe and a document teaching `field:owner` would turn GREEN. That is the sentence objectui#9803 corrected on the sibling RETIRED_DASHBOARD_NODE_TYPES entry, and it is false here for the same reason the entry's own `reason` gives: RETIRED_FIELD_TYPES is IMPORTED into the site file from `@object-ui/core`, so without the exclusion the derivation reads no literal keys and the entry reports `stale-indirect-registration` instead. Measured before writing, by deleting the line: `check:doc-types` and `regenerate-known-schema-types.mjs --check` both exit 1 naming that finding, the derived universe keeps the same size, and a probe document teaching `field:owner` stays red (`unregistered-doc-type`). Text only: the derivation reads `excluded` for truthiness, and the string stays non-empty. Claude-Session: https://claude.ai/code/session_01EBx9rvB7dufCz4at53x35U Co-authored-by: Claude <noreply@anthropic.com>
|
changeset-claim-re-read
|
…n in the WITHHELD entries (objectui#10070)
objectui#9717 was closed as completed on 2026-09-20 under ruling letter A
("retired spellings stay OUT"). Three texts still described it as pending:
- the RETIRED_FIELD_TYPES `excluded` string opened with "WITHHELD pending
objectui#9717, which is open on exactly this question";
- the RETIRED_DASHBOARD_NODE_TYPES `excluded` string said "the same open
question as the RETIRED_FIELD_TYPES entry above (objectui#9717)";
- a comment in the gate's test file said "while objectui#9717 is open".
Only the status half of each is rewritten to name the ruling; every other
word is kept. Both `excluded` strings stay non-empty, which is all the
derivation reads, so nothing about the gate's behaviour changes.
Claude-Session: https://claude.ai/code/session_01EBx9rvB7dufCz4at53x35U
Co-authored-by: Claude <noreply@anthropic.com>
Fixes #10070
Clause-②: no — a comment in a source file; no accept set or public contract surface moves
What was false, and where it actually lives
The sentence objectui#9803 corrected on the
RETIRED_DASHBOARD_NODE_TYPESentry has a twin on theRETIRED_FIELD_TYPESentry ofINDIRECT_REGISTRATIONSinscripts/check-doc-component-types.mjs, in that entry'sexcludedstring. Before this change it read:The corrected copy on the dashboard entry reads, in part: "DROPPING this
excludedline does NOT re-admitview:dashboard— … it makes THIS entry reportstale-indirect-registration". The field entry's ownreasonalready stated the cause: "RETIRED_FIELD_TYPES is IMPORTED into this file from@object-ui/core, so nothing here could read it anyway."RETIRED_FIELD_TYPESdocblock inpackages/core/src/utils/retired-field-types.ts. That docblock has no copy of it: the only matches for "flips one switch", "enter the universe" and "turns GREEN" in the tracked tree are in the gate script's entry. The card's own description ("the same entry'sreasonhalf") points at the gate-table entry, and this PR edits that entry.packages/coreis untouched.The change
The false sentence is replaced with one sentence stating what dropping the line does, and naming the two commands that re-derive it. The rest of the entry is unchanged: the
WITHHELDquestion and the wholereasonfield stay as they are. The diff touches one file, +7 −3.The text is the only thing that changes. The derivation checks
excludedonly for truthiness (typeof entry.excluded === 'string' && entry.excluded.length > 0), and the string is still non-empty. No key, collection, namespace or site changes, and no other entry changes.Measured before the sentence was written, and again on the committed fix
Both runs deleted the entry's
excludedproperty with objectstack'sscripts/ablation-replace.mjs. That tool requires the anchor to match, checks the mutation on disk, and restores the file afterwards, proving the restore withgit diff HEAD. Each run used a lit probe doc undercontent/docs/: one block teachingfield:ownerand one teachingfield:user. The probe was removed by a trap.excludeddroppedpnpm check:doc-typespackages/fields/src/index.tsx (RETIRED_FIELD_TYPES) [stale-indirect-registration]node scripts/regenerate-known-schema-types.mjs --checkpackages/cli/src/utils/known-schema-types.tsblob3447617c5d3447617c5dfield:ownerunregistered-doc-typeunregistered-doc-typeplus the stale findingfield:userin the same probeBase run on
06a96e9480, re-run onc9d3b58b50(this PR's commit). In both runs the mutated file hashed to the same blob,587fcde4ffb9, so the sentence text has no effect on what the ablation measures. Every restore ended with blob equal to HEAD and an emptygit diff HEAD.ablation-replacerefused it because the replacement text was a substring of the anchor, restored the file and ran nothing. The run was repeated in--deletemode with an exact anchor. That second run is the one reported above.Verification at
c9d3b58b50Exit codes were captured to a file before any pipe.
pnpm check:doc-typesexit 0 ("Every documented component type is registered.").node scripts/regenerate-known-schema-types.mjs --checkexit 0.pnpm check:control-bytesexit 0.pnpm check:new-line-citationsexit 0 (VERDICT new-cross-file-line-citations: 0 new citation(s)).pnpm check:prompt-keysexit 0 andpnpm check:registry-bare-namesexit 0. Both importINDIRECT_REGISTRATIONSor its derivation.node scripts/check-changeset-presence.mjsexit 0: "No source or published contract of a released package changed in this range, so no changeset is owed." No changeset is added.node scripts/check-governed-queue-guard.mjs --test scripts/check-doc-component-types.mjsanswers NOT GOVERNED.git grepscheck-doc-component-types, plusscripts/__tests__/registry-bare-name-collisions.test.ts. The result is 26 files, 1404 tests passed (VERDICT command-exit 0).@object-ui/core: the@object-ui/coredependency closure was built, thenpnpm --filter @object-ui/core type-checkexited 0 (the script echoedtsc --noEmit && tsc -p tsconfig.test.json).packages/core/src/utils/__tests__/retired-field-types.test.tspassed 9 of 9.pnpm exec eslint scripts/check-doc-component-types.mjs --format jsonjudged 1 file with 0 errors and 0 warnings.eslint --print-configfor this file shows 0 enabled rules and theespreeparser with no type-aware parser options, so this diff cannot change any other file's lint verdict. The fullpnpm lintrun is left to CI.Acceptance notes
INDIRECT_REGISTRATIONS: the sameexcludedstring still opens with "WITHHELD pending objectui#9717, which is open on exactly this question". objectui#9717 was closed as completed on 2026-09-20 under ruling letter A: retired spellings stay out of the universe. The same stale "open question" wording appears in theRETIRED_DASHBOARD_NODE_TYPESentry'sexcludedtext. A comment inscripts/__tests__/check-doc-component-types.test.tsalso says "while objectui#9717 is open". The withheld disposition is still correct; only the status wording is out of date. That is a separate sentence from the one this card names, so it is left untouched.Seat session, in prose so it survives an edit:
https://claude.ai/code/session_01EBx9rvB7dufCz4at53x35U.Generated by Claude Code