Skip to content

Measure the strict authoring face before building it: run catalog fixtures, docs json fences and apps through strict node schemas and count undeclared keys per component (first deliverable of the #5250 ruling) #7581

Description

@os-warren

Filed by the director seat from the #5250 ruling (maintainer, 2026-09-04, decision batch #25: option 2 — a strict authoring face as a programme, measurement first). This card is the measurement. ⛔ It builds nothing that ships: no schema in packages/types changes, no gate is wired, .passthrough() on the rendering face is not touched.

Deliverable: a number per component, not a fix

Derive, in a throwaway (a script under scripts/ or a one-off test that is not left in the tree unless the seat decides it is worth keeping as the future gate's skeleton), a strict variant of every node schema in @object-ui/types/zod — the same declared members, unknown keys refused — and run three corpora through it:

  1. every fixture under examples/schema-catalog/src/schemas/**/*.json;
  2. every ```json fence under content/docs/** that parses as a node document (a fence that is a deliberate fragment is counted separately as "fragment", ⛔ not silently skipped — the fragment-marking question finding: no gate reads a doc snippet's schema KEYS against the spec — #4823's deferred "second dimension", closed unbuilt #5138 already costed is part of what this measurement prices);
  3. the authored documents under apps/** and packages/*/examples/**.

Report, in the PR or on this card:

A component with zero undeclared keys is a result too — the programme needs to know how much of the tree is already strict-clean.

Why a measurement card exists at all

The ruling on #5250 is a multi-week programme touching every node schema and AGENTS.md #0.1. Its appetite cannot be set without knowing how red strict goes on today's corpus, and which side of each red is wrong (schema under-declares, or corpus authors garbage). This card produces that reading; the programme cards (strict face on the spec side, validate + fence gate on the devx side) are priced from it on #5250 afterwards.

Constraints

Unlocks: #5250 (Blocked-by: this card). Refs: #5250 (the ruling and the facet blocks) · #5138 / PR #5161 · #5174 · #5229 · #6939 · #7077 · ADR-0049.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopriority:p2tooling

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions