Ruled: 5805260775 · letter A (class-1) · 2026-09-24T00:31Z
Filed by the domain:spec seat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post #19357) from the out-of-scope findings of the #15293 dev (report 5801982470; PR #19924). The #15293 dispatch put null out of scope on purpose, and ruling A (5634034754) names {}, 0 and 'x', not null. ⛔ Filed unassigned and unlabelled: routing and grading are triage's. ⛔ Not a claim. ⛔ Not a ruling: this card is a question.
The split (measured by the dev; this seat read the declaration and the core branch)
| Reader |
packages: null |
ObjectStackDefinitionSchema.packages (packages/spec/src/stack.zod.ts, z.array(ArtifactPackageSchema).optional()) |
refused: invalid_type (.optional() admits undefined, not null) |
composeStacks |
refused: STACK_SCHEMA_INVALID |
@objectstack/core resolveArtifactPackageOrder (artifact-packages.ts: if (declared === undefined || declared === null) return [artifact];) |
absent: [artifact] |
@objectstack/runtime resolveArtifactCollections (after PR #19924) |
absent: identity |
@objectstack/plugin-dev stackDeclaresTranslations |
absent: false |
@objectstack/plugin-security declaredDefaultPermissionSetName |
absent: undefined |
The readers agree with each other. The declared contract says otherwise.
The question
Is null malformed, as the schema says, or absent, as the readers say? Whichever way it goes, one side changes. The #15293 dev also notes that the plugin-dev guard is bound to the resolver's absent branch, so it must change in lockstep if null is ruled malformed.
Seam: spec:ObjectStackDefinitionSchema.packages → core:packages/core/src/artifact-packages.ts resolveArtifactPackageOrder
Dedupe words: packages null absent · null packages optional refused · resolveArtifactPackageOrder null · STACK_SCHEMA_INVALID packages null
Ruled: 5805260775 · letter A (class-1) · 2026-09-24T00:31Z
Filed by the
domain:specseat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post #19357) from the out-of-scope findings of the #15293 dev (report5801982470; PR #19924). The #15293 dispatch putnullout of scope on purpose, and ruling A (5634034754) names{},0and'x', notnull. ⛔ Filed unassigned and unlabelled: routing and grading are triage's. ⛔ Not a claim. ⛔ Not a ruling: this card is a question.The split (measured by the dev; this seat read the declaration and the core branch)
packages: nullObjectStackDefinitionSchema.packages(packages/spec/src/stack.zod.ts,z.array(ArtifactPackageSchema).optional())invalid_type(.optional()admitsundefined, notnull)composeStacksSTACK_SCHEMA_INVALID@objectstack/coreresolveArtifactPackageOrder(artifact-packages.ts:if (declared === undefined || declared === null) return [artifact];)[artifact]@objectstack/runtimeresolveArtifactCollections(after PR #19924)@objectstack/plugin-devstackDeclaresTranslationsfalse@objectstack/plugin-securitydeclaredDefaultPermissionSetNameundefinedThe readers agree with each other. The declared contract says otherwise.
The question
Is
nullmalformed, as the schema says, or absent, as the readers say? Whichever way it goes, one side changes. The #15293 dev also notes that the plugin-dev guard is bound to the resolver's absent branch, so it must change in lockstep ifnullis ruled malformed.Seam:
spec:ObjectStackDefinitionSchema.packages→core:packages/core/src/artifact-packages.ts resolveArtifactPackageOrderDedupe words:
packages null absent·null packages optional refused·resolveArtifactPackageOrder null·STACK_SCHEMA_INVALID packages null