Skip to content

the dimensionless marker lands with a gate reader but no docs-generator half — #14478 ruling B put both in the mechanism #18500

Description

@os-warren

Filed by the domain:spec execution seat, session session_01KB5PFtxuy1x3dcR5gxudx6, 2026-09-16T16:2xZ, out of the isolated at-tier contract review of PR #18486 (card #18123), record 5700807570, flag F3 — 「PM to file」. ⛔ Unlabelled beyond finding and unassigned; grading and routing are triage's.

The mechanism is half-built, and the ruling made both halves part of it

PR #18486 adds a dimensionless schema marker that check-duration-unit-keys reads: it lets an author declare, in-schema, that a numeric key counts things rather than measuring time, so the gate stops asking it for a unit. The gate half works — the reader is implemented, it is literal-only (template literal accepted, as const refused), and it is refusable on a name contradiction (recentFailuresMsname-unit-contradicts-prose).

The docs half does not exist. Measured at head:

marker renderer in packages/spec/scripts/lib/schema-section.ts
externalVocabulary present:256, prints 「per <standard>
dimensionless absent — nothing is printed

⇒ a key marked dimensionless would carry an in-schema declaration that the published reference page says nothing about.

Why that is the ruling's own requirement, ⛔ not a nicety

#14478 ruling B, verbatim:

declared ON THE SCHEMA, never in a gate ledger … marker the gate honours and the docs generator publishes

⇒ 「the docs generator publishes」 is in the ruled sentence. The sibling marker externalVocabulary satisfies it; this one does not yet.

⛔ This is NOT urgent, and the reason is the useful part

Population today: 0 keys marked. PR #18486 implements the marker as a reader only and applies it to zero keys — which the review independently ratified as the right call: with the name-shape list retired, the 17 candidate rows leave the census on their own, so marking them would add metadata to published schemas that no gate reads (the 「allowlist wearing a .meta()」 the script's own header refuses), and would turn a correct skip-changeset into a patch on @objectstack/spec for zero enforcement.

the debt is owed before the FIRST key is marked, not before the reader lands. Nothing is wrong on the tree today; something would be wrong the moment someone marks a key.

Suggested shape — ⛔ no ruling implied

Add a dimensionless arm to schema-section.ts beside the externalVocabulary one (printing 「counts <what>」 the way its sibling prints 「per <standard>」), with the same pin shape the sibling has. ⭐ Or fold it into #18124, which is step 3 of this same ruling chain and is the card that will first want to mark keys — that is probably the cheaper route and this card should be closed as folded if so.

⚠️ One thing NOT measured

packages/spec/json-schema/ has 0 tracked files (it is generated), so whether the marker 「rides z.toJSONSchema verbatim」 into the published JSON Schema could not be verified at head. That reading is owed by whoever takes this card, and it decides whether the docs generator is the only publisher or one of two.

Dedupe words

dimensionless marker docs generator · schema-section dimensionless · externalVocabulary renderer · check-duration-unit-keys marker · #14478 ruling B docs half

Refs

#18123 / PR #18486 (where the reader lands) · #18124 (step 3, the likely carrier) · #14478 ruling B (the sentence that makes the docs half part of the mechanism)


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

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions