Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/NORTH-STAR.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
- records · 写入规则在服务端兑现,撞车响亮、后悔得了、改过什么看得见 · records-forms · validation-rule-type-matrix, object-hook-lifecycle, delete-behavior-matrix, concurrent-edit-conflict, record-edit-undo, field-history-tracking
- records · 记录上的动作与协作:按钮在声明的位置、参数契约在派发时兑现、讨论与 @ 提醒 · records-forms · action-location-matrix, action-param-widgets, upload-guard-blocks-confirm, record-discussion-mentions
- records · 搜得到:跨字段、字段限定、权限一致、拼音、即时新鲜;全局搜索与命令面板同一条路 · search · cross-field-object-search, field-scoped-narrowing, rls-both-personas, pinyin-flag-both-sides, freshness-and-empty, console-global-search, command-palette-navigation
- records · 共享选项集:多个对象复用同一份选项,客户按组织追加值而不改应用源码 · records-forms · picklist-shared-across-objects, picklist-org-append
- records · 共享选项集:多个对象复用同一份选项 · records-forms · picklist-shared-across-objects
- access · 行级与字段级权限两边都对:受限成员只看自己的,该只读的只读、该看不见的不回给前端 · access-security · rls-both-sides, scope-depth-asymmetry, fls-mask-and-strip
- access · 增删改查逐格兑现,改完权限立刻换脸,自查接口与服务端一致 · access-security · crud-permission-matrix, permission-matrix-edit-loop, me-permissions-aggregation-parity
- access · 写入路径挡得住:只读剥离、伪造与转移 owner 被拒、默认可见度只能收紧 · access-security · write-path-guards, owd-save-gate
Expand Down
23 changes: 18 additions & 5 deletions docs/qa/platform-checklist/areas/records-forms.json
Original file line number Diff line number Diff line change
Expand Up @@ -4315,7 +4315,7 @@
"title": "One shared picklist on two objects: both are served the same resolved options, a package extension adds to both, a value outside the set is refused, and a locale switch relabels",
"since": null,
"status": "planned",
"revision": 1,
"revision": 2,
"priority": "P2",
"surface": "mixed",
"personas": [
Expand Down Expand Up @@ -4354,7 +4354,7 @@
"an extension that duplicates, replaces or removes a base value is a FAIL: extensions are additive only, and a duplicate is refused loudly rather than last-wins"
],
"source": [
"#18164 design of record (comment 5715762696), items 1 to 6: the kind, the field reference, server resolution, the additive package extension, the translation face, and the verification sentence that this item and records-forms.picklist-org-append split between them",
"#18164 design of record (comment 5715762696), items 1 to 6: the kind, the field reference, server resolution, the additive package extension, the translation face, and the verification sentence, which is now this item's alone: its per-organization half left with records-forms.picklist-org-append, retired by #22869 as ruled out",
"#19518, the spec layer (landed as addbbf02ab): packages/spec/src/data/picklist.zod.ts#PicklistSchema",
"#19518, the extension shape: packages/spec/src/data/picklist.zod.ts#PicklistExtensionSchema",
"#19519, the runtime layer this item waits on (load before `object`, additive merge, resolve at serve time, write validation against the resolved set); its acceptance sentence is this item's three clauses"
Expand All @@ -4365,15 +4365,21 @@
"date": "2026-09-30",
"change": "initial — planned. The spec layer landed (#19518), but no runtime reads a picklist yet (packages/spec/liveness/picklist.json grades every key `planned`), so there is nothing to drive. The acceptance clauses are drafted from the design of record and #19519's acceptance; steps arrive with #19519, in the edit that promotes this item after a run in which it passes. The locale relabel sits on this item rather than on the organization item because it is phase-1 behaviour, and a promotion needs the whole item to pass",
"ref": "#19518"
},
{
"revision": 2,
"date": "2026-10-12",
"change": "source citation only — no clause, negative or fixture moved. The design-of-record citation said this item split the verification sentence with records-forms.picklist-org-append; that item is retired (the per-organization append is ruled out, see its retiredReason), so the citation now says the remaining sentence is this item's alone",
"ref": "#22869"
}
]
},
{
"id": "records-forms.picklist-org-append",
"title": "An organization appends a value to a shared picklist without changing the app source: that organization can write it, and another organization is refused",
"since": null,
"status": "planned",
"revision": 1,
"status": "retired",
"revision": 2,
"priority": "P2",
"surface": "mixed",
"personas": [
Expand Down Expand Up @@ -4405,8 +4411,15 @@
"date": "2026-09-30",
"change": "initial — planned. The docs/NORTH-STAR.md feature-map line names per-organization append as half of the shared-picklist feature, and the design of record's verification sentence names this behaviour, so the ledger holds it as a planned requirement rather than leaving it off. It carries no acceptance clauses: neither the overlay's schema nor its write door is designed yet, and a clause would be written against a design nobody has settled",
"ref": "#19518"
},
{
"revision": 2,
"date": "2026-10-12",
"change": "retired — the per-organization append is ruled out rather than deferred, so there is no requirement left to hold as planned; see retiredReason. Kept as a row, with its fields, so the history stays readable",
"ref": "#22869"
}
]
],
"retiredReason": "Capability ruled out, with no successor: the maintainer's direct order of 2026-10-11 (filed as #22869) reads 「按组织追加 picklist 值,不考虑」, and ADR-0131 D6 had already retired ADR-0005's per-organization overlay axis this item depended on (docs/adr/0131-total-organization-ownership-no-null-organization-id.md), so no organization will append picklist values, the append is not moved to environment level either, and the shared picklist itself stays on records-forms.picklist-shared-across-objects"
},
{
"id": "records-forms.script-action-hook-refusal-toast",
Expand Down
2 changes: 1 addition & 1 deletion docs/qa/platform-checklist/coverage.json
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@
]
},
"picklist": {
"waived": "WAIVED 2026-09-30 — there is no runtime behaviour to drive yet, measured rather than asserted. The spec layer landed (#19518, addbbf02ab): PicklistSchema, `Field.select({ picklist })`, PicklistServedFieldSchema, `picklistExtensions` and the `picklists.NAME` translation face. No runtime reads a picklist: packages/spec/liveness/picklist.json grades every key `planned`, and scripts/check-stack-collection-maps.mjs carries `picklists` and `picklistExtensions` as rows PENDING the runtime layer (#19519) in the METADATA_ARRAY_KEYS and ARTIFACT_FIELD_TO_TYPE registration maps. No code resolves a picklist onto a field or judges a write against one, so an item written to RUN today could only assert absence. The two items that will carry this kind are authored as `planned`: records-forms.picklist-shared-across-objects (phase 1: two objects, the package extension, the write door, the locale relabel) and records-forms.picklist-org-append (phase 2: the per-organization overlay, deferred by ruling 5904864936 on #18164). They are not listed under `items`, because a kind whose only items are planned is UNMAPPED and an entry cannot hold a waiver and items together. WHAT RETIRES THIS WAIVER — #19519 lands resolve-at-serve, the additive merge and write validation; records-forms.picklist-shared-across-objects gains its steps, runs, passes and is promoted to `active`, and the same edit replaces this waiver with `items` naming it, the planned organization item beside it. ⚠️ Re-audit it every sweep, as SWEEP.md asks of every waiver."
"waived": "WAIVED 2026-09-30 — there is no runtime behaviour to drive yet, measured rather than asserted. The spec layer landed (#19518, addbbf02ab): PicklistSchema, `Field.select({ picklist })`, PicklistServedFieldSchema, `picklistExtensions` and the `picklists.NAME` translation face. No runtime reads a picklist: packages/spec/liveness/picklist.json grades every key `planned`, and scripts/check-stack-collection-maps.mjs carries `picklists` and `picklistExtensions` as rows PENDING the runtime layer (#19519) in the METADATA_ARRAY_KEYS and ARTIFACT_FIELD_TO_TYPE registration maps. No code resolves a picklist onto a field or judges a write against one, so an item written to RUN today could only assert absence. The item that will carry this kind is authored as `planned`: records-forms.picklist-shared-across-objects (phase 1: two objects, the package extension, the write door, the locale relabel; the phase-2 per-organization overlay is ruled out, #22869, and no item carries it). It is not listed under `items`, because a kind whose only items are planned is UNMAPPED and an entry cannot hold a waiver and items together. WHAT RETIRES THIS WAIVER — #19519 lands resolve-at-serve, the additive merge and write validation; records-forms.picklist-shared-across-objects gains its steps, runs, passes and is promoted to `active`, and the same edit replaces this waiver with `items` naming it. ⚠️ Re-audit it every sweep, as SWEEP.md asks of every waiver."
},
"position": {
"items": [
Expand Down
Loading