Filed unassigned by the objectui#6812 survey seat while counting stored address values. Recording, not choosing — domain:*, type and grading are triage's to produce.
Dedup before filing. Repo-scoped REST listing of the 356 open issues in this repo (PRs excluded) plus a local regex over title+body: zero hits for postal_code, postalCode, f_address, AddressValueSchema. A zero is not a reading on its own, so it was reverse-checked with a control that must hit — showcase.*seed|seed.*showcase returned six (#10663, #10454, #10342, #10224, #10085, #9788). The zero stands.
The fact
examples/app-showcase/src/data/seed/index.ts:343 seeds the field-zoo specimen's address as:
f_address: { street: '1 Main St', city: 'Seattle', state: 'WA', postal_code: '98101', country: 'US' }
postal_code is not a key of the value contract. AddressValueSchema (packages/spec/src/data/field-value.zod.ts) declares street / city / state / postalCode / country / countryCode / formatted — camelCase postalCode. Measured with the platform's own predicate, in one call:
valueSchemaFor({ type: 'address' }, 'stored').safeParse(seededValue)
=> success: true, data: { street: '1 Main St', city: 'Seattle', state: 'WA', country: 'US' }
⇒ the value is accepted and the postal code is silently dropped from the parse output: every member of AddressValueSchema is optional and it is a zod z.object, which strips unrecognized keys rather than refusing them. So this drift cannot surface as a value-shape violation — a stored-value scan will count it as clean.
The renderer half is where it becomes visible. @object-ui/fields reads the postal code through readPostalCode(addr), which is addr.postalCode ?? addr.zipCode (packages/fields/src/widgets/address-format.ts; zipCode is a read-only compatibility limb for data an older objectui build mis-wrote, objectstack#5143). Neither spelling matches postal_code, so the showcase specimen renders with an empty ZIP box — in the object whose whole job is to show what each field type looks like.
What is NOT claimed here
- ⛔ No renderer change is proposed.
postal_code is a third spelling of a key the contract already names once; adding a reader for it would be exactly the lenient consumer-side alias AGENTS.md #0.1 bans. The producer here is this repo's own seed.
- ⛔ No claim about customer data. This is one seeded specimen in the example app; whether any deployment stores
postal_code is not measurable from a development container.
Suggested first step
Fix the seed to the contract's spelling (postalCode). Worth a moment's triage thought on the wider question it exposes, which is a different card if it is one: an all-optional z.object value class cannot refuse a wrong key, so address is the one ADR-0104 structured class where a zero-violation count is close to unfalsifiable.
Related
- objectui#6812 — the survey that measured this (the
address population is 2 values, and this is one of them).
- objectstack#5143 — the
zipCode/postalCode round-trip fix in the widget, which named the same key and the same stripping behaviour.
Generated by Claude Code
Filed unassigned by the objectui#6812 survey seat while counting stored
addressvalues. Recording, not choosing —domain:*,typeand grading are triage's to produce.Dedup before filing. Repo-scoped REST listing of the 356 open issues in this repo (PRs excluded) plus a local regex over title+body: zero hits for
postal_code,postalCode,f_address,AddressValueSchema. A zero is not a reading on its own, so it was reverse-checked with a control that must hit —showcase.*seed|seed.*showcasereturned six (#10663, #10454, #10342, #10224, #10085, #9788). The zero stands.The fact
examples/app-showcase/src/data/seed/index.ts:343seeds the field-zoo specimen's address as:postal_codeis not a key of the value contract.AddressValueSchema(packages/spec/src/data/field-value.zod.ts) declaresstreet/city/state/postalCode/country/countryCode/formatted— camelCasepostalCode. Measured with the platform's own predicate, in one call:⇒ the value is accepted and the postal code is silently dropped from the parse output: every member of
AddressValueSchemais optional and it is a zodz.object, which strips unrecognized keys rather than refusing them. So this drift cannot surface as a value-shape violation — a stored-value scan will count it as clean.The renderer half is where it becomes visible.
@object-ui/fieldsreads the postal code throughreadPostalCode(addr), which isaddr.postalCode ?? addr.zipCode(packages/fields/src/widgets/address-format.ts;zipCodeis a read-only compatibility limb for data an older objectui build mis-wrote, objectstack#5143). Neither spelling matchespostal_code, so the showcase specimen renders with an empty ZIP box — in the object whose whole job is to show what each field type looks like.What is NOT claimed here
postal_codeis a third spelling of a key the contract already names once; adding a reader for it would be exactly the lenient consumer-side alias AGENTS.md #0.1 bans. The producer here is this repo's own seed.postal_codeis not measurable from a development container.Suggested first step
Fix the seed to the contract's spelling (
postalCode). Worth a moment's triage thought on the wider question it exposes, which is a different card if it is one: an all-optionalz.objectvalue class cannot refuse a wrong key, soaddressis the one ADR-0104 structured class where a zero-violation count is close to unfalsifiable.Related
addresspopulation is 2 values, and this is one of them).zipCode/postalCoderound-trip fix in the widget, which named the same key and the same stripping behaviour.Generated by Claude Code