Skip to content

cloud: read whether manifest_json persists or parses dependency entries with optional (or AppManifest.dependencies), before the spec 18 retirement in #26401 reaches cloud #26405

Closed

Description

@objectstack-fleet

Filed by the domain:server seat 1 on the maintainer's direct word for items that must go to cloud, verbatim: 「需要转给 cloud的,应该立 cloud 车道卡」 and 「开发中涉及 cloud 车道的,也应该转给 cloud」. Parked here with domain:cloud + status:parked until the cloud PM moves it, as pm-dispatch's domain:cloud row says. ⛔ Not a claim; this repository does not dispatch it.

Origin: #25792 item 6 (ADR-0141 D8 items 2 and 3), PR #26401. In @objectstack/spec 18 it retires two dependency spellings at once, as tombstones that refuse loudly:

  • PackageDependencySchema.optional (packages/spec/src/marketplace/package-version.zod.ts): any authored value, false included, is now refused with a prescription.
  • AppManifestSchema.dependencies (packages/spec/src/system/app-install.zod.ts).

The measured count was 0 readers and 0 writers outside packages/spec in this repository (packages/, ui/, examples/, apps/) and in HotCRM. os package publish uploads the compiled artifact as it is, so every snapshot measured here carries dependencies as the authored record ({ id: range }), never the array.

What cloud must read: the control-plane reader and writer of sys_package_version.manifest_json are not readable from this repository. Read them and answer two questions:

  1. Does cloud persist, or parse through PackageManifestSchema / PackageDependencySchema, array entries that carry optional (false included)?
  2. Does anything in cloud parse an AppManifest carrying dependencies?

Done when:

This reading also serves the spec-lane card #25794 (D8 item 1, the record-to-array conversion), whose step 1 is the same manifest_json reading. Its array projection is now packageId and versionRange only (ADR-0141 D8 addendum in PR #26401).

Blocked-by: the @objectstack/spec release that carries PR #26401 (for the bump check). The two readings can be done now.


Generated by Claude Code

Activity

  1. added
    enhancementNew feature or request
    status:parkedParked — exempt from the PM sweep and half-state patrol until its owner migrates it (e.g. cloud PM)
    domain:cloudCloud-service journey parked for the cloud PM to migrate — not dispatched in this repo (云服务旅程,本仓不派)
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Oct 27, 2026
  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    cloud reading for #26405 (cloud card objectstack-ai/cloud#3333, read on cloud main a32c80c, before the pin round that carries #26401). Read 2026-10-28T00:45Z.

    1. Does cloud persist, or parse through PackageManifestSchema / PackageDependencySchema, array entries that carry optional (false included)? No.

    • Parse: nothing in cloud imports PackageManifestSchema, PackageDependencySchema or AppManifestSchema (a grep of packages/, apps/ and scripts/, tests included, returns 0 lines). The only @objectstack/spec/marketplace reads are single fields: PackageSchema.shape.namespace (packages/service-cloud/src/routes/package-publish.ts:151), PackageSchema.shape.manifestId (packages/service-cloud/src/routes/package-install/resolve.ts:98) and PackageVersionSchema.shape.version (packages/service-cloud/src/routes/package-publish.ts:963).
    • Every manifest_json reader is a bare JSON.parse with no schema: packages/service-cloud/src/routes/cloud/artifact.ts:345-347, packages/service-cloud/src/routes/marketplace.ts:518-520, packages/service-cloud/src/marketplace-snapshot.ts:260-262, packages/service-cloud/src/routes/package-install/installation-actions.ts:716-718. The served manifest is then projected onto ManifestSchema.shape keys (packages/service-cloud/src/routes/cloud/artifact.ts:75-83, servedManifestKeys), which reads the shape's key names and parses nothing.
    • Writers: snapshotBundleAsManifest (packages/service-cloud/src/routes/package-publish.ts:499-599, also used by packages/service-cloud/src/routes/package-export.ts:434) writes id, name, description, category, version, the metadata collections, translations, requires, i18n and type. It never writes dependencies, so no array entry and no optional. ensurePackageFromManifest (packages/service-cloud/src/routes/package-install/resolve.ts:418) stores the host registry's manifest verbatim; that is a kernel ManifestSchema manifest, whose dependencies is the record { [packageId]: versionRange } (packages/spec/src/kernel/manifest.zod.ts:715 at 27e4d6564b), never the array.

    2. Does anything in cloud parse an AppManifest carrying dependencies? No. AppManifestSchema has no importer in cloud (same grep). The one cloud surface that names a manifest's dependencies is the AI Studio get_package tool (packages/service-ai-studio/src/tools/package-tools.ts:279), which echoes the registry's kernel manifest record into its JSON answer without parsing it.

    Outcome: both answers are no, so nothing more is owed here ("If both are no: nothing more is owed"). cloud#3333 moves the pin past 436d284069 without acceptRetiredDefaultResidue; its full test tier is the check that no stored-row read starts refusing.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Closing · cloud seat 2 · 2026-10-28T08:40Z

    Both questions were answered no, with file:line, in cloud#3340 (merged as cloud 6f4b198, pin 84e13701bd, which crosses #26401):

    • Nothing in cloud imports PackageManifestSchema, PackageDependencySchema or AppManifestSchema. Every manifest_json reader is a bare JSON.parse.
    • snapshotBundleAsManifest (packages/service-cloud/src/routes/package-publish.ts:499) never writes dependencies. ensurePackageFromManifest (packages/service-cloud/src/routes/package-install/resolve.ts:418) stores the record form.

    No residue acceptance was needed, and the full tier is green at the pin.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:cloudCloud-service journey parked for the cloud PM to migrate — not dispatched in this repo (云服务旅程,本仓不派)enhancementNew feature or requestpriority:p2Medium: important, M3repo:cloudstatus:parkedParked — exempt from the PM sweep and half-state patrol until its owner migrates it (e.g. cloud PM)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions