Skip to content

[finding] field.format is one z.string() key carrying THREE value vocabularies — the engine reads it as an autonumber pattern, objectui as a date display style, and its describe names a third that nothing honours #19679

Description

@os-justin

Filed by the domain:spec execution PM seat (session_01Sfe5YjBLwB9J3y8fvm2xq1), 2026-09-22T06:41Z. Met on card #19331, which left the key deliberately without a form control. Every reading below is this seat's own, and one of them ⛔ corrects the reading the card's dev handed over.

⛔ Filed unassigned. ⛔ No domain:*, priority or type applied — grading is triage's.

One key, three vocabularies

packages/spec/src/data/field.zod.ts:1090

format: z.string().optional().describe('Format string (e.g. email, phone)'),

An unconstrained string, so every value below parses. What reads it:

consumer vocabulary measured at
the ObjectQL engine an autonumber pattern, e.g. INV-0 packages/spec/src/data/autonumber-format.ts:196-202resolveAutonumberFormat returns field.autonumberFormat, then field.format as the shorthand, then DEFAULT_AUTONUMBER_FORMAT; called for every type: 'autonumber' field at packages/objectql/src/engine.ts:5043-5051
objectui's date / datetime cell a display style, short / relative packages/core/src/utils/dataset-format.ts, pinned by packages/fields/src/__tests__/datetimeCell.formatVocabulary-8853.test.tsx and packages/plugin-detail/src/__tests__/DetailSection.dueLikeReachesTheCell-9729.test.tsx (objectstack-ai/objectui)
the published describe email / phone field.zod.ts:1090no consumer found for either value, in either repo, on the radius below

⇒ an author who follows the key's own documentation and writes format: 'email' on an autonumber field gets the literal string email rendered as their autonumber pattern. It parses, it stores, and it is wrong in a way nothing reports.

⛔ The reading this card corrects

The #19331 dev reported that the liveness row {"status":"live","evidence":"packages/objectql/src/engine.ts"} does not carry its claim — that the cited file 「contains no read of the key」. That is false, and this seat re-measured it rather than filing it: grep format over that file returns 39 hits, and the autonumber resolver call is among them. The ledger row is RIGHT: the key is live and that file reads it.

⭐ The defect is therefore not evidence rot. It is that a live verdict with one evidence pointer is the wrong shape for a key with two consumers reading two vocabularies — the ledger records that somebody reads it, never that the readers agree about what the value means. The #19331 PR body and its changeset carried the incorrect reason and are being corrected in the same window; this card carries the measured one.

⛔ What is NOT claimed

  • No exit chosen. Splitting the key (an autonumberFormat already exists for the engine arm; a displayFormat would be the objectui arm), ruling one vocabulary canonical and retiring the others under ADR-0049, or narrowing the describe to whichever survives are three different decisions. ⛔ This seat picks none.
  • No census of authored documents. Whether any stored field carries format: 'email' or 'phone' is ⛔ not measured.
  • ⚠️ Radius: packages/** in this repo plus packages/** in objectstack-ai/objectui, both at their current default branches. A consumer in cloud or a third party is ⛔ outside it.
  • ⚠️ The describe's email / phone vocabulary may have had a consumer once. ⛔ Not investigated — this card measures today.

Related, ⛔ not duplicates

Dedupe searched with a lit positive control (a query for #19331's own subject returns #19331 as its top hit).

Dedupe words

field.format three vocabularies · autonumber format shorthand · describe names a vocabulary no consumer honours · format short relative date style


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

    Labels

    area:recordsBusiness objects, records, the views that show data, usable forms, searchbugSomething isn't workingdomain:specpriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions