docs(citations): re-point the 30 dead objectstack#N citations and the bare apiMethods-card number (objectui#10803, batch 7) - #10962
Conversation
…re apiMethods-card number (objectui#10803, batch 7) The 30 objectstack issue and pull-request numbers that answer 404 in the card's two classes (pending changeset prose and non-test packages/*/src) now cite the objectstack commit that landed each change, or drop the dead number where the sentence already names the live pull request or commit, or dates the ruling it points at. One sentence cites this repository's own landing commit. The 28 comment lines that wrote the apiMethods whitelist card as a bare number now read objectstack#3391 (and objectstack#3546 on the two lines that pair it). Two console warnings in @object-ui/app-shell and @object-ui/plugin-detail lose the dead pointer and nothing else (patch changeset); every other edit is comment or changeset prose, and every edited changeset keeps its frontmatter byte-identical. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuWo5bdP9SdVebamn99GGk
|
changeset-claim-re-read
|
✅ 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
|
Contract reviewServed-tier: Isolated adversarial re-derivation of PR objectui#10962 (card objectui#10803, batch 7; claim CI on the head: 43 check-runs, 40 ① Derived judgmentsPremise, re-read over REST. All 30 numbers answer 404 on Census, re-run as the body prints it. The 30-number instrument: 82 at Shas. All 27 objectstack shas the diff and body name (the 24 added; Mapping, all 30 rows read against the landing commit's message and, where the sentence quotes something, its patch:
Cross-check of the body's cross-check: objectstack's own sweep anchors #5970 →
Prose-only. More than 40 changed sentences read in their before / after pairs (every changeset hunk and every source hunk in the diff); none asserts more than its citation carries. Frontmatter of all 24 edited changesets md5-identical at The two runtime warnings. Before: The ② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
|
Queue ejection disposition (2026-09-28T13:53Z), The failing check is
The fix: objectui#10987, claimed as a stop-the-bleed by Next step: once objectui#10987 lands on Generated by Claude Code |
Part of #10803
Clause-②: no
Dispatched implementation of the
domain:uiseat #1 claim (comment5867587761) on objectui#10803, batch 7, sessionhttps://claude.ai/code/session_01DuWo5bdP9SdVebamn99GGk. Citations only: no sentence's claim moves, and every edited pending changeset's frontmatter is byte-identical. The only runtime text that moves is two console warnings, one in@object-ui/app-shelland one in@object-ui/plugin-detail, which lose their dead pointer and nothing else (amendment5860244997, Q1 = A;patchchangeset). No test pins any changed text: the literal-anchor sweep below finds no specific anchor, so no test file is edited.This batch carries release
5866922219's two lists:objectstack#Ncitations that answer 404, in the card's two classes (pending changeset prose and non-testpackages/*/src);#3391lines in 10 files that mean objectstack's apiMethods whitelist card, which batch 6 fixed at 2 other sites.Why
Part of, not a closing lineBoth lists read 0 after this batch (Census). The brief's rule was a closing line if the card's lists all read 0. They do, but reading the sentences found 10 more lines in the same two classes that cite a dead objectstack number written bare, three numbers in all (Acceptance notes 1). Triage item 3 puts a dead number found later in these classes on this card, so the card is not finished. Whether it carries them as a batch 8 or closes is the seat's call.
Premise, re-measured on
origin/main3b469c8ea(the branch point)objectstack#Nin the two in-scope classes. 372 numbers (the one objectstack issue URL in these classes names 6227, which is among them). Each was read once with RESTGET /repos/objectstack-ai/objectstack/issues/N:issues/Nread of each answers 404 (30 of 30), andpulls/Nanswers 404 for all 30. Lit controls in the same run: objectstack#3391, [finding] CloudDeploymentConfig.environment 手写第三套环境拼写('development'|'staging'|'production'),与 spec 两个枚举均不吻合 #3720 and 258 个 t() 调用点引用的 key 在任何语言包里都不存在(#3530 守卫首跑实测),其中 8 处直接把 raw key 渲染给用户 #3546 answer 200 as issues, andpulls/13267answers 200.{id}被原样发出 #3391 and 258 个 t() 调用点引用的 key 在任何语言包里都不存在(#3530 守卫首跑实测),其中 8 处直接把 raw key 渲染给用户 #3546, both repositories./me/permissions, the 405 import refusal and export derived from list, which is what each of the 28 sentences says.main(git rev-parse --is-shallow-repository: false).main(git merge-base --is-ancestor, exit 0): the 24 this PR adds to the tree, the 3 its edited sentences already cited (c459da6bc,89448a52b,9bd4344e4), and the 7 this body names besides.git rev-parse --short=9returns the same 9 characters for each.a22b90fc0) answers exit 1; the known ancestor51789064answers exit 0.7a197e7c5is an ancestor of the branch point, exit 0. Control legs: the head of PR objectui#10945 answers exit 1, and5f789538danswers exit 0. This checkout is not shallow.66e266c93, its stages21ab41041,5cf58eb16and0d7ed5a37, andf415bcf18) anchored eight of these numbers in its own files. For each of the eight (docs(adr-0056): reconcile Consequences with the P2/P4 pure model #5970, finding(process): the session-URL PR footer does NOT survive an edit — a PATCH normalises it down to the bare form, the opposite of what the rule promises #6483, finding(ci): every push silently removesneeds:contract-review— the label objectui's own merge-queue guard treats as its exit-6 stop sign #9934, finding(plugin-detail):DetailSectionreadssection.hideEmpty, but thedetail-sectionnode does not declare it, so an authoredhideEmptyis warnedunknown-propand dropped at render #10485, #11330, #11846, #12868 and #17147) it chose the same commit this PR cites..changeset/onmain.Census (the enumeration pin for this batch)
The 30 numbers (REF = a commit or tree):
The bare
#3391, with the same pathspec:#33913b469c8ea(branch point)c292a6400(this head)main5c94589f0(git merge-tree --write-tree, clean, treebba27eece)5c94589f0(mainalone)objectstack#3391reads 32 lines, against 3 at the branch point (28 re-qualified here, and this PR's sweep changeset names it once).apps/consolefiles, 2 package READMEs (auth,react), 11 lines of publishedCHANGELOG.mdhistory in 8 files; 0.github, 0 governed, 0content/docs;#3391: 12 test lines in 9 files and 23CHANGELOG.mdlines in 8 files.Citation form
mainthat landed the change the sentence rests on.DetailSectionreadssection.hideEmpty, but thedetail-sectionnode does not declare it, so an authoredhideEmptyis warnedunknown-propand dropped at render #10485 with PR finding(app-shell): the Debug run renders an unmodelled token embedded in a longer string ({NOW()},{$User.Email},{n + 1}) as '' — a silent fake where the runtime renders its value #10695).c459da6bc, and #12009 beside objectstack89448a52b(Special cases 3).7a197e7c5, because the change it names landed here (Can a flow-node producer create a node without alabel? Enforce at the producer — the reader-side type cannot, because every node arrives through a cast #6331).#3391becomesobjectstack#3391, and on the two lines that write#3391/#3546,objectstack#3391/objectstack#3546.Mapping, the 30 numbers
Lines / files are the branch-point census for that number (a line naming two of them counts under both).
97e7e3caavisiblegains the boolean arm97e7e3caa, its squash795b6e1aa, its squashHttpMethodSubset"7618ee814list_viewsname by the runtime identity": leg 2 of 3 of the objectstack#5164 ruling, thepackages/linthalfb3c1f3cd5, its squash_viewstranslations by the runtime view identity"; "The extractor now ASKS the composer for the key"85ec26d28, its squash, 2026-08-07PageContainerProps, whose single key ischildren, forpage:section/page:footer/page:sidebar, which wereEmptyProps7a197e7c5visibleWhen, reviving every metadata-form predicate (objectstack#6331)"ee58392e1allowRuntimeCreate(stilltrue) and keep working"2fdb36eb9, its squashvalueDomainenum": "bcp47_localeis deliberately not in the vocabulary", becauselocalization.locale's options ARE the shipped catalogsd5552ca13viewItemWireFields79c46da90ApiErrorSchema.userMessage, the contract half of the objectui#5210 split9e04c3e35, its squashno_draftwarningResourceEditPage.tsxpoints at35ad101bcthemescarrier key and ThemeSchema (#10485, ADR-0049) (#10695)": "Ruled B (退役授权面, 2026-08-21)", "delete ui/theme.zod.ts whole"35ad101bc, its squasha9ee9899288b9d749ae170b0ae51a6a19c315cb62d88b0e4e51b0a"ActionParamSchema.carryOver, whose changeset reads "(#11753 ruling, spec half; #11992)" and "The maintainer's 2026-08-25 ruling on #11753"0c2334f6c; dropped beside PR objectstack#1271889448a52bAUTH_SSO_PROVIDER_SCHEMAremoval, whose landing the line already cites (Special cases 3)c459da6bcf415bcf18anchors #12868 to the samec459da6bc225e7690f, its squash8c6a7fc0b"contentalone"859ded3ecaaacf1d5c9bd4344e44342c9923classifyFilterTokenamong the three lookupse233db9dbnavigationon object-kanban / object-calendar …"; its message names #17987 as the card it settles, and its Downstream note: objectui#8652 waits on it, unlock criterion a released, installable@objectstack/spec(Special cases 1)176b03582$betweenrequires two non-blank endpoints (#18012)": "Ruling executed: decision batch #146 item 5, letter A"The 28
#3391lines, all nowobjectstack#3391:ObjectDataPage.tsx(3) andObjectView.tsx(2) in app-shell;managedBy.ts(5);MePermissionsProvider.tsx(2),PermissionContext.ts,PermissionProvider.tsx;fieldWriteGate.ts;ImportWizard.tsx(6),ObjectGrid.tsx(4);ListView.tsx(3). Each was read: every one names the server's effective API operation set,/me/permissionsapiOperations, or the 405 import refusal.Special cases (the judgement calls)
ObjectTree.tsx: "blocked on objectstack#17987, whose unlock criterion is a released@objectstack/speccarrying the declaration being installable here" becomes "blocked on objectstacke233db9db, whose unlock criterion …". That commit's Downstream note states the same criterion.ObjectCalendar.tsx: "that card ispm:blockedon objectstack#17987" becomes "that card waits on objectstacke233db9db". The label word is not kept, because objectui#8652's label readspm:on-holdtoday (measured); "waits on" is the phrasee233db9db's own note uses for that card.a9ee98992settled separately".aaacf1d5c's message calls #11330 "the sibling half of this very sentence", ruled the same way on 2026-08-30, anda9ee98992(2026-08-30) is that half's landing.5534414562name "objectstack#12009 / PR #13413" together as the oneAUTH_SSO_PROVIDER_SCHEMAprecedent, a card and its pull request. Batch 6 replaced PR #13413 with its squash89448a52b, so the card goes the way of batch 3'srecord:alertsilently ignores the declaredvisibleWhengate that its sibling blocks honour — the same defect already closed on the record-header face #5401 / Bindrecordinto node-levelvisibleWhen, and stopvisibleswallowing it #5505 pair.0e4e51b0ais its spec half. Both sites keep "ruling" as the antecedent thatActionParamDialog.tsx's next paragraph ("The ruling's point …") reads.currencyConfig.defaultCurrency) shows the tenant's currency on the grid cell and the summary footer, because the column cell bag andcolumnHintsdropcurrencyConfig#10354 inResourceEditPage.tsx. "since objectstack#10354doPublishstates" gains a comma, "since objectstack9e04c3e35,doPublishstates", so two adjacent code spans do not read as one.1a6a19c31executing the maintainer's 2026-08-24 ruling": the executing commit is named, and the ruling is cited by its date.ActionRunner.ts(two sites),ActionParamDialog.tsx,theme.ts,theme.zod.ts(two sites),index.zod.tsand the metadata-admini18n.tscomment, where "ruling on" became "ruling of 2026-08-24,".app-shell/src/layout/activityItemType.tsconsole.warninwarnUnmappedActivityTypesys_activity.typeis author-extensible (objectstack#11507, ruled 2026-08-24) and is not validated on write …"sys_activity.typeis author-extensible (ruled 2026-08-24) and is not validated on write …"plugin-detail/src/renderers/recordActivityFeed.tswarnOncemessage inwarnUnknownActivityTypesys_activity.typeis author-extensible (objectstack#11507, ruled 2026-08-24) and is not validated on write …"sys_activity.typeis author-extensible (ruled 2026-08-24) and is not validated on write …"No test, doc or changeset quotes either message with the pointer: the census reads 0 in
.changeset/, and the anchor sweep finds no test literal that drops.9.
#3391/#3546. On the two lines that pair them (managedBy.ts,ObjectGrid.tsx), both halves are qualified, as batch 6 qualified both halves of "#13337/#13086". The other bare#3546lines are not in this batch's lists and are left (Acceptance notes 2).The literal-anchor sweep (both test-pin classes, ruling
5861900779)3b469c8eaandc292a6400in any of the 74 changed files, raw or comment-flattened? 136 do./objectui#\d+|objectstack#\d+/inregistry-inputs-spec-parity, which asserts over its own ledger's reasons, and the older spelling of the three submitRedirect tests' ruling matcher, quoted in their own doc comments (the liveCITES_ITS_RULINGasserts over their own refusal text). None is a changed phrase, a dead number or a changed warning.Held
By the serial rule: nothing. Open PRs were mapped at branch time (9 open) and again after the push, before this PR opened (11 open). The second mapping came after the push, not before it; the same three files were shared both times.
Three open PRs share a file with this PR:
06a96e948, objectui#10908 asb45d463a9). The trial merge with today'smainis clean, and both censuses read 0 on it (contract review5870922323), so nothing is owed. The two rows are kept as the record at the time.RecordDetailView.tsx. The blob at its merge-base equals the branch point's. Its hunks are the imports and one block far below; this PR's one changed line in that file is far from both.types/src/zod/index.zod.ts. Its one insertion is in the export list, far below this PR's two changed comment lines.plugin-grid/src/ObjectGrid.tsx. The file drifted between its merge-base and the branch point, so this PR's four changed lines were mapped onto its merge-base by a line alignment: the nearest of its hunks is more than 150 lines from any of them.Trial merges with this head (
git merge-tree --write-tree):globalFilters[].optionslift (objectui#4356) #10930, fix(types,cli): element:number validates, with the spec's dataSource waiver (objectui#10872, batch 2) #10908 and fix(app-shell): PageView refreshes a page action’s data in place on the invalidation bus instead of remounting the page (objectui#10519) #10777;ObjectGrid.tsx,plugin-grid/README.mdandcontent/docs/plugins/plugin-grid.mdx, and conflicts in the same three files againstmainalone;.changeset/9954-read-rate-banner.mdis held by this seat's objectui#10913 dispatch (PR objectui#10949) and is untouched here. It carries none of this batch's numbers.Changesets
.changeset/10803-dead-citation-sweep-seventh-batch.md, EMPTY frontmatter. It covers the comment-only edits in 17 released packages; no published behaviour changes through them. It points at the second file for the runtime text..changeset/10803-seventh-batch-runtime-strings.md,'@object-ui/app-shell': patchand'@object-ui/plugin-detail': patch: the two warnings lose their pointer. What renders, and when and how often each warning fires, are unchanged.Proof of prose-only (C4), against
3b469c8ea.ts/.tsxfiles was parsed at3b469c8eaand at this head with TypeScript 6.0.3'screateSourceFile, and re-printed bycreatePrinter({ removeComments: true }).activityItemType.tsandrecordActivityFeed.tsare equal once the one listed substitution each (Special cases 8) is applied to the base print, each matched once.3b469c8eaand this head (24 of 24, md5). The overwrite gate below agrees.Gates, on this head
c292a6400Each line is the gate's own verdict and exit code, captured by redirect-then-
$?.node scripts/check-changeset-presence.mjs, exit 0: "48 source file(s) of 17 released package(s) changed, and this change declares 2 changeset(s): .changeset/10803-dead-citation-sweep-seventh-batch.md, .changeset/10803-seventh-batch-runtime-strings.md."pnpm changeset:check, exit 0: "All workspace packages are in the changeset fixed group." / "No changeset declares amajorbump."node scripts/check-changeset-overwrite.mjs(report-only), exit 0: "2 changeset(s) added, 24 modified, 0 deleted".declared at baseequalsdeclares nowfor each of the 24.pnpm check:changeset-claims(report-only), exit 0:pnpm check:control-bytes, exit 0: "check-control-bytes: OK (scanned 9229 tracked text file(s); skipped 85 binary)." Agrep -Pcontrol-byte self-scan of the 74 files finds none.pnpm check:new-line-citations, exit 0: "VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only -> exit 0".pnpm check:pending-changeset-literals, exit 0: "No test source names a pending changeset."pnpm check:spec-symbols, exit 0: "spec member citations: 1421 sources + 184 documentation pages; nothing cites a key its spec symbol does not declare.";pnpm check:installed-pin-claims, exit 0 ("OK");pnpm check:comment-mask-corpus, exit 0 (1 disagreeing file, within the ceiling objectui#7882 holds open);node scripts/check-hand-rolled-comment-mask.mjs, exit 0 ("OK every carrier is a DEBT entry, and every DEBT entry still carries one.");pnpm check:handler-key-reads, exit 0 ("every judged read is a declared member of it").AGENTS.md: exit 3.Tests and type-check, through the shared verify lock, on
c292a6400. Each isVERDICT command-exit 0.scripts/__tests__/, the whole directory, whose whole-tree scanners read the touched files and changesets:Test Files 177 passed | 2 skipped (179),Tests 5332 passed | 2 skipped (5334). The two skipped files are the network-escape fixtures that run only as a child.packages/types/,core/,react/,i18n/,providers/,permissions/anddata-objectstack/, whole packages, in one run:Test Files 704 passed (704),Tests 13170 passed | 13 skipped (13183).Test Files 787 passed | 1 skipped (788),Tests 7521 passed | 27 skipped (7548).packages/components/:Test Files 324 passed | 1 skipped (325),Tests 3148 passed | 24 skipped (3172).packages/app-shell/:Test Files 854 passed | 1 skipped (855),Tests 8789 passed | 9 skipped (8798).turbo run buildof the 28-package dependency closure (Tasks: 28 successful, 28 total), thenpnpm --workspace-concurrency=2with the 17 package filtersrun type-check: 17 script echoes, 17Done. A first attempt before the build exited 2 on an unbuilt dependency (Cannot find module '@object-ui/types') and measured nothing.CI on
c292a6400: 43 check-runs, 40 success, 3 skipped, 0 failed;Spec Main Shape Gatesuccess.Acceptance notes
objectstack#census sees them.needs:contract-review— the label objectui's own merge-queue guard treats as its exit-6 stop sign #9934, 7 lines in 7 files:.changeset/7980-agent-key-envelope-read.md, and in app-shellindex.ts,apiErrorEnvelope.ts(2),PackageFormDialog.tsx,StudioDesignSurface.tsxandpackages-io.ts. All mean theuserMessagechannel, objectstack79c46da90.containers.tsx, beside objectstack#5775. The landing is objectstack85ec26d28.not_containson a non-string stored value fails the operator AND its negation — against the platform's objectstack#14079 ruling #8452", 1 line inuseRecordCrudVerdicts.ts. The landing is objectstack27358d517("add batch recordIds to security/explain (dependabot's lockfile regeneration silently downgraded the@objectstack/*family 17.3.0 → 17.2.0 and forked zod, doublingpackages/specin the console bundle — on three PRs at once #8326) (bug(core):not_containson a non-string stored value fails the operator AND its negation — against the platform's objectstack#14079 ruling #8452)").#3546population. Five more comment lines write objectstack#3546 as a bare#3546(RecordDetailView.tsx2,RelatedRecordActionsBridge.tsx,record-details.tsx,fieldWriteGate.ts), and one writes it asobjectui#3546(plugin-detail'sindex.tsx). Each names the server's effective API operation set on a detail or form surface. It is live-but-wrong, not a 404, like the#3391class this batch closed. Carrier: none.ObjectCalendar.tsxsentence said objectui#8652 ispm:blocked; that card readspm:on-holdtoday. Special cases 1 says how the repaired sentence avoids the label..changeset/17147-plugin-disclosure-not-enforced.mdcarries one of the 30 numbers in its name; it stays, as in PRs objectui#10707, docs: cite landing commits where pending changesets and source docblocks name ten objectui issues that answer 404 (objectui#10771) #10797, docs: cite landing commits where pending changesets and source comments name fourteen objectui issues that answer 404 (objectui#10803) #10854, docs: cite landing commits where pending changesets and source comments name 32 objectui issues that answer 404 (objectui#10803, batch 3) #10869, docs: cite landing commits where pending changesets and source comments name 30 objectui issues that answer 404 (objectui#10803, batch 4) #10875, docs: cite landing commits where pending changesets and source comments name 41 objectui issues that answer 404 (objectui#10803, batch 5) #10892 and docs: cite landing commits where pending changesets and source comments name 23 objectui issues that answer 404, and re-qualify 19 bare objectstack numbers (objectui#10803, batch 6) #10914.Generated by Claude Code
Tests block completed by the
domain:uiseat #1 from the dev report5870507620(the suites that finished after this PR opened), and three figures corrected after contract review5870922323(the #9933 and #6515 quotes, and the Held rows); no code claim moved.