Skip to content

An unmanaged install can copy the package's seed data, removable as one batch, owned by the installer (gallery demos need data) #30808

Open

Description

@objectstack-fleet

epic:#3600#1 · hotlong · session_01Q4EjjPXwX1YfHyKJUh4agu

Filing-gate category: ② maintainer-directed task. Maintainer, verbatim (Claude Code session, 2026-11-06): 「同意」, approving the seat's proposal that an unmanaged install copy seed data (gallery demos need data to answer questions). The analysis was re-read by an isolated contract-review-tier reviewer before filing; its fixes are folded in. Routing, verbatim: 「能交给车队开发的你不要自己开发」. Epic context: objectstack-ai/cloud#3600.

Blocked-by: #30794

Problem (customer-visible)

A template installed as the customer's own copy arrives empty: the unmanaged import copies metadata only and classifies seeds as data (packages/metadata-protocol/src/package-unmanaged-install.ts:44-56; #15213 Q3 = A as built: the reseed and purge doors act on install-ledger entries, and an unmanaged install writes none). A visitor who tries a gallery app in one click gets an app with no rows, so nothing can be asked of it.

Governing rulings (do not re-decide)

Ask

  1. An optional seed copy on the unmanaged import and the install-local door, off by default. The hosted deep link (cloud#3626) turns it on.
  2. Removal without a new per-row key. Prefer storing a seed receipt for the unmanaged copy in the environment ledger, so the existing purge identity (an externalId match against the stored seed body, marketplace-install-local-purge.ts:8-18) removes exactly the sample rows. A marker column is the alternative; weigh both in the PR and choose the one that adds no key unless it cannot work.
  3. Keep externalId stable under the An unmanaged install can take a target namespace: the copy is re-namespaced at install through the duplicate-package rename engine #30794 rename, so purge still matches.
  4. Resolve lookups between seeded rows in load order, as the managed path does.
  5. A re-run stays refused (409: the -copy target exists, feat(spec,objectql,cli): the template install mode — a package copied once into the environment ledger, fully editable, refused on shared-database multi-tenant postures (ADR-0131 D6) #15213).
  6. Seeds carry no file blobs; say so in the PR. Plan quotas are unverified: check whether a seed copy counts against record quotas and state it.

Precedent for size: #15213 S2 (+2,433/−169, 40 files) built the import itself.

Reader: the domain:engine lane seat, from pm:queue once #30794 closes.


Generated by Claude Code

Activity

  1. added
    priority:p1High: required for production / M2
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    domain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they land
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Nov 6, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · domain:engine → domain:server · p1 kept · 2026-11-06T04:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. added
    domain:serverDomain lane — seat card indexed by label:pm:seat
    and removed
    domain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they land
    on Nov 6, 2026
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:serverDomain lane — seat card indexed by label:pm:seatpm:blockedBlocked by another issue/PR — body carries Blocked-by: #Npriority:p1High: required for production / M2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions