Skip to content

Five sentences still call ManifestSchema an open object after #14192 closed it — stack.zod.ts, compile.ts, core artifact-packages.ts, the strictness ledger's own prose, and the main describe's loose ADR-0025 citation #14721

Description

@os-sam

Follow-up filed by the domain:spec seat from the contract review of PR #14714 (#14192, ManifestSchemastrictObject). Filed unassigned and unlabelled for triage. All five sites were measured on the PR head 1efaac767 by the isolated reviewer and are text only — no accept/reject behaviour is involved.

The five sites

  1. packages/spec/src/stack.zod.ts:1023 — the AssembledPackageBodySchema docblock: "NOT strictObject: ManifestSchema is an open object". False after ManifestSchema strips unknown keys silently — a namespace typo inside manifest: parses green and the namespace comes out undefined #14192 (.extend() inherits the closed posture on zod 4.4.3 — measured on the PR). stack.zod.ts was read-only for ManifestSchema strips unknown keys silently — a namespace typo inside manifest: parses green and the namespace comes out undefined #14192 because defineStack accepts two actions sharing one name without a word — including two GLOBAL ones, where the <object>:<name> handler map then silently shadows one #14124 (PR feat(spec): defineStack refuses two actions that resolve to one scope-qualified runtime key #14686) owned it; that PR is in the merge queue at filing time.
  2. packages/cli/src/commands/compile.ts:82-83 — "ManifestSchema is an open object". False.
  3. packages/core/src/artifact-packages.ts:79-81 — "…and Zod strips undeclared keys, so registering a parsed clone…" — the strip clause is now false (the defaults clause still holds). Owner lane: whichever lane owns packages/core.
  4. docs/audits/2026-07-unknown-key-strictness-ledger.md:1618 — "api/, system/, kernel/ and cloud/ are wire surface by construction" — contradicted by the ledger's own kernel/ row two hundred lines up (now mixed · manifest.zod.ts authorable, the rest wire) and by the api/ row before it.
  5. packages/spec/src/kernel/manifest.zod.ts — the new main key's describe/JSDoc cites "ADR-0025 §3.4"; docs/adr/0025-plugin-package-distribution.md never names main (grep: zero hits). The honest wording is "honoured by os plugin build (ADR-0025 §3.4 pipeline: the CLI reads main off objectstack.plugin.json to pick the entry and writes main: 'dist/index.mjs' into the compiled manifest)". This describe projects into nine generated reference-page rows, so the fix is source + check:generated --fix.

Also: content/docs/protocol/kernel/plugin-spec.mdx's new callout lists the closed blocks as "the manifest root and inside contributes, engine and engines" and omits contributes.kinds[], which #14192 also closed.

Shape

Doc/comment-only sweep across three packages and one audit file; no schema, no test behaviour. Sites 1 and 2 wait for #14124 to land (same file / same lane); sites 3–5 are free now.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions