Repository navigation
feat(spec): the picklist metadata kind — a shared option list select fields reference by name (#19518) - #20823
Conversation
Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
…map, strictness counts Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
…etadata-protocol Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
…d llms.txt inventory Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
…te, quick-reference counts Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
…anslation bundles Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 4 package(s): 16 hand-written doc(s) name something this change touched — list omitted above 15 rows. Re-derive on the tree named below: ⛔ 4 release-owned page(s) also affected — read-only, see AGENTS.md Documentation Guardrails. What this run could not see
Coarse fallback — 143 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 9275a54138667b9a6d539209b8b99008ab32b6d3 && git checkout 9275a54138667b9a6d539209b8b99008ab32b6d3
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 05a7547c9f40e0dfab89a34f5e5b60f818af70d2 388dcceb29f580b984200eceadfce9c723c33678 && git checkout -B drift-repro 05a7547c9f40e0dfab89a34f5e5b60f818af70d2 && git merge --no-ff 388dcceb29f580b984200eceadfce9c723c33678
node scripts/docs-audit/affected-docs.mjs --json 05a7547c9f40e0dfab89a34f5e5b60f818af70d2
|
…d tree Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
…ions among the top-level stack keys The CLI cheat-sheet lead no longer says Part 3 sits below: the split moved it to references/operations.md, so the sentence points there by name. The cut pays for the two keys under the token ceiling. Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
…vel-1 heading A level-1 opener is demoted when the reference page renders, and the file-description corpus pins how many descriptions need that. The page's frontmatter description is unchanged. Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
… changeset Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
The merge driver kept one side of content/docs/references/api/protocol.mdx; regenerated from the merged schemas it carries both main's `computed` drop reason and this branch's `picklists` translation group. Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Reviewed read-only: card #19518 (body and all eight comments), the parent's design of record ① Derived judgmentsAccept-set and public-surface changes, each judged:
Author-shown and AI-facing text, each sentence tested against the tree:
② Semver level
③ Boundary flagsDev report 1 (
Dev report 1, Dev report 1 deviation: the schema-door "neither" refusal implemented, measured (4 spec fixtures, 9 metadata-protocol tests red) and withdrawn — the right call; the measurement is what #20827's ruling now sequences on. Answered. Dev report 2 ( Reviewer's own flags:
Check-runs on Implemented-by: VERDICT: PASS Adopted and posted by
Generated by Claude Code |
维护者速读 · 2026-09-30T13:51Z
改了什么
为什么改 风险与代价(含回滚)
席位意见 你要做的 Generated by Claude Code |
…lved (objectstack-ai#19518) (objectstack-ai#20878) Part of objectstack-ai#19518 Clause-②: no Follow-up to objectstack-ai#20823. The server does not resolve a `picklist` reference yet, so four sentences that said it does are deleted or restated: the `FieldSchema.picklist` describe, its doc comment, the `PicklistServedFieldSchema` doc comment, and the refusal of `picklist` with `options`. The reference pages that copy the describe are regenerated with `check:generated --fix`. There is no behavior or assertion change. --- _Generated by [Claude Code](https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
Part of #19518
Clause-②: yes
The spec layer of the shared picklist:
picklistkind: registered, loads beforeobject, package-owned;Field.select({ picklist }), refused whenoptionsis also declared;PicklistServedFieldSchema;picklistExtensions;picklists.NAMEtranslation face and its resolvers.Two gates this PR must keep green are also carried here:
check:skill-top-level-keys);os i18n extractwalkspicklists.NAME.{label, options.VALUE}(check:i18n-walk-parity).Every pin that enumerates registered kinds or
FieldSchemakeys moves with the kind. That includesdriver-sql's column-collision classification.Resolving the reference at runtime is #19519. Until then the liveness ledger grades the new keys
planned. Refusing aselect/radiowith neitheroptionsnorpicklistis #20827 (ruled A, after this PR). The CLI compile / validate path is #20825. #19518 stays open for its Tier H docs PR: the NORTH-STAR line and the tworecords-formschecklist items.维护者速读
改了什么:
skills/objectstack-platform/SKILL.md的顶层键清单加上picklists、picklistExtensions两个键(第 43 行起)。同一文件 CLI 小节的一句指路文字(第 453 行附近)删掉两处:595621d35c拆到references/operations.md,不在本页下方;读数: 整文件 489 行不变;token 5829 → 5827,上限 5833;技能包总行数 4396 不变。
check-governed-merges:75 个路径中 1 个命中登记(skills/**),所以是 Tier H;共 1564 行改动,低于 5000。为什么改: 本 PR 给 stack 新增了这两个顶层键。必需门禁
check:skill-top-level-keys要求技能页的清单与 schema 一致;页面上没列的键,AI 作者就不会写。风险与回滚: 只改文字,链接目标不变,作者需要的内容一处没删。回滚办法是 revert
4049ae31ba,但若不同时去掉这两个 stack 键,该门禁会重新变红。席位意见: 建议批准。复核 PASS 后,席位在本 PR 上贴出记录。
你要做的: 看 SKILL.md 的两处改动,然后给出授权的 APPROVED 审阅,由席位落地;也可以亲手合并。
🤖 Generated with Claude Code
https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1