Filed by the director seat (objectstack #12708, summon #24, session_01Wj1HUjzyeiBQ8atRf1ZhaL) executing decision batch #164 item 0 — maintainer 「同意」 to A on objectui#9868, which executes the maintainer's cloud#2021 ruling (「2021 可以接受有些修改刷新才生效」 ⇒ sync by render-time inheritance, no stored state).
Why the spec moves first
objectui#9868's dev measured (5730387383) that a runtime navigation entry with no label is not representable: NavigationItemSchema (packages/spec/src/ui/app.zod.ts, via BaseNavItemSchema's label: I18nLabelSchema) requires it, and objectui's own validator (packages/types/src/zod/app.zod.ts) refuses it independently with the rationale 「every real destination must have identity and text」. The optional label the ruling cited (solution-blueprint.zod.ts:189) belongs to the AI blueprint proposal schema, which apply_blueprint expands — the console never renders it. So the promise 「an unnamed entry shows its target's name」 has to be DECLARED where the console reads: here.
What lands
BaseNavItemSchema.label (or the per-kind items that carry it) becomes .optional() with a describe stating the semantic: 「absent ⇒ the entry inherits the CURRENT label of what it opens at render time — the view's label when it names a view and that view is labelled, else the object's / dashboard's label; a present label renders verbatim and is never overwritten」. ⛔ No new member, ⛔ no stored 'inherited' flag.
- The rationale 「every real destination must have identity and text」 still holds: identity is the target, text is inherited at render. Record it in the describe.
Clause-②: yes (an accept-set widening on a published schema); @objectstack/spec changeset minor; JSON-schema / reference-page regeneration; a pin per direction (absent parses; present is verbatim).
- Downstream, in order: objectui#9868 (the
packages/types validator relaxes to match; the nav renderer resolves the absent label; useNavigationSync stops writing label || pageName for an unnamed entry), then cloud#2021 (apply_blueprint stops materialising an inherited label).
Acceptance
NavigationItemSchema.safeParse({ id, type: 'object', objectName }) succeeds; with a label it succeeds and keeps it verbatim.
- The describe carries the inheritance semantic word for word; the reference page prints it.
Refs
cloud#2021 (ruling 5729748574) · objectui#9868 (measurement 5730387383, ruling on that card) · objectui#9868's release 5730427929
Dedup terms: NavigationItemSchema label optional inherit, app.navigation label defaults to target label, nav label render-time inheritance
Generated by Claude Code
Filed by the director seat (objectstack #12708, summon #24,
session_01Wj1HUjzyeiBQ8atRf1ZhaL) executing decision batch #164 item 0 — maintainer 「同意」 to A on objectui#9868, which executes the maintainer's cloud#2021 ruling (「2021 可以接受有些修改刷新才生效」 ⇒ sync by render-time inheritance, no stored state).Why the spec moves first
objectui#9868's dev measured (5730387383) that a runtime navigation entry with no
labelis not representable:NavigationItemSchema(packages/spec/src/ui/app.zod.ts, viaBaseNavItemSchema'slabel: I18nLabelSchema) requires it, and objectui's own validator (packages/types/src/zod/app.zod.ts) refuses it independently with the rationale 「every real destination must have identity and text」. The optionallabelthe ruling cited (solution-blueprint.zod.ts:189) belongs to the AI blueprint proposal schema, whichapply_blueprintexpands — the console never renders it. So the promise 「an unnamed entry shows its target's name」 has to be DECLARED where the console reads: here.What lands
BaseNavItemSchema.label(or the per-kind items that carry it) becomes.optional()with a describe stating the semantic: 「absent ⇒ the entry inherits the CURRENT label of what it opens at render time — the view's label when it names a view and that view is labelled, else the object's / dashboard's label; a present label renders verbatim and is never overwritten」. ⛔ No new member, ⛔ no stored 'inherited' flag.Clause-②: yes(an accept-set widening on a published schema);@objectstack/specchangeset minor; JSON-schema / reference-page regeneration; a pin per direction (absent parses; present is verbatim).packages/typesvalidator relaxes to match; the nav renderer resolves the absent label;useNavigationSyncstops writinglabel || pageNamefor an unnamed entry), then cloud#2021 (apply_blueprintstops materialising an inherited label).Acceptance
NavigationItemSchema.safeParse({ id, type: 'object', objectName })succeeds; with a label it succeeds and keeps it verbatim.Refs
cloud#2021 (ruling 5729748574) · objectui#9868 (measurement 5730387383, ruling on that card) · objectui#9868's release 5730427929
Dedup terms:
NavigationItemSchema label optional inherit,app.navigation label defaults to target label,nav label render-time inheritanceGenerated by Claude Code