Blocked-by: objectstack-ai/objectstack#9340 (MERGED via objectstack-ai/objectstack#9370 — the block now exists in @objectstack/spec; this card is the pre-registered consumer follow-up named in that PR's "Out of scope" section).
Facts (measured during objectstack#9370, against the objectui checkout current 2026-08-17)
packages/spec now exports ListMapConfigSchema and ListViewSchema accepts a map visualization config block (keys: latitudeField / longitudeField / locationField / titleField / descriptionField / zoom (1-20) / center; strict, no defaults on zoom/center per objectui#5000's "declared camera wins, no declaration means fit to the queried records" ruling).
- The component-level reader already exists:
getMapConfig in ObjectMap.tsx validates schema.map against a local zod schema with exactly those seven keys, each with a live read (coordinate extraction, marker title/description, camera init).
- The gap:
ListView.tsx case 'map' forwards only schema.options?.map — never the view-level map block — so authoring the new spec key changes nothing at runtime. The spec liveness ledger records map as planned (deliberately not live) for exactly this reason.
- Switcher: the showcase map view's
allowedVisualizations wiring was left untouched on the spec side ("switcher wiring is the objectui follow-up").
Done when
ListView.tsx case 'map' forwards the view-level map block to plugin-map (precedence vs schema.options?.map: follow the sibling visualization blocks' existing convention).
- Visualization switcher offers
map where the sibling blocks' convention says it should (allowedVisualizations handling).
- The showcase task map view renders marker titles from its declared
map: { titleField: 'title', locationField: 'location' } (the original objectui#5001 symptom — undefined marker titles — is gone).
- Follow-up for the spec side once this lands: flip the liveness ledger
map verdict planned → live (file it on the objectstack queue; do not edit the ledger from this repo).
Dispatch condition
Not dispatchable until this repo's pinned @objectstack/spec includes the objectstack#9370 landing (probe: ListMapConfigSchema present in the consumed spec build). Original evidence trail: objectui#5001 (closed as transferred), objectui#5000, objectstack#9340, objectstack#9370.
Blocked-by: objectstack-ai/objectstack#9340 (MERGED via objectstack-ai/objectstack#9370 — the block now exists in
@objectstack/spec; this card is the pre-registered consumer follow-up named in that PR's "Out of scope" section).Facts (measured during objectstack#9370, against the objectui checkout current 2026-08-17)
packages/specnow exportsListMapConfigSchemaandListViewSchemaaccepts amapvisualization config block (keys:latitudeField/longitudeField/locationField/titleField/descriptionField/zoom(1-20) /center; strict, no defaults onzoom/centerper objectui#5000's "declared camera wins, no declaration means fit to the queried records" ruling).getMapConfiginObjectMap.tsxvalidatesschema.mapagainst a local zod schema with exactly those seven keys, each with a live read (coordinate extraction, marker title/description, camera init).ListView.tsxcase 'map'forwards onlyschema.options?.map— never the view-levelmapblock — so authoring the new spec key changes nothing at runtime. The spec liveness ledger recordsmapasplanned(deliberately notlive) for exactly this reason.allowedVisualizationswiring was left untouched on the spec side ("switcher wiring is the objectui follow-up").Done when
ListView.tsxcase 'map'forwards the view-levelmapblock to plugin-map (precedence vsschema.options?.map: follow the sibling visualization blocks' existing convention).mapwhere the sibling blocks' convention says it should (allowedVisualizationshandling).map: { titleField: 'title', locationField: 'location' }(the original objectui#5001 symptom —undefinedmarker titles — is gone).mapverdictplanned→live(file it on the objectstack queue; do not edit the ledger from this repo).Dispatch condition
Not dispatchable until this repo's pinned
@objectstack/specincludes the objectstack#9370 landing (probe:ListMapConfigSchemapresent in the consumed spec build). Original evidence trail: objectui#5001 (closed as transferred), objectui#5000, objectstack#9340, objectstack#9370.