You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor(types): burn down seven spec-symbol ledger entries, with the triage that decides the rest (#3042)
objectstack#4115's ledger opened at 156 untriaged collisions; 149 remain.
Re-exported: BreakpointName, ExportJobStatus, ImportJobStatus, ImportWriteMode,
ValidationError. Derived with z.infer: JoinStrategy, WindowFunction, which the
spec exports as zod enums rather than as types. All seven are structurally
unchanged; full repo type-check passes 76/76.
The durable output is the triage. Mutual assignability is the obvious test for
"safe re-export" and it lies three ways, all present in this repo:
- The SPEC's export resolves to `any` (NavigationItem, JoinNode, FormField) —
binding these replaces a precise local interface with `any`. Filed upstream
as objectstack#4171: 4 of the spec's 2240 exported types, all recursive
schemas annotated z.ZodType<any>.
- The LOCAL declaration resolves to `any` (FilterConditionSchema,
NavigationItemSchema).
- The local declaration carries `[key: string]: any` — the objectstack#4075
mechanism (FormField, AppSchema, PageSchema, ThemeSchema, +12).
A zod schema needs one question more than a type: FormFieldSchema has an
identical _output and a divergent _input, so re-exporting it would have silently
changed what authoring input parses. Detection probes for all four are now in
the ledger's burn-down instructions.
spec-derived-unions.test.ts gains an inverted pin asserting the three spec-side
`any` cases are STILL `any`, so fixing objectstack#4171 automatically fails
objectui CI and names the symbol that can now be burned down.
Guard fix: referencesSpec walked the declaration's own name node, so a symbol
whose name was also bound to a spec import counted as derived from itself.
Unreachable in compiling code, but a guard that depends on the compiler having
run first has a hole in it. Clean-tree result unchanged, confirming it masked
nothing.
0 commit comments