Skip to content

Epic: package-first authoring (ADR-0070) — bases as the authoring & delete unit #2278

Description

@os-zhuang

ADR: framework#2277 (ADR-0070, Accepted). This card tracks the cross-repo rollout.

Status (2026-06-27): functionally complete. All six decisions (D1–D6) are implemented and merged across framework / ../objectui / ../cloud, and ADR-0070 is Accepted with an end-to-end live dogfood. The full lifecycle is now also covered by an automated gate (framework#2358). One deliberately-deferred tail remains, tracked as #2359 (retire the "Local / Custom" stopgap scope once envs are orphan-free). See the status comment below for the PR-by-PR map.

Problem (from a business-user Studio dogfood pass)

Authored metadata can end up orphaned (package_id = null) with no container to delete/export"a pile of loose metadata, how do I clean it up?". Root cause: no package-first contract. Stopgaps shipped: framework#2252 (coerce-to-null), objectui#1946 (Local scope). We adopt the Airtable base model: create/select a writable package (base) first; author into it; manage/delete/export by base.

Rollout checklist

Open questions (resolved)

  1. Auto-provision a base on first authoring → resolved: a prompted/named one-click base (cloud auto-creates a named base; no silent com.workspace).
  2. allowOrgOverride in single-tenant → keep overlay for surgical tweaks (design note; non-blocking).
  3. Delete-cascade also delete records? → resolved: deletePackage({ keepData }) + a "structure-only delete" UI option (objectui#1983).
  4. Base naming vs stable id (app.<slug>) → surface a name, keep the id stable (design note).

Repos: framework (kernel, ADR, dogfood gate), ../objectui (Studio), ../cloud (service-ai-studio). Remaining tail: #2359.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions