Skip to content

types: AnyComponentSchema's declaration emit is at 99% of TypeScript's serialization ceiling against objectstack main, so the next spec delta or inline arm hits TS7056 and @object-ui/types emits no .d.ts (TS7056 family) #11573

Description

@objectstack-fleet

Filing gate: class (a), a latent build break with a measured reach. reach: the Spec Main Shape Gate (the consumer compile against objectstack main that the maintainer ruled as the only spec shape gate, objectui#9860, option C). It went red on PR objectui#11570's first head with exactly this failure. Reader: triage grades and routes it.

Filed by domain:ui seat 1 (session_01FjqrwXPfSMkSfkKYDSRkN2, seat post objectui#5560). It comes from the objectui#10872 dev's measurement on PR objectui#11570, and the log of the failing gate job 111264389756 was read by this seat. ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.

What happened

  • PR objectui#11570 (record:line_items arm, head efa2ef2) went red on Spec Main Shape Gate with packages/types/src/zod/index.zod.ts(593,14): error TS7056: The inferred type of this node exceeds the maximum length the compiler will serialize. Line 593 is export const AnyComponentSchema = defineNodeComponentUnion(z.discriminatedUnion('type', [...])).
  • @object-ui/types then emitted no .d.ts, and every consumer of @object-ui/types/zod failed with TS7016 (cli, core).
  • The same gate was green on objectui main ab18797 and on PR objectui#11568's head. Against the published @objectstack/spec 17.6.0 the PR built.
  • The PR fixed its own tip at c9e205d by giving its arm a NAMED exported type, so declaration emit references it instead of inlining it. The headroom problem stays.

Measured (the objectui#10872 dev, an instrumented copy of the worktree's TypeScript 6.0.3)

The counter is TypeScript's own approximateLength, which it compares with its 1,000,000 noTruncation ceiling.

reading AnyComponentSchema
objectui ab18797, spec 17.6.0-equivalent tree about 979,997 (fixed head on 17.6.0)
objectui ab18797 against objectstack main 5c9138b 990,509
+ the record:line_items arm inline (9,871) about 1,000,380, which is TS7056
PR objectui#11570's fix (arm named) 990,574, leaving 9,426 of headroom (0.94%)
  • The arm's own size is the same on both specs. What moved is the rest of AnyComponentSchema: about +10.6k from spec 17.6.0 to objectstack main, with no objectui change.
  • So with no objectui change at all, one more spec delta of that size puts @object-ui/types into TS7056 against main. So does one new inline arm of 9,426 or more (record:details is 5,964, so two such arms). Every objectui PR's Spec Main Shape Gate then goes red, and the next spec bump breaks objectui's own Type Check.

The family (this is its closing card)

TS7056 has already been fixed locally four times, each by naming a type. The docblocks are on objectui main:

  • packages/types/src/zod/app.zod.ts (about :766);
  • packages/types/src/zod/data-display.zod.ts (about :1008, ReportNodeZodType);
  • packages/types/src/zod/layout.zod.ts (about :1401);
  • packages/types/src/zod/reports.zod.ts (about :328).

PR objectui#11570 is the fifth occurrence. Per the seat's same-family rule, this card covers the whole family, not a single site.

Likely landing (a lead, not a ruling)

  • Name the type of each big category union inside AnyComponentSchema (for example PublicBlockComponentSchema, about 143.6k on the counter), so its body leaves AnyComponentSchema's print. The types are structurally identical, but the printed .d.ts text of existing exports changes, which the PR must state.
  • Enumeration pin (the card's acceptance): a headroom reading, preferably the gate's own run, that fails when AnyComponentSchema's serialized size crosses a stated margin below the ceiling, with every category union listed as named or inline.
  • ⛔ Not a new gate: if a pin is chosen, it is a test in packages/types beside the existing union pins.

Dedupe


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepriority:p1

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions