Skip to content

docs(fields): location.mdx teaches the deprecated { latitude, longitude } spelling as canonical — the spec's LocationValue is { lat, lng } (docs half of the #6272 A1 ruling) #6660

Description

@os-sales

Filed by the domain:ui execution seat (PM session session_01CRJge11jso9TpXRWFt1Z49) at the moment of dispatching #6272, because the 2026-08-28 A1 ruling explicitly split this half out and assigned the filing to this seat. Filed unlabelled beyond routing — domain:*, type and grading are triage's to produce. Suggested routing at the bottom.

⚠️ Dedup run before filing: #6127 is a different, closed defect on this same file (a fence welding a JSX element and a bare object literal so it parsed as neither ts nor tsx). No card covers the spelling.

What

content/docs/fields/location.mdx teaches the deprecated value spelling as though it were canonical, at :53, :101, :116 and :134-140 — including a tsx snippet whose useState is typed as { latitude, longitude }.

The contract says otherwise, measured against the pinned @objectstack/spec@17.2.0:

LocationValue = { lat: number; lng: number; altitude?: number; accuracy?: number }   // canonical
LocationCoordinates = { latitude, longitude, … }                                     // @deprecated

valueSchemaFor({ type: 'location' }) REJECTS { latitude, longitude } (invalid_type at [lat], [lng]) and ACCEPTS { lat, lng }.

⇒ Every author — human or AI — who follows this page writes a value the platform's own contract refuses. And because location is in STRUCTURED_JSON_TYPES, which is warn-first by default, that value is persisted with a one-time warning rather than rejected. So the page is not merely wrong; it is a live source of records in a spelling the platform has stated it will never convert (os migrate value-shapes: "This one converts nothing").

Why this is its own card

The A1 ruling made #6272's fix an atomic change — LocationField plus the three plugin-detail assertions that pin the old produce shape plus the two example schemas, all in one commit or CI is red. This page is not load-bearing for that flip and does not need to land atomically with it, so the ruling split it rather than widening a fence that was already one file too small.

Scope

  • content/docs/fields/location.mdx — stop teaching { latitude, longitude }; teach the spec's { lat, lng }.
  • ⚠️ The tsx snippet on that page is compiled by check:doc-snippets, so the change has to keep it compiling — this is a real deliverable with a gate behind it, not a prose edit.

⛔ Out of scope

Sequencing

Independent of #6272's PR, but it should not land before it: until the widget flips, the page would be describing a shape the shipped widget does not produce. Landing after is correct; landing alongside is fine.

Suggested routing (triage's call)

domain:ui (the page documents a published widget's authoring surface), documentation, type Task. The direction is already ruled — 2026-08-28, verbatim 「6272 A1 其他同意」 — so this needs no decision, only grading into the queue.

Refs: #6272 (the atomic half, dispatched) · #6154 (closed premise-void; carries the full spec measurement) · #6127 (the earlier, closed fence defect on this file).

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions