Found by the docs audit of the first-run path (#10563).
What is wrong
content/docs/data-modeling/validation-rules.mdx is described in its own
frontmatter as
"Default validation behavior, required properties, and constraints for each
ObjectStack field type"
It has ### sections for 44 of the 49 members of the FieldType enum
(packages/spec/src/data/field.zod.ts:39-101). Missing:
secret — reversible encrypted-at-rest credential (ADR-0100). Its constraints
are the least guessable of the five: fail-closed, writes throw with no registered
ICryptoProvider, ciphertext handle in sys_secret, masked on read.user — person picker specialized to sys_user; multiple: true ⇒ JSON array.composite — single embedded sub-object.repeater — repeating embedded sub-object array.record — name-keyed map of embedded sub-objects (ADR-0007).
The sibling gallery page has all 49 (content/docs/data-modeling/field-types.mdx,
verified: 49 ### headings against a 49-member enum), so the drift is one-sided —
validation-rules.mdx stopped tracking new field types while field-types.mdx
kept up.
Wider point for triage
This page carries three of the defects found in the whole content/docs/** card-1
sweep — this one plus the location stored-value error (#10584) and the currency
"Stored as { value, currency } pair" error — while the page it duplicates,
field-types.mdx, carries one. The two pages document overlapping ground (per-type
property tables + constraints) and are adjacent in data-modeling/meta.json.
Whether the right fix is to complete this page or to fold it into field-types.mdx
is a maintainer call, not an audit call, but patching the five gaps without deciding
that leaves the duplication that produced them.
Back-link: #10563
Found by the docs audit of the first-run path (#10563).
What is wrong
content/docs/data-modeling/validation-rules.mdxis described in its ownfrontmatter as
It has
###sections for 44 of the 49 members of theFieldTypeenum(
packages/spec/src/data/field.zod.ts:39-101). Missing:secret— reversible encrypted-at-rest credential (ADR-0100). Its constraintsare the least guessable of the five: fail-closed, writes throw with no registered
ICryptoProvider, ciphertext handle insys_secret, masked on read.user— person picker specialized tosys_user;multiple: true⇒ JSON array.composite— single embedded sub-object.repeater— repeating embedded sub-object array.record— name-keyed map of embedded sub-objects (ADR-0007).The sibling gallery page has all 49 (
content/docs/data-modeling/field-types.mdx,verified: 49
###headings against a 49-member enum), so the drift is one-sided —validation-rules.mdxstopped tracking new field types whilefield-types.mdxkept up.
Wider point for triage
This page carries three of the defects found in the whole
content/docs/**card-1sweep — this one plus the
locationstored-value error (#10584) and thecurrency"Stored as
{ value, currency }pair" error — while the page it duplicates,field-types.mdx, carries one. The two pages document overlapping ground (per-typeproperty tables + constraints) and are adjacent in
data-modeling/meta.json.Whether the right fix is to complete this page or to fold it into
field-types.mdxis a maintainer call, not an audit call, but patching the five gaps without deciding
that leaves the duplication that produced them.
Back-link: #10563