Filing gate: ① defects with named landing sites. Finding class (b): a published type whose TSDoc declares a shape the type does not carry, so any value type-checks. Same class as #19871 (ViewMetadata, PR #19919). The sites below are other symbols, and each needs its own fix shape.
Found by the os-dev round on #19871, from a TypeScript compiler-API census over 2359 exported aliases in packages/spec. It found 11 aliases resolving to unknown before that PR and 10 after. Filed by the domain:spec execution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr, seat post #6017). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.
The sites
Declarations were re-read by this seat on origin/main beac798026. The unknown readings and the causes are the round's.
| exported type |
declaration |
cause (the round's reading) |
TSDoc / docs promise |
ViewMetadataParsed |
ui/view.zod.ts: z.infer<typeof ViewMetadataSchema> |
z.infer of a union whose members are cast to z.ZodTypeAny |
「Post-parse shape of ViewMetadata」 |
InlineAction |
ui/action.zod.ts: z.input<typeof InlineActionSchema> |
the input type of a lazySchema(z.preprocess(…)) is unknown |
the pre-parse shape; references/ui/action.mdx advertises it |
AssembledViewArtifact (and …Parsed) |
ui/assembled-views.zod.ts: z.input<typeof AssembledViewArtifactSchema> |
a union of VIEW_METADATA_MEMBERS values cast to z.ZodTypeAny |
「One assembled viewItems: entry (input shape)」; exported from the root index |
JoinedReportBlock |
ui/report.zod.ts: z.input<typeof JoinedReportBlockSchema> |
the schema is annotated z.ZodTypeAny |
references/ui/report.mdx advertises its shape |
⚠️ ViewMetadataParsed is not a one-line fix. diagnoseViewMetadata returns data: parsed.data (unknown), which is not assignable to the members' output union (TS2322, measured by the round). That function needs an edit too.
Why it matters
A TypeScript author, or an AI writing typed code, who annotates with one of these names gets no checking at all, while the name and TSDoc say otherwise. check:exported-any reads ZodType<any> annotations only, so no gate sees an alias that resolves to unknown (the round noted a ~60-line compiler-API census could become one). The runtime parse still refuses bad bodies, so no wrong data reaches a store.
Named producers: TypeScript consumers of @objectstack/spec who annotate with these types. No in-repo consumer outside spec tests was found for any of the four.
Suggested shape (⛔ not a ruling)
Per site, derive the type from the member schemas, as PR #19919 does for ViewMetadata. Where the ZodTypeAny cast exists to dodge TS7056 or declaration size, measure that cost first. #19324 showed that cost can be real.
Dedupe
MCP issue search, this repo, at 2026-09-23T19:26Z: exported type resolves to unknown InlineAction JoinedReportBlock AssembledViewArtifact ZodTypeAny returned 1 hit, #19871 (the ViewMetadata site, a different symbol).
Dedupe words: exported type unknown z.input preprocess · ZodTypeAny cast type unknown · InlineAction unknown · JoinedReportBlock unknown · AssembledViewArtifact unknown · ViewMetadataParsed unknown
Blocked-by: #20230
Generated by Claude Code
Filing gate: ① defects with named landing sites. Finding class (b): a published type whose TSDoc declares a shape the type does not carry, so any value type-checks. Same class as #19871 (
ViewMetadata, PR #19919). The sites below are other symbols, and each needs its own fix shape.Found by the
os-devround on #19871, from a TypeScript compiler-API census over 2359 exported aliases inpackages/spec. It found 11 aliases resolving tounknownbefore that PR and 10 after. Filed by thedomain:specexecution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr, seat post #6017). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.The sites
Declarations were re-read by this seat on
origin/mainbeac798026. Theunknownreadings and the causes are the round's.ViewMetadataParsedui/view.zod.ts:z.infer<typeof ViewMetadataSchema>z.inferof a union whose members are cast toz.ZodTypeAnyInlineActionui/action.zod.ts:z.input<typeof InlineActionSchema>lazySchema(z.preprocess(…))isunknownreferences/ui/action.mdxadvertises itAssembledViewArtifact(and…Parsed)ui/assembled-views.zod.ts:z.input<typeof AssembledViewArtifactSchema>VIEW_METADATA_MEMBERSvalues cast toz.ZodTypeAnyviewItems:entry (input shape)」; exported from the root indexJoinedReportBlockui/report.zod.ts:z.input<typeof JoinedReportBlockSchema>z.ZodTypeAnyreferences/ui/report.mdxadvertises its shapeViewMetadataParsedis not a one-line fix.diagnoseViewMetadatareturnsdata: parsed.data(unknown), which is not assignable to the members' output union (TS2322, measured by the round). That function needs an edit too.Why it matters
A TypeScript author, or an AI writing typed code, who annotates with one of these names gets no checking at all, while the name and TSDoc say otherwise.
check:exported-anyreadsZodType<any>annotations only, so no gate sees an alias that resolves tounknown(the round noted a ~60-line compiler-API census could become one). The runtime parse still refuses bad bodies, so no wrong data reaches a store.Named producers: TypeScript consumers of
@objectstack/specwho annotate with these types. No in-repo consumer outside spec tests was found for any of the four.Suggested shape (⛔ not a ruling)
Per site, derive the type from the member schemas, as PR #19919 does for
ViewMetadata. Where theZodTypeAnycast exists to dodge TS7056 or declaration size, measure that cost first. #19324 showed that cost can be real.Dedupe
MCP issue search, this repo, at 2026-09-23T19:26Z:
exported type resolves to unknown InlineAction JoinedReportBlock AssembledViewArtifact ZodTypeAnyreturned 1 hit, #19871 (theViewMetadatasite, a different symbol).Dedupe words:
exported type unknown z.input preprocess·ZodTypeAny cast type unknown·InlineAction unknown·JoinedReportBlock unknown·AssembledViewArtifact unknown·ViewMetadataParsed unknownBlocked-by: #20230
Generated by Claude Code