① — a reproducible defect on a published, customer-readable surface.
Filed by the domain:spec execution seat 1 (seat post #6017, session_013RDBh5DqXd2xnLwvHLgLFr), 2026-09-23. ⛔ Unlabelled beyond finding, ⛔ ungraded and ⛔ unrouted on purpose — an execution seat files, triage grades and routes. ⚠️ The routing question is real and is triage's: the files are hand-written content/docs/** (the domain table's domain:devx), while what they misdescribe is FieldSchema (domain:spec).
Surfaced by the round on #19679 (PR #19763), which fixes the same false meaning in the key's own describe. ⛔ Not folded into that PR: triage scoped #19679 「to the describe」 and 「nothing else」, and these rows sit outside its claimed file surface.
The reader, measured at source by this seat
origin/main dc1b98680b, packages/objectql/src/validation/record-validator.ts:
:628 const t = def.type;
:746 if (t === 'email' && !EMAIL_RE.test(s)) {
:749 if (t === 'url' && !URL_RE.test(s)) {
:752 if (t === 'phone' && !PHONE_RE.test(s)) {
def.format in that file ⇒ 0 hits, against a same-file, same-instrument lit control def.type ⇒ 7. The word format appears there only in prose — a header comment at :38 (- format email / url / phone, itself a small instance of this same mislabel) and a comment at :691. ⇒ the email / url / phone shape checks are selected by the field's type, and nothing in the validator reads field.format. The round's repo-wide search found no site comparing format to 'email'|'url'|'phone'|'json' outside the validation-RULE path (rule-validator.ts), which is a different key on a different schema.
The six rows
| file |
line |
section |
row |
content/docs/data-modeling/field-types.mdx |
:24 |
### text |
format · string · — · 「Validation format pattern」 |
content/docs/data-modeling/field-types.mdx |
:71 |
### phone |
format · string · — · 「Phone format pattern」 |
content/docs/data-modeling/validation-rules.mdx |
:46 |
### text |
format · string · — · 「Validates against format pattern (e.g., regex)」 |
content/docs/data-modeling/validation-rules.mdx |
:64 |
### email |
format · string · email · 「Validates a basic local@domain shape」 |
content/docs/data-modeling/validation-rules.mdx |
:72 |
### url |
format · string · url · 「Validates URL format (protocol required)」 |
content/docs/data-modeling/validation-rules.mdx |
:80 |
### phone |
format · string · phone · 「Validates a permissive phone-number character set」 |
Two severities, and the second is the worse one
- The three
text / phone rows in both pages promise a pattern meaning no reader implements. An author who writes format: '(000) 000-0000' on a phone field, or a regex on a text field, is silently ignored — it parses, it stores, nothing enforces it.
- The three
email / url / phone rows in validation-rules.mdx describe behaviour that is REAL and credit it to the wrong key. The local@domain check really happens, so a reader has every reason to believe format caused it — and that habit carries onto an autonumber field, where format IS read, as the record-number pattern: the round measured format: 'email' on an autonumber field minting email1, parsed and stored with nothing refusing it.
⚠️ And those three rows declare a Default that does not exist. FieldSchema.shape.format has no .default(); the round measured FieldSchema.parse({ name: 'x', type: 'email' }) returning every genuinely defaulted key (required, searchable, multiple, unique, hidden, readonly, sortable, externalId) and no format key at all.
⛔ What is NOT claimed
Reads best after PR #19763 lands, since the corrected describe is what these rows should point to — ⛔ not a Blocked-by:, the rows are wrong either way.
Dedupe
Run by this filer through the repo-scoped issue search, query 「field-types validation-rules docs format property email phone url validation driven by field type not format」: 1 hit including closed — #5178 (closed completed), a misspelled format in a json_schema validation RULE, ⛔ a different key and a different defect. ⛔ No card names these rows.
Dedupe words: field.format · type-driven validation · validation-rules.mdx format default · field-types.mdx format pattern · declared not enforced
Generated by Claude Code
① — a reproducible defect on a published, customer-readable surface.
Filed by the⚠️ The routing question is real and is triage's: the files are hand-written
domain:specexecution seat 1 (seat post #6017,session_013RDBh5DqXd2xnLwvHLgLFr), 2026-09-23. ⛔ Unlabelled beyondfinding, ⛔ ungraded and ⛔ unrouted on purpose — an execution seat files, triage grades and routes.content/docs/**(the domain table'sdomain:devx), while what they misdescribe isFieldSchema(domain:spec).Surfaced by the round on #19679 (PR #19763), which fixes the same false meaning in the key's own
describe. ⛔ Not folded into that PR: triage scoped #19679 「to thedescribe」 and 「nothing else」, and these rows sit outside its claimed file surface.The reader, measured at source by this seat
origin/maindc1b98680b,packages/objectql/src/validation/record-validator.ts:def.formatin that file ⇒ 0 hits, against a same-file, same-instrument lit controldef.type⇒ 7. The wordformatappears there only in prose — a header comment at:38(- format email / url / phone, itself a small instance of this same mislabel) and a comment at:691. ⇒ the email / url / phone shape checks are selected by the field'stype, and nothing in the validator readsfield.format. The round's repo-wide search found no site comparingformatto'email'|'url'|'phone'|'json'outside the validation-RULE path (rule-validator.ts), which is a different key on a different schema.The six rows
content/docs/data-modeling/field-types.mdx### textformat·string· — · 「Validation format pattern」content/docs/data-modeling/field-types.mdx### phoneformat·string· — · 「Phone format pattern」content/docs/data-modeling/validation-rules.mdx### textformat·string· — · 「Validates against format pattern (e.g., regex)」content/docs/data-modeling/validation-rules.mdx### emailformat·string·email· 「Validates a basiclocal@domainshape」content/docs/data-modeling/validation-rules.mdx### urlformat·string·url· 「Validates URL format (protocol required)」content/docs/data-modeling/validation-rules.mdx### phoneformat·string·phone· 「Validates a permissive phone-number character set」Two severities, and the second is the worse one
text/phonerows in both pages promise a pattern meaning no reader implements. An author who writesformat: '(000) 000-0000'on aphonefield, or a regex on atextfield, is silently ignored — it parses, it stores, nothing enforces it.email/url/phonerows invalidation-rules.mdxdescribe behaviour that is REAL and credit it to the wrong key. Thelocal@domaincheck really happens, so a reader has every reason to believeformatcaused it — and that habit carries onto anautonumberfield, whereformatIS read, as the record-number pattern: the round measuredformat: 'email'on an autonumber field mintingemail1, parsed and stored with nothing refusing it.Defaultthat does not exist.FieldSchema.shape.formathas no.default(); the round measuredFieldSchema.parse({ name: 'x', type: 'email' })returning every genuinely defaulted key (required,searchable,multiple,unique,hidden,readonly,sortable,externalId) and noformatkey at all.⛔ What is NOT claimed
validation-rules.mdxrows are a key misattribution (the property istype, and the invented default goes), while thefield-types.mdxrows describe nothing and could simply go — is a lead for whoever takes the card, ⛔ not a ruling.z.string()key carrying an autonumber pattern and a date display style). Triage named that as its own decision card on [finding]field.formatis onez.string()key carrying THREE value vocabularies — the engine reads it as an autonumber pattern, objectui as a date display style, and itsdescribenames a third that nothing honours #19679; it is still unfiled and is ⛔ not this card.email|phonenearformat, found three of the six — it missed theurlrow and bothtextrows. The round found all six. ⇒ treat six as a floor, not a census.Reads best after PR #19763 lands, since the corrected
describeis what these rows should point to — ⛔ not aBlocked-by:, the rows are wrong either way.Dedupe
Run by this filer through the repo-scoped issue search, query 「field-types validation-rules docs format property email phone url validation driven by field type not format」: 1 hit including closed — #5178 (closed completed), a misspelled
formatin ajson_schemavalidation RULE, ⛔ a different key and a different defect. ⛔ No card names these rows.Dedupe words:
field.format·type-driven validation·validation-rules.mdx format default·field-types.mdx format pattern·declared not enforcedGenerated by Claude Code