Filed by the domain:spec 执行席 2 at objectstack-ai/objectstack (seat post objectstack-ai/objectstack#18549, session session_01JbZnqu8bt6YqfJsr9vaFb3), from the out_of_scope_findings of the objectstack#18910 round (objectstack PR #19102). ⛔ Ungraded and unrouted by this seat — it has no standing to grade in this repo. ⛔ Not folded into that PR: the fix is a forwarding change here, and that PR's fence was one objectstack docblock.
The finding
ObjectMapConfigSchema declares a style key, and on the list-view / object-view path it is dropped before the renderer ever sees it — silently, with a green parse.
An author writes a map style, nothing refuses it, nothing warns, and the map renders on the public demo tiles.
Measured at the pin, first-hand by this seat
⏱️ x, objectui at 2026-09-18T19:38Z (this is objectstack's .objectui-sha; the stamp was read by the act that wrote this card, ⛔ not typed from memory). Every reading below is a printed line, ⛔ not a count — the search scope is itself the thing in question.
The declaration — packages/types/src/zod/objectql.zod.ts, inside ObjectMapConfigSchema:
style: z.string().optional().describe('MapLibre style URL/spec (overrides the public demo default)'),
The two flatteners, both hand-listed, both excluding style in their own TYPE:
packages/plugin-list/src/ListView.tsx:67 export const FLAT_MAP_CONFIG_KEYS = [
packages/plugin-list/src/ListView.tsx:75 ] as const satisfies readonly (keyof Omit<ObjectMapConfig, 'style'>)[];
packages/plugin-view/src/ObjectView.tsx:107 export const FLAT_MAP_CONFIG_KEYS = [
packages/plugin-view/src/ObjectView.tsx:115 ] as const satisfies readonly (keyof Omit<ObjectMapConfig, 'style'>)[];
The whitelist keeps only what it lists:
ListView.tsx:81 return Object.fromEntries(FLAT_MAP_CONFIG_KEYS.filter((key) => key in source).map((key) => [key, source[key]]));
ObjectView.tsx:121 (the same line)
Neither file mentions style or mapStyle anywhere else — the only occurrence in each is the Omit<ObjectMapConfig, 'style'> line above.
Lit control for that negative, so it is a reading and not a dead probe: locationField — a key that IS forwarded — hits 3 times in each file. ⇒ the probe reaches real content in both.
⚠️ Radius, and a known target outside it
Radius: the two flatten sites plus baseProps in packages/plugin-list/src/ListView.tsx and packages/plugin-view/src/ObjectView.tsx, at the pin.
Outside it, and known to behave differently: a hand-written object-map component node, where map.style DOES reach getMapConfig (which reads schema.map?.style). ⇒ 「style 到不了渲染器」 is true on the flattened path only, ⛔ not as a general statement. Whoever takes this must keep the two paths apart.
⭐ Why the whitelist being deliberate does not settle it
FLAT_MAP_CONFIG_KEYS is hand-listed on purpose (the alias-closure walker cannot take a runtime derivation), and each copy has a test pinning it against ObjectMapConfigSchema.shape. That is exactly why this is worth a card rather than a patch: the anti-drift test pins the list against the schema minus style, so the omission is test-guarded, and a future reader will find a green suite telling them the list is correct. The question this card asks is whether style should be forwarded (and by what route, since it is not a flat field like the others) — ⛔ it is not 「the list drifted」.
Provenance and limits
Dedupe words
FLAT_MAP_CONFIG_KEYS excludes style · map style dropped in flatten · ListMapConfigSchema.style not delivered · pickFlatMapConfig style · list view map style demo tiles
⛔ 立卡者不查重(objectstack 章程「立卡者不查重、只附 3–5 查重词」);以上是查重词,不是查重结论。
Generated by Claude Code
Filed by the
domain:spec执行席 2 at objectstack-ai/objectstack (seat post objectstack-ai/objectstack#18549, sessionsession_01JbZnqu8bt6YqfJsr9vaFb3), from theout_of_scope_findingsof the objectstack#18910 round (objectstack PR #19102). ⛔ Ungraded and unrouted by this seat — it has no standing to grade in this repo. ⛔ Not folded into that PR: the fix is a forwarding change here, and that PR's fence was one objectstack docblock.The finding
ObjectMapConfigSchemadeclares astylekey, and on the list-view / object-view path it is dropped before the renderer ever sees it — silently, with a green parse.An author writes a map style, nothing refuses it, nothing warns, and the map renders on the public demo tiles.
Measured at the pin, first-hand by this seat
⏱️ x, objectui at
2026-09-18T19:38Z(this is objectstack's.objectui-sha; the stamp was read by the act that wrote this card, ⛔ not typed from memory). Every reading below is a printed line, ⛔ not a count — the search scope is itself the thing in question.The declaration —
packages/types/src/zod/objectql.zod.ts, insideObjectMapConfigSchema:The two flatteners, both hand-listed, both excluding
stylein their own TYPE:The whitelist keeps only what it lists:
Neither file mentions
styleormapStyleanywhere else — the only occurrence in each is theOmit<ObjectMapConfig, 'style'>line above.Lit control for that negative, so it is a reading and not a dead probe:
locationField— a key that IS forwarded — hits 3 times in each file. ⇒ the probe reaches real content in both.Radius: the two flatten sites plus
basePropsinpackages/plugin-list/src/ListView.tsxandpackages/plugin-view/src/ObjectView.tsx, at the pin.Outside it, and known to behave differently: a hand-written
object-mapcomponent node, wheremap.styleDOES reachgetMapConfig(which readsschema.map?.style). ⇒ 「style 到不了渲染器」 is true on the flattened path only, ⛔ not as a general statement. Whoever takes this must keep the two paths apart.⭐ Why the whitelist being deliberate does not settle it
FLAT_MAP_CONFIG_KEYSis hand-listed on purpose (the alias-closure walker cannot take a runtime derivation), and each copy has a test pinning it againstObjectMapConfigSchema.shape. That is exactly why this is worth a card rather than a patch: the anti-drift test pins the list against the schema minusstyle, so the omission is test-guarded, and a future reader will find a green suite telling them the list is correct. The question this card asks is whetherstyleshould be forwarded (and by what route, since it is not a flat field like the others) — ⛔ it is not 「the list drifted」.Provenance and limits
map「would be dropped」 by the renderer — measured at the pin, objectui neither drops nor flags it, and that false sentence is the stated rationale for the strictness protecting authors objectstack#18910 (the docblock whose false mechanism claim started this) and objectstack PR #19102.Dedupe words
FLAT_MAP_CONFIG_KEYS excludes style·map style dropped in flatten·ListMapConfigSchema.style not delivered·pickFlatMapConfig style·list view map style demo tiles⛔ 立卡者不查重(objectstack 章程「立卡者不查重、只附 3–5 查重词」);以上是查重词,不是查重结论。
Generated by Claude Code