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
[finding] composeStacks drops a stack's grants and seed rows when its permissions / data is not an array — the composed artifact is silently incomplete, which ruling 5690859601 forbids (follow-up C of #18239) #19784
Filing gate: ① (a product defect with a named site). Reader: the domain:spec seat that dispatches it — the fix site is packages/spec/src/stack.zod.ts step 3 (CONCAT_ARRAY_FIELDS concat pass). ⛔ Filed bare for triage: no domain:*, no priority:*, no type asserted.
Filed by domain:spec seat 4 (session_01VWsFyWDp8Rjb2Ma6a3Cyo8, seat post #18917) because the maintainer's ruling on #18239 routes it here, verbatim (comment 5690859601, batch #139 item 2 · letter B · 「同意」):
permissions / data keep PR #18212's skip-and-warn for now. The dev measures, in the same PR, one line: does skipping a malformed permissions or data change the composed artifact's content (not only validation)? If yes, that is reported on this card and the spec lane files the card that extends loud refusal to them (C as a measured follow-up, ⛔ not a silent widening here).
The measurement — answer: YES
Taken by the os-dev round implementing #18239 (PR #19783, head 927ea9bfa6), reported in its os-dev-report on #18239. ⚠️ The seat has ⛔ NOT re-run it; it is the implementing round's reading, relayed as such:
stack A permissions: [pa] + hand-built stack B permissions: { name: 'pb' } (a non-array) ⇒ composed permissions is ['pa'] — B's grant is absent, a console warning only.
same shape for data ⇒ composed data is ['a_item'] — B's seed rows absent.
a non-object ENTRY (permissions: [null, {pb}]) is carried as-is ⇒ content unchanged; only the non-array VALUE loses content.
Ruling 5690859601: 「A composed artifact is complete or it is refused; 「success with a stack's objects silently missing」 is the concealment shape ③ forbids.」 — the same sentence, applied to grants and seed rows, is what this card asks to enforce. PR #19783 enforces it for objects (refusal STACK_SCHEMA_INVALID, 422).
⛔ What this card does not claim
⛔ Not that every CONCAT_ARRAY_FIELDS key should refuse — the measurement covers permissions and data only; whoever takes it re-measures the other keys before widening the refusal to them.
⛔ Not measured whether any authored stack reaches composition with such a shape (the strict defineStack parse already refuses it; the population is hand-built stacks and strict: false).
Dedupe
REST list of the 436 most recently updated issues (open + closed, to 2026-09-20T20:58Z) grepped locally (/search/* is refused by the egress proxy): CONCAT_ARRAY_FIELDS 0 · permissions … non-array 0 · lit control composeStacks 6 (#18239, #14512, #16075, #16348 closed, #18431 closed, the seat post) — none is this defect.
Dedupe words: composeStacks permissions non-array · CONCAT_ARRAY_FIELDS skip content loss · warnMalformedCollectionKey data dropped · loud refusal permissions data
Filing gate: ① (a product defect with a named site). Reader: the
domain:specseat that dispatches it — the fix site ispackages/spec/src/stack.zod.tsstep 3 (CONCAT_ARRAY_FIELDSconcat pass). ⛔ Filed bare for triage: nodomain:*, nopriority:*, no type asserted.Filed by
domain:specseat 4 (session_01VWsFyWDp8Rjb2Ma6a3Cyo8, seat post #18917) because the maintainer's ruling on #18239 routes it here, verbatim (comment5690859601, batch #139 item 2 · letter B · 「同意」):The measurement — answer: YES
Taken by the⚠️ The seat has ⛔ NOT re-run it; it is the implementing round's reading, relayed as such:
os-devround implementing #18239 (PR #19783, head927ea9bfa6), reported in itsos-dev-reporton #18239.permissions: [pa]+ hand-built stack Bpermissions: { name: 'pb' }(a non-array) ⇒ composedpermissionsis['pa']— B's grant is absent, a console warning only.data⇒ composeddatais['a_item']— B's seed rows absent.permissions: [null, {pb}]) is carried as-is ⇒ content unchanged; only the non-array VALUE loses content.CONCAT_ARRAY_FIELDS,packages/spec/src/stack.zod.ts:1086onorigin/main041c8cf6), ⛔ not fix(spec): resolve permission-set and seed object references against the release artifact, not the single stack #18212's step-3b collectors.Contract
Ruling
5690859601: 「A composed artifact is complete or it is refused; 「success with a stack's objects silently missing」 is the concealment shape ③ forbids.」 — the same sentence, applied to grants and seed rows, is what this card asks to enforce. PR #19783 enforces it forobjects(refusalSTACK_SCHEMA_INVALID, 422).⛔ What this card does not claim
CONCAT_ARRAY_FIELDSkey should refuse — the measurement coverspermissionsanddataonly; whoever takes it re-measures the other keys before widening the refusal to them.defineStackparse already refuses it; the population is hand-built stacks andstrict: false).Dedupe
REST list of the 436 most recently updated issues (open + closed, to 2026-09-20T20:58Z) grepped locally (
/search/*is refused by the egress proxy):CONCAT_ARRAY_FIELDS0 ·permissions … non-array0 · lit controlcomposeStacks6 (#18239, #14512, #16075, #16348 closed, #18431 closed, the seat post) — none is this defect.Dedupe words:
composeStacks permissions non-array·CONCAT_ARRAY_FIELDS skip content loss·warnMalformedCollectionKey data dropped·loud refusal permissions dataGenerated by Claude Code