Repository navigation
ci(spec-shape-gate): register the retirement of the page component's visibility and the view form's visibleOn - #23920
Conversation
…visibility and the view form's visibleOn The first scheduled Spec Shape Gate run on a main carrying the retirement red on objectui packages/react/src/SchemaRenderer.tsx:1945:45 TS2345: the page component's visibility, now a retiredKey() tombstone, is still passed to an expression argument. Register that diagnostic, by file, code and its full message, against the downstream card objectstack-ai/objectui#12654 so the hourly run reads it as known instead of red. Claude-Session: https://claude.ai/code/session_01HjR8RUwTPQ3TgbfKihmxp9 Co-authored-by: Claude <noreply@anthropic.com>
…ct diagnostic too objectui's react type-check chains its test project after the source project, so the scheduled run's red at SchemaRenderer.tsx:1945 kept the test project from ever compiling. Compiled locally (objectui main f78efdd1e3 against the spec built from 570f01d), that project reds once more on the same retirement: SchemaRenderer.expressions.test.tsx:171 TS2322, a string authored into the page component's tombstoned visibility. Register it under the same entry so the gate does not red on it once the source project goes green ahead of the test. Claude-Session: https://claude.ai/code/session_01HjR8RUwTPQ3TgbfKihmxp9 Co-authored-by: Claude <noreply@anthropic.com>
|
Spec Shape Gate red on this head, and not this PR's ·
Generated by Claude Code |
席位核对 · ACCEPT · PR #23920 @
|
Part of #23543
Clause-②: no
F4 aftercare: one entry in the Spec Shape Gate's retirement registry, so the hourly run reads the F4 retirement (PR #23836, merge commit
105902f10ae8124a5e965cb24f7b30681fd9fae2) asknown (registered: objectstack-ai/objectui#12654)instead of red. #23543 stays open; this PR is the registry half of F4's aftercare only. objectstack-ai/objectui#12654 is the consumer card and is not addressed here.What changed
scripts/ci/spec-shape-retirements.jsongets one entry, in the grammarparseRegistryreads (scripts/ci/spec-shape-gate.mjs, THE REGISTRY):retired: the page component'svisibilityand the view form'svisibleOn(field and section), retired as keys (retiredKey() tombstones namingvisibleWhen).objectstack_pr23836,objectstack_commit105902f10ae8124a5e965cb24f7b30681fd9fae2,downstream_cardobjectstack-ai/objectui#12654,registered_at2026-10-16.matches: two patterns. Each one names the objectui file, the TS code and the diagnostic's full first-line message, so neither covers anything but the diagnostic it was measured from.packages/react/src/SchemaRenderer.tsx38896788900(check-run116959061730annotation, line 1945:45), and reproduced byte-identical locallypackages/react/src/__tests__/SchemaRenderer.expressions.test.tsxtype-checkistsc --noEmit && tsc -p tsconfig.test.json, and the first half is red on pattern 1Pattern 2 is registered now for one reason: if objectui corrects the source read before the test, the test project starts compiling and would red on an F4 diagnostic nobody had registered.
No change to the reader, its grammar, the workflow, or any objectui file.
Which sites were measured, and which could not be
The local compile: objectui
mainf78efdd1e3(a detached worktree with its own install), with@objectstack/specbuilt andnpm packed from this branch's base570f01d270and injected by the gate's owninject. ThenTURBO_FORCE=true pnpm turbo run type-check --filter=@object-ui/react --filter=@object-ui/types --continue --concurrency=2ran. That reproduced the scheduled run's two diagnostics exactly, and nothing else. After it, the three chainedtscprojects that compile run never reaches were run by hand:packages/reacttsc -p tsconfig.test.jsonpackages/typestsc -p tsconfig.examples.jsonlayout.zod.ts:25TS2305 only (seat 2's, below)packages/typestsc -p tsconfig.test.jsonlayout.zod.ts:25andimported-defaults-8317.test.ts:145TS2305 (seat 2's);select-option-tier1-convergence-7014.test.ts:130,138,150,157TS2344 (not F4's, see Acceptance notes)The read sites objectui#12654 lists, by outcome:
SchemaRenderer.tsx:1944-1945(diagnostic at 1945:45) andSchemaRenderer.expressions.test.tsx:171.SchemaRenderer.tsx:191, the typePageComponent['visibility']. It compiles, and it is where the tombstone type reaching 1945 comes from. AlsoSchemaRenderer.tsx:365,1939-1940and2190-2191: the working copy'svisibleOnis typed by objectui's ownBaseSchema, not the spec's. Also thePickatSchemaRenderer.expressions.test.tsx:38andtypes/src/__tests__/flat-props-refusal-10872.test.ts, which has no row in the types test project.visibleOnreaders incomponents,plugin-form,apps/consoleandapp-shell, andplugin-form/src/sectionFields.spec-parity.test.ts. In that run, turbo's failure annotations name onlypackages/typesandpackages/react(buildandtype-checkeach). So every other package's chainedtype-checkran to green, at the objectuimainof 11:53Z, not atf78efdd1e3. ThesectionFields.spec-parity.test.ts:145coupling reads(… as any).in.shape, which is a vitest runtime break and not a type diagnostic, so this compile-only gate cannot see it.Not this PR's
packages/types/src/zod/layout.zod.ts:25:3TS2305 (checkPageComponentViewData) belongs to seat 2's PR #23784 and is not registered here. This PR's own Spec Shape Gate run is path-triggered by the registry. It is expected to read F4's diagnostic asknownand still red on that one, until #23784 lands. The gate is not one of the five required contexts.Verification (all at
1adf5046ee)node scripts/ci/spec-shape-gate.mjs --self-test: exit 0,60/60 passed across 7 batteries.parseRegistryon the committed file, plusclassifyRowsover eight rows: exit 0,PARSE-CHECK PASS. The two measured rows read known. Six rows stay unknown: seat 2's TS2305, the select-option TS2344, and four near misses that each change one field of a measured row (same file with another code, same file with another parameter type, the test file with another source type, another file with the same message).reportover the real local turbo log (--registrythis file): exit 1.SchemaRenderer.tsx:1945readsknown (registered: objectstack-ai/objectui#12654 …), andlayout.zod.ts:25stays NEW. The samereportover that log plus the three hand-run projects' output, each line given turbo's@object-ui/PKG:type-check:prefix: exit 1. Two rows read known (patterns 1 and 2), and the six non-F4 rows stay NEW.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 19 commands from this diff. All 19 exit 0, and--ranreports19 derived, 19 run, 0 NOT-MEASURED, 0 UNRUN.scripts/ci/sits under the private root package (@objectstack/spec-monorepo,private: true), and nopackage.jsonunderscripts/ships it.skip-changesetapplies.Acceptance notes
packages/types/src/__tests__/select-option-tier1-convergence-7014.test.ts:130,138,150,157TS2344Type 'false' does not satisfy the constraint 'true'.It comes from theEqualpins on the converged select-option faces, afterSelectOptionSchemagainedkind(adad73f714, PR feat(spec): a select option declares its lifecycle kind (open / won / lost); every stage-field option must declare it #23846). The types test project compiles only oncelayout.zod.ts:25is green, so the hourly gate will red on these four rows when feat(spec)!: delete checkPageComponentViewData; the component-props rule is the one judge of a page component's retired api data binding #23784 lands, unless someone registers them or objectui re-pins them first. Handed to the seat to route; not registered here.packages/types/src/__tests__/imported-defaults-8317.test.ts:145:3. That is for PR feat(spec)!: delete checkPageComponentViewData; the component-props rule is the one judge of a page component's retired api data binding #23784's registration or repair.visibleOnand the page component'svisibility(objectstack#23543 F4) — readvisibleWhenonly, and re-point the spec-shape couplings before the next spec bump objectui#12654 lands. The gate lists an entry that matched nothing in a run.Generated by Claude Code