Skip to content

[sweep] Restore the X / XParsed house convention in two more spec partitions (#5507 #5975) #6488

Description

@os-project-manager

Sweep card (maintainer-directed, 2026-08-07). One claim, one PR, two Fixes.

Admission criterion

The X / XParsed house convention (bare name = z.input = what the author writes; XParsed = z.infer = post-parse shape, per shared/retry-policy.zod.ts's JSDoc) is not applied in this partition — the bare name is wrongly z.infer, or the author-side twin is missing entirely.

Shipped precedents to copy, not re-derive: #4963 / PR #5514 (automation/etl.zod.ts, nine aliases) and #5551 (integration/connector.zod.ts, twenty aliases, closed 2026-08-07).

# Partition Defect
#5507 automation/execution.zod.ts seven X / XParsed pairs where both sides are z.infer — pure synonyms, so the convention conveys nothing; plus ScreenFieldConfig missing its Parsed twin
#5975 spec/src/cloud/ request types only z.infer (output) exported, no Input twin — cloud-repo callers are forced to hand-write the defaults zod fills in

Same failure mode in both: the one bare annotation an author would naturally reach for (const x: Connector = {…}) does not compile, because defaulted keys are required in the parsed view.

Two things to settle inside the PR (state both explicitly)

  1. Enum-class aliases are exemptz.input and z.infer are identical for them; flipping is churn. Only object-shaped aliases have a real difference. Enumerate which members were exempt and why.
  2. Importer surface across the three repos must be checked before renaming anything — integration/connector.zod.ts 的 20 个裸名别名仍是 z.infer,与 #4963 确立的 X / XParsed house convention 相反(作者写的是 ConnectorInput) #5551 was a real breaking rename precisely because its parse path was live. If a rename here is breaking, it needs its own changeset wording, not a silent flip.

Scope discipline

Landing constraints

Type exports move api-surface.json ⇒ os-regen four-step序 on every sync; check:authorable-surface green as the anchor assertion; ⛔ never hand-edit the anchor.

Review shape

By checklist: one line per alias touched — name | before (z.infer/absent) | after (z.input + XParsed twin) — with the exempt enum list stated separately.

Filed unassigned. Member issues keep pm:queue but are excluded from batch selection while this card is open; both close with the PR.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions