Skip to content

docs(checklist, north-star): retire records-forms.picklist-org-append — the per-organization picklist append is ruled out - #22982

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-22869-retire-picklist-org-append
Oct 12, 2026
Merged

os-zhuang merged 2 commits into
mainfrom
claude/issue-22869-retire-picklist-org-append

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #22869
Clause-②: no — the three paths are the North Star text and the platform-checklist ledger; no published schema, accept set or public surface is touched (no packages/** path).

Retires the per-organization picklist append everywhere it is still promised. The maintainer's direct order (filing gate ③ on #22869, 2026-10-11), verbatim: 「按组织追加 picklist 值,不考虑」. ADR-0131 D6 had already retired ADR-0005's per-organization overlay axis the item depended on (docs/adr/0131-total-organization-ownership-no-null-organization-id.md: "ADR-0005's per-organization overlay axis is retired, so sys_metadata needs no split (D6)"). No product code; the append is not re-scoped to environment level.

Per file

docs/qa/platform-checklist/areas/records-forms.json

  • records-forms.picklist-org-append: status planned → retired, retiredReason added (the ruling quoted, ADR-0131 D6, "no successor", "not moved to environment level"). No supersededBy: nothing succeeds the capability, and neither the README nor the validator demands one. The row and every field (personas, fixtures, negative, source) stay as history, per the README's Lifecycle → Retire rule. revision 1 → 2 with a history entry, following the README's Change rule and the two retired precedents in dashboards.json (both bumped on retire). The validator does not decide this: its revision check is consistency-only (revision equals the last history entry). Measured both ways: unbumped gives the same 10 problems, with no revision complaint.
  • records-forms.picklist-shared-across-objects: the #18164 design-of-record source citation no longer says it "splits" the verification sentence with the retired item. Now: "…and the verification sentence, which is now this item's alone: its per-organization half left with records-forms.picklist-org-append, retired by platform-checklist + NORTH-STAR: retire records-forms.picklist-org-append and the "customers append values per organization" promise — the per-organization picklist append is ruled out #22869 as ruled out". The #18164 pointer and the rest of the text are unchanged. revision 1 → 2 with a "source citation only" history entry. No clause, negative or fixture moved.

docs/qa/platform-checklist/coverage.json: the picklist kind's waived text names only records-forms.picklist-shared-across-objects ("the phase-2 per-organization overlay is ruled out, #22869, and no item carries it"). Its closing promise "the planned organization item beside it" is dropped. Nothing else in the waiver changed (see Acceptance notes).

docs/NORTH-STAR.md: one row (line 43), nothing else.

Before:

- records · 共享选项集:多个对象复用同一份选项,客户按组织追加值而不改应用源码 · records-forms · picklist-shared-across-objects, picklist-org-append

After:

- records · 共享选项集:多个对象复用同一份选项 · records-forms · picklist-shared-across-objects

No committed generated census exists: the README's "Implementation status" section says there is no STATUS.md in this tree and no gate paired with one. The wiki page is regenerated on a schedule by checklist-status.yml. A local pnpm gen:checklist-status (stdout only, tree left clean) now reads records-forms 41 active / 1 planned (it was 41 / 2), and the retired item is in neither total.

Gates — run on the final commit 57ef232b7

node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 14 commands from this change set. All 14 ran, plus pnpm check:pm-governed-prose. --ran reconciliation: ✓ dispatch-gates --ran: 14 derived famil(ies) accounted for — 14 run, 0 NOT-MEASURED.

command exit verdict line (abridged)
node scripts/check-ci-filter-parity.mjs 0 OK: all 21 build input(s) turbo.json declares outside the packages …
node scripts/check-closing-keyword-parity.mjs 0 check-closing-keyword-parity: OK (3 parsers agree on all 9 keywords …)
node scripts/check-closing-keyword-parity.mjs --self-test 0 ✓ … 40 assertions, 5 mutations of the shipped parsers each driven to red.
node scripts/check-comment-mask-corpus.mjs 0 ✓ comment-mask corpus sweep …: 8834 files, 0 disagree, 0 unparseable
pnpm --filter @objectstack/lint run check:doc-formula-expressions 0 ✓ check:doc-formula-expressions …: 15 predicate(s) … judged clean (first run exited 3, PREREQUISITE NOT MET, until @objectstack/formula + @objectstack/lint were built)
pnpm check:cross-package-test-inputs 0 OK: 30 package(s) read outside themselves, all declared …
pnpm check:doc-authoring 0 ✓ doc authoring guard: … no growth, no burn-down unrecorded.
pnpm check:driver-memory-census 0 check-driver-memory-census: OK — every declaration is ledgered …
pnpm check:gitlink-declared 0 check-gitlink-declared: OK (11005 index entries -- 0 gitlink(s) …)
pnpm check:nul-bytes 0 check-nul-bytes: OK (scanned 10996 text file(s) … no raw ASCII control bytes).
pnpm check:platform-checklist 1 check-platform-checklist: 10 problem(s). Base 117817ec2 reads 8. The 2 new ones are explained below
pnpm check:pm-governed-merges 0 ✓ check-governed-merges --self-test: 476 assertions …
pnpm check:refd-timer-probe 0 OK check-refd-timer-probe: 8828 source file(s) swept …
pnpm check:watch-hint-literal 0 ✓ check-watch-hint-literal: 72 declaration(s) across 4 rostered name(s) …
pnpm check:pm-governed-prose 0 ✓ check-governed-prose: 2 instruction surface(s) name all 6 registered governed surfaces …

check:platform-checklist — what is red, and whose it is

  • Base 117817ec2 is already red, with 8 problems. All 8 are symbol anchors in access-security.json, attachments-storage.json and search.json, none in the files this PR touches. That red belongs to the watchdog (platform-checklist-watchdog.yml), and this gate is not per-PR CI.
  • This PR adds exactly 2, both on the retired row: "since" must be the release that introduced the capability and "steps" must be a non-empty array of strings. The cause is in the checker, not the row. scripts/check-platform-checklist.mjs#statusFieldProblems gives planned its own branch, and judges every other status (retired included) by the active rule. An item retired before it was ever implemented can satisfy that only with an invented release and invented steps. The README's Retire rule asks only for status: "retired" + retiredReason. Per the dispatch, the checker is not edited here, and nothing is invented to satisfy it. The fix is filed separately by the seat. ⚠️ Landing dependency: this PR should land after that checker fix. Landed first, it raises main's watchdog reading from 8 to 10.
  • The coverage-mapping question, measured. The retired row with the old waiver text still naming it gives 10 problems, none of them maps to retired item (the 2 above plus the 8 at base). The current text gives the same 10. So a waived prose mention is not a mapping: the maps to retired item check reads only an entry's items array.

No changeset: no published package's files[] ships any of the three paths (70 non-private manifests read: 0 entries name them). The only packages/** mentions are two source comments citing the paths. skip-changeset is applied after this PR opens.

维护者速读(草稿)

改了什么
「按组织追加 picklist 值」这件事,从测试清单和北极星两处撤掉。清单里那条 planned 测试项改成「已退役」。它的记录照留,只是不再算作待做。另外两处引用它的地方(同族的共享选项集测试项、覆盖率豁免说明)改成不再提它。北极星「共享选项集」那一行去掉「客户按组织追加值而不改应用源码」,只保留「多个对象复用同一份选项」。没有改任何产品代码。

为什么改
您 2026-10-11 的裁决:「按组织追加 picklist 值,不考虑」。ADR-0131 D6 早已取消「按组织覆盖元数据」这条轴,这条需求已没有落脚处。清单和北极星还写着,会让后来的人以为这是待做的需求。这次是直接撤掉,不是改成「按环境追加」。

风险与代价(含回滚)
只改文档和测试清单,不影响运行中的任何功能。一个已知代价:清单校验器目前不接受「从未实现就退役」的测试项,会多报 2 条错(主干原本已有 8 条与本 PR 无关的错)。建议先修校验器,修复单由席位另开,再合本 PR。回滚就是 revert 这个 PR,三个文件都是纯文本。

席位意见

你要做的
看一眼北极星第 43 行改后的写法是否合您的意。确认后批准(APPROVED review)或直接合并。最好等校验器修复单合入之后再合。

Acceptance notes


Generated by Claude Code

… — per-organization picklist append is ruled out

The maintainer ruled the per-organization picklist append out rather than
deferring it, and ADR-0131 D6 had already retired the per-organization
overlay axis it depended on. Three declarations still promised it:

- records-forms.json: picklist-org-append goes planned -> retired with a
  retiredReason (no supersededBy: nothing succeeds it); the row and its
  fields stay as history. The sibling picklist-shared-across-objects no
  longer cites a sentence it "splits" with a retired item (revision 2).
- coverage.json: the picklist waiver names only the phase-1 item and no
  longer promises an organization item beside it.
- NORTH-STAR.md: the shared-option-set row drops the per-organization
  append clause and the retired id.

No product code; the append is not re-scoped to environment level.

Claude-Session: https://claude.ai/code/session_01CinRQcE6T8SvMbhH8D3NhS
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 57ef232b758ed965388cdfb77e1385f3c31603b9
Local-runs: none

Scope: the governed rule-text face — docs/NORTH-STAR.md (row 43). The two docs/qa/platform-checklist/** paths are ledger prose, judged sentence by sentence in the ACCEPT on #22869, not here. Inputs: card #22869 (body and its one Claim: comment), PR #22982 (body, the 3-file list, the net diff against main at 19805d8956), the 35 check-runs on this head. Read 2026-10-12T07:47Z.

① Derived judgments

  • docs/NORTH-STAR.md:43 — the row loses the clause 「客户按组织追加值而不改应用源码」 and the id picklist-org-append; it keeps the records axis, the functional point 「共享选项集:多个对象复用同一份选项」, the records-forms 清单区 and picklist-shared-across-objects. RIGHT: the maintainer's ruling 「按组织追加 picklist 值,不考虑」 applied to the one row that promised the capability; no other row moved (+1/−1 on the file); the row still obeys the table grammar 轴 · 功能点(业务语言) · 清单区 · 项 id.
  • No accept set and no public surface changes: no packages/** path, no schema, no error code. Clause-②: no is correct as declared.
  • records-forms.picklist-org-append → status: "retired" + retiredReason quoting the ruling and ADR-0131 D6, row and fields kept — the README's Retire rule (status + retiredReason, no deletion). RIGHT. revision 1→2 with a history entry — the README's Change rule and both retired precedents in dashboards.json agree; the validator is indifferent (the dev measured both ways). RIGHT.
  • Sibling records-forms.picklist-shared-across-objects: source[0] reworded so it no longer "splits" a sentence with a retired item; the #18164 pointer intact; revision 1→2 + a "source citation only" history entry. RIGHT; a deviation from the dispatch (which asked for the citation edit alone), accepted under the README's Change rule.
  • coverage.json picklist waived: names only the sibling; judged in the ACCEPT sentence by sentence.

② Semver level

No published package ships any of the three paths (the dev read 70 non-private manifests' files[]: 0 name them); skip-changeset is this repository's correct declaration. No existing changeset edited.

③ Boundary flags

Implemented-by: claude/issue-22869-retire-picklist-org-append
Reviewed-by: session_01CinRQcE6T8SvMbhH8D3NhS

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

维护者速读(终稿)· PR #22982 · #22869

席位 1(session_01CinRQcE6T8SvMbhH8D3NhS,huangyiirene)对照自己读的 diff(对 merge-base 19805d8,3 文件 +20/−7)校正 dev 草稿后定稿 · 2026-10-12T07:49Z。

改了什么:「按组织追加 picklist 值」从两处撤掉。测试清单里那条 planned 条目改为 retired,记录与字段照留、写明退役原因(引你的裁决与 ADR-0131 D6);同族条目的引文与覆盖率豁免说明不再提它;北极星第 43 行只保留「共享选项集:多个对象复用同一份选项」。没有产品代码。

为什么改:你 2026-10-11 的直令「按组织追加 picklist 值,不考虑」;ADR-0131 D6 早已退役按组织覆盖这条轴。清单与北极星还把它写成待做需求,会误导后来者。直接撤,不改成按环境追加。

风险与代价(含回滚):纯文本三文件,运行时零影响;回滚 = revert 本 PR。一个已知代价:清单校验器 check-platform-checklist 对「从未实现就退役」的条目没有合法形状,会多报 2 条(主干本已有 8 条与本 PR 无关的锚点错)。错在校验器(README 的 Retire 规则只要 status + retiredReason),不在条目;修复已立子卡 #22987,本席直接派发,先合它再合本 PR,主干看门狗读数不会因本 PR 变坏。

席位意见:ACCEPT。契约复核(达档、在席)PASS 已贴本 PR;CI 在本 head 34 项 success/skipped,Lint & Repo Gates 复核时仍在跑,无红。一处当众更正:派发令假设「退役不需要动校验器」,dev 实测证伪(详见 #22869 的 ACCEPT 评论),处置是另开子卡,不在本 PR 发明数据。dev 顺手量到:覆盖率豁免说明的另一半也过时了(picklist 运行时层已落地),归下一次 coverage sweep,不在本卡。

你要做的:看一眼北极星第 43 行改后的写法;同意即给一个 APPROVED review。落地由席位走队列,且在 #22987 合入之后。


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review October 12, 2026 09:03
@os-zhuang
os-zhuang added this pull request to the merge queue Oct 12, 2026
Merged via the queue into main with commit 929c8b1 Oct 12, 2026
43 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-22869-retire-picklist-org-append branch October 12, 2026 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

3 participants