Filed by the domain:spec seat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post #19357), from the #19518 dev report on PR #20823 (its scope6_sibling_card_draft and its first out-of-scope finding). #19518's Scope item 6 names this card: the CLI is domain:cli, and the change is a sibling PR by that lane. ⛔ Filed unassigned and unlabelled: routing and grading are triage's. ⛔ Not a claim.
Governing text
#19518, Scope item 6: "The os CLI compile / validate path accepts the new kind and refuses the two-or-neither case (CLI is domain:cli; if the change lands in packages/cli it is a sibling PR by that seat, filed from this card)." The design of record is 5715762696 on #18164, and ruling 5755653853 item 3 asks for a loud refusal of a wrong reference.
What is owed (from the #19518 dev's measurements on branch claude/issue-19518-picklist-kind, PR #20823)
- Build and compile ingest the two new stack collections,
picklists and picklistExtensions. os generate picklist names files the way the registry's filePatterns do (packages/cli/src/utils/metadata-file-name.ts).
os validate refuses a field whose picklist names no picklist in the stack or its declared dependencies. picklist + options together is already refused by FieldSchema, and os validate inherits that refusal.
- Lint rule R8 (
field/select-missing-options, packages/lint/src/data-model-rules.ts) counts a picklist reference as an options source. Measured through lintDataModel: an object field { type: 'select', picklist: 'industry' } answers the warning "select field ... has no options", and its fix points at options, which the schema door now refuses together with picklist.
Not here: the os i18n extract walk of picklists.NAME.{label, options.VALUE} is taken by PR #20823 itself (the seat's ruling on #19518), because the required gate check:i18n-walk-parity cannot be green on either side alone. Also not here is the "neither options nor picklist" refusal, which waits on the maintainer on its own card.
Dedupe words: picklist, picklistExtensions, os validate, select-missing-options, metadata-file-name picklist
Filed by the
domain:specseat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post #19357), from the #19518 dev report on PR #20823 (itsscope6_sibling_card_draftand its first out-of-scope finding). #19518's Scope item 6 names this card: the CLI isdomain:cli, and the change is a sibling PR by that lane. ⛔ Filed unassigned and unlabelled: routing and grading are triage's. ⛔ Not a claim.Governing text
#19518, Scope item 6: "The
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)." The design of record is5715762696on #18164, and ruling5755653853item 3 asks for a loud refusal of a wrong reference.What is owed (from the #19518 dev's measurements on branch
claude/issue-19518-picklist-kind, PR #20823)picklistsandpicklistExtensions.os generate picklistnames files the way the registry'sfilePatternsdo (packages/cli/src/utils/metadata-file-name.ts).os validaterefuses a field whosepicklistnames no picklist in the stack or its declared dependencies.picklist+optionstogether is already refused byFieldSchema, andos validateinherits that refusal.field/select-missing-options,packages/lint/src/data-model-rules.ts) counts apicklistreference as an options source. Measured throughlintDataModel: an object field{ type: 'select', picklist: 'industry' }answers the warning "select field ... has no options", and its fix points atoptions, which the schema door now refuses together withpicklist.Not here: the
os i18n extractwalk ofpicklists.NAME.{label, options.VALUE}is taken by PR #20823 itself (the seat's ruling on #19518), because the required gatecheck:i18n-walk-paritycannot be green on either side alone. Also not here is the "neitheroptionsnorpicklist" refusal, which waits on the maintainer on its own card.Dedupe words: picklist, picklistExtensions, os validate, select-missing-options, metadata-file-name picklist