You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
picklist metadata kind — spec: picklist collection, Field.select({ picklist }), server-resolved options, translation face (phase 1 of objectstack#18164) #19518
Sub-issue of objectstack#18164 (shared picklist / global value set), filed by the director seat, summon #25 (session_012GcsUbuqFGBibkEDMRC1eE) under ruling batch #209 item 1 · letter A · maintainer 「18164 同意」 (2026-09-21, chat). ⛔ Not a claim. Position in the road: step ②「本地跑起来、看到」, records/studio; it is taken after the open product P0/P1 checklist items by the road order — ⛔ not dispatched before them. The design of record is the batch #147 item 2 ruling on the parent (comment 5715762696), reproduced here only where this layer needs it.
Scope (the spec layer — packages/spec, the domain:spec seat)
New metadata kind picklist (name ruled picklist on the parent, ruling 5904864936, batch 🔗 Broken links detected in documentation #251 item 3 · Q2 A): { name, label, description?, options: SelectOption[] } — SelectOption is today's field option shape, ⛔ no new option shape; package-owned; file pattern *.picklist.ts; registered before object in load order; a stack collection like any other metadata (registry row, JSON schema, manifest listing, allowRuntimeCreate per the ADR-0088 rules for authored kinds).
Server-resolved contract: the field metadata served to clients carries the resolved options (so objectui's renderers, validation and filters are unchanged in phase 1); the spec declares that shape — the resolution itself is the runtime sub-issue.
Translation face: TranslationData.picklists.<name>.{ label?, options: { value: label } }; a field referencing a picklist inherits it; field-level options translation remains for inline options.
Package-level extension shapepicklistExtensions: [{ extend, options }] (the objectExtensions idiom), additive only — removal/rename stays with the owning package. The per-organization overlay (ADR-0005, allowOrgOverride) is phase 2 and ⛔ not declared here.
Also with this card (Tier H, its own small docs PR, the maintainer merges)
The feature-map line in docs/NORTH-STAR.md 「路上的功能点」 step ② records group — records · 共享选项集:多个对象复用同一份选项,客户按组织追加值而不改应用源码 · records-forms · <the two new item ids> — and the two records-forms checklist items (one picklist, two objects; org A adds a value, A writes it, B is refused; locale switch relabels) authored under docs/qa/platform-checklist/areas/records-forms.json (ADR-0136 D2.4). Until that PR lands the line reads 清单项待写.
Acceptance
Schema tests: the kind parses; picklist + options together refused (neither: #20827); the served field shape carries resolved options; translation keys resolve; check:spec-* families green; changeset minor (new published kind). Not in v1: cascading picklists (per-option visibleWhen / dependsOn exist), unrestricted mode, per-record-type value restriction.
Dedupe words: picklist, global value set, valueSet, shared select options, _picklists.ts, picklistExtensions.
Path: 本地跑起来、看到 — records-forms.picklist-shared-across-objects, records-forms.picklist-org-append | P2
Sub-issue of objectstack#18164 (shared picklist / global value set), filed by the director seat, summon #25 (
session_012GcsUbuqFGBibkEDMRC1eE) under ruling batch #209 item 1 · letter A · maintainer 「18164 同意」 (2026-09-21, chat). ⛔ Not a claim. Position in the road: step ②「本地跑起来、看到」, records/studio; it is taken after the open product P0/P1 checklist items by the road order — ⛔ not dispatched before them. The design of record is the batch #147 item 2 ruling on the parent (comment 5715762696), reproduced here only where this layer needs it.Scope (the spec layer —
packages/spec, thedomain:specseat)picklist(name ruledpickliston the parent, ruling5904864936, batch 🔗 Broken links detected in documentation #251 item 3 · Q2 A):{ name, label, description?, options: SelectOption[] }—SelectOptionis today's field option shape, ⛔ no new option shape; package-owned; file pattern*.picklist.ts; registered beforeobjectin load order; a stack collection like any other metadata (registry row, JSON schema, manifest listing,allowRuntimeCreateper the ADR-0088 rules for authored kinds).Field.select({ picklist: 'industry' }), mutually exclusive withoptions: both on a select type is refused at the schema door with a prescription. (Neither: split to Aselect/radiofield with neitheroptionsnorpicklist: refuse it at theFieldSchemadoor (an accept-set narrowing), or keep it at the ADR-0078 completeness gate? (split from #19518) #20827 for the maintainer, seat ruling on this card, because refusing it narrows stored data.)options(so objectui's renderers, validation and filters are unchanged in phase 1); the spec declares that shape — the resolution itself is the runtime sub-issue.TranslationData.picklists.<name>.{ label?, options: { value: label } }; a field referencing a picklist inherits it; field-leveloptionstranslation remains for inline options.picklistExtensions: [{ extend, options }](theobjectExtensionsidiom), additive only — removal/rename stays with the owning package. The per-organization overlay (ADR-0005,allowOrgOverride) is phase 2 and ⛔ not declared here.osCLI compile / validate path accepts the new kind and refuses the two-or-neither case (CLI isdomain:cli; if the change lands inpackages/cliit is a sibling PR by that seat, filed from this card). Filed as picklist kind: theosCLI compile / validate / lint path accepts*.picklist.ts,picklistsandpicklistExtensions, andos validaterefuses apicklistthat names no picklist (Scope 6 of #19518) #20825; theos i18n extractwalk rides PR feat(spec): thepicklistmetadata kind — a shared option list select fields reference by name (#19518) #20823.Also with this card (Tier H, its own small docs PR, the maintainer merges)
The feature-map line in
docs/NORTH-STAR.md「路上的功能点」 step ② records group —records · 共享选项集:多个对象复用同一份选项,客户按组织追加值而不改应用源码 · records-forms · <the two new item ids>— and the tworecords-formschecklist items (one picklist, two objects; org A adds a value, A writes it, B is refused; locale switch relabels) authored underdocs/qa/platform-checklist/areas/records-forms.json(ADR-0136 D2.4). Until that PR lands the line reads清单项待写.Acceptance
Schema tests: the kind parses;
picklist+optionstogether refused (neither: #20827); the served field shape carries resolvedoptions; translation keys resolve;check:spec-*families green; changesetminor(new published kind). Not in v1: cascading picklists (per-optionvisibleWhen/dependsOnexist), unrestricted mode, per-record-type value restriction.Dedupe words: picklist, global value set, valueSet, shared select options, _picklists.ts, picklistExtensions.
Generated by Claude Code