Skip to content

spec: remove the deprecated LocationCoordinatesSchema / CurrencyValueSchema dead exports at the next spec major (ADR-0104) #8562

Description

@qq9340100

Split from the #4001 strictness campaign's data/ batch (the Batch C premise check). This issue is the removal tracker the strictness ledger's no door row convention requires — the enforce-or-remove decision itself is already made and recorded; nothing here is open for debate, only scheduled.

Facts (measured 2026-08-13 on main)

packages/spec/src/data/field.zod.ts exports two @deprecated value shapes that nothing consumes:

Schema Consumers outside its own tests Contradiction with the enforced contract
LocationCoordinatesSchema none — the only non-test reference anywhere is a type-alias-convention.pin.test.ts row declares {latitude, longitude}; the platform stores {lat, lng} (LocationValueSchema / valueSchemaFor, ADR-0104 D1; the field-zoo round-trip oracle)
CurrencyValueSchema none — own field.test.ts block + a type-alias pin row; field-value.test.ts additionally pins that the enforced contract REJECTS this object shape declares {value, currency}; a currency field's stored value is a BARE NUMBER everywhere (validator, SQL driver float column, import coercion)

Neither schema is referenced by any other schema (no carrier key), so both are unreachable from every metadata-type root by construction; neither is parsed outside its own test file. Sibling-repo sweep (objectui): zero references.

The decision is already made

ADR-0104's "Reality wins" section: CurrencyValueSchema is deleted; location adopts the stored {lat, lng} (delivered as LocationValueSchema in field-value.zod.ts) — "An exported-but-unconsumed value schema is exactly the inert metadata ADR-0078 forbids." Both JSDoc deprecations are on main and say "Removal rides the next spec major."

Scope of the removal (when the next spec major opens)

Why not .strict() them meanwhile

They are the strictness ledger's no door class: no carrier, no parse — .strict() is a property of a parse, and with no parse it enforces nothing while making a dead slot look load-bearing (#4583). The ledger row is being re-verdicted from authorable to no door pointing here (PR referencing #4001).

Refs: #4001 (campaign anchor), ADR-0104, ADR-0049, ADR-0078.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions