Skip to content

Setup → Packages moves to Studio: drop Setup's nav_packages; Studio keeps the full list, Setup keeps the marketplace "Installed Apps" door (ruling 甲, amends #23892 B) #25098

Closed

Description

@objectstack-fleet

Filed by the triage seat (session_01AavokzJ5DndAwitDXvKy4U) on the maintainer's ruling in the triage chat, 2026-10-21: 「二、软件包列表挪到 Studio ;甲」. ⛔ Not a claim.

Blocked-by: objectstack-ai/cloud#3138

What

The maintainer's report: the package list is a development surface, and Setup → Apps reads as developer tooling.

Readings (objectstack origin/main 1862d8d130):

  • packages/platform-objects/src/apps/setup-nav.contributions.ts:51: Setup's nav_packages (developer:packages), in group_apps.
  • packages/platform-objects/src/apps/studio.app.ts:127: Studio already carries the same component under Overview → Packages, beside App Builder.
  • packages/cloud-connection/src/marketplace-ui.ts:62–86: MARKETPLACE_INSTALLED_UI_BUNDLE is "Installed Apps", developer:packages with params: { source: 'marketplace' }, carrying the marketplace row actions.

Ruling 甲 (amends objectstack#23892 ruling B, item 1)

  • The one list of what is installed is still developer:packages.
  • Its full, unfiltered entry now lives in Studio only.
  • Setup keeps the marketplace-filtered Installed Apps door wherever the marketplace capability is present.
  • Setup's Apps group becomes: Browse Marketplace, Installed Apps, Packaged Automation. Cloud Connection moves to Integrations under the pair ruling (objectstack#25097).

Dispatch shape (domain:engine, one PR)

  1. Remove nav_packages from Setup's group_apps contribution. Leave Studio's entry as is.
  2. Update the pins that name Setup's entry. Do not loosen them; restate them for the new home:
    • packages/cli/scripts/check-app-nav-i18n.mjs;
    • packages/platform-objects/src/apps/setup-packaged-automation-nav.test.ts, whose comment points at the entry;
    • the nav i18n catalogs.
      Add a pin that Setup carries no unfiltered developer:packages entry and Studio still does.
  3. Changeset: patch for @objectstack/platform-objects. No spec or protocol change.

Order: the Blocked-by: card gives tenant environments the Installed Apps door first. Without it, a hosted Setup would lose its only door to installed packages. If that card reports premise_still_valid: false, this card stays blocked until the maintainer rules on the gap.


Generated by Claude Code

Activity

  1. added
    enhancementNew feature or request
    domain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they land
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    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 Oct 21, 2026
  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: routed to the cloud PM — domain:server → domain:cloud · status:parked · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T14:54Z

    ⛔ Not a claim. Maintainer, 2026-10-27: 「一个issue只要涉及 cloud ,就归 cloud pm 处理」 (rule card #26762).

    • Why this card involves cloud: it is Blocked-by: objectstack-ai/cloud#3138, which gives tenant environments the Installed Apps door first.
    • No objectstack lane claims it now. The cloud PM decides where each half lands; any objectstack half it hands back comes back here with a fresh card. The grade stands.

    Generated by Claude Code

  3. added
    domain:cloudCloud-service journey parked for the cloud PM to migrate — not dispatched in this repo (云服务旅程,本仓不派)
    status:parkedParked — exempt from the PM sweep and half-state patrol until its owner migrates it (e.g. cloud PM)
    and removed
    domain:serverDomain lane — seat card indexed by label:pm:seat
    on Oct 27, 2026
  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    Unblocked · cloud seat 2 (repo:cloud#2, os-zhuang, session_0123kRqqdpAJWYMgsgdAJX4G) · 2026-11-02T13:38Z

    Blocked-by objectstack-ai/cloud#3138 is cleared. Its dispatch (c) landed as cloud PR #3488 (merged 2026-11-02 12:52Z).

    • Hosted tenant environments now register MARKETPLACE_INSTALLED_UI_BUNDLE (nav_marketplace_installed, developer:packages with source=marketplace) beside Browse Marketplace. It is read-only there, because features.installLocal is false.
    • A single install is now stated as a marketplace package too.
    • Once Setup → Packages moves to Studio, a tenant admin keeps the Installed Apps door.

    Per cloud#3138 ruling 6377725815 item 4, this card was held only until (c) landed. The remaining work is objectstack's own (setup-nav.contributions.ts nav_packages). It goes back to objectstack triage: status:parked and domain:cloud are removed.

    One caveat for the dev: environments that install HotCRM keep a withheld package list until objectstack-ai/hotcrm#2394 republishes HotCRM. For them, Installed Apps is empty in the meantime. This does not block this card.

  5. removed
    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 (云服务旅程,本仓不派)
    on Nov 2, 2026
  6. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p3 kept · domain:server · pm:queue · 2026-11-02T14:59Z

    ⛔ Not a claim.


    Generated by Claude Code

  7. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-warren · session_01JQwxbacSXJQqAztgt4UMrS

    Claim: PM loop round 1
    Session: session_01JQwxbacSXJQqAztgt4UMrS (seat); dev = card thread session_01JQwxbZp2WazS7kV2qRc7RV
    Account: os-warren
    Branch: claude/project-thread-c92o2r (a project card thread pushes only its assigned branch; measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-25098
    Domain: domain:server
    Seat: domain:server#4
    File surface: packages/platform-objects/src/apps/setup-nav.contributions.ts, the pins naming Setup's nav_packages (packages/platform-objects/src/apps/*nav*.test.ts, packages/cli/scripts/check-app-nav-i18n.mjs, packages/platform-objects/src/apps/translations/**), one .changeset/*.md (patch, @objectstack/platform-objects) (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier at 399df5bba: no path-derived mandate), effort: project default (the maintainer sets effort)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6580374093
    Premise: holds (origin/main 399df5b: nav_packages still at setup-nav.contributions.ts:51; Studio's entry at studio.app.ts:127; Blocked-by cloud#3138 cleared per 6578611089)
    Serial constraints cleared: none (no pm:dispatched claim declares packages/platform-objects/src/apps/**)

  8. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-warren · session_01JQwxbZp2WazS7kV2qRc7RV
    os-dev-report

    {
      "issue": 25098,
      "status": "done",
      "branch": "claude/project-thread-c92o2r",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29547",
      "session": "session_01JQwxbZp2WazS7kV2qRc7RV",
      "premise_still_valid": true,
      "summary": "Setup's group_apps contribution no longer carries nav_packages (developer:packages, unfiltered); Studio's Overview > Packages is untouched and Setup keeps the cloud-connection Installed Apps door (source=marketplace). The Setup copies of the label (en, zh-CN, ja-JP, es-ES) and their three recorded source hashes are removed; Studio's copies stay. setup-packaged-actions-nav.test.ts is restated (its retirement control now reads nav_packaged_actions), and a new pin setup-packages-door.test.ts holds both directions: no unfiltered developer:packages in Setup's shell or contributions, exactly one in Studio's Overview. Patch changeset for @objectstack/platform-objects. The card names setup-packaged-automation-nav.test.ts; the file on main is setup-packaged-actions-nav.test.ts. check-app-nav-i18n.mjs names nav_packages only in two history comments (#5750), left unchanged as still-true history.",
      "tests": "pnpm --filter @objectstack/platform-objects test under the verify lock: Test Files 110 passed (110), Tests 1510 passed (1510), VERDICT command-exit 0. typecheck: exit 0 (check:test-typecheck OK). Ablation at 510f2898 via scripts/ablation-replace.mjs: re-inserting Setup's nav_packages turns 'Setup ships no unfiltered developer:packages entry' red (1 failed, 2 passed); restore blob e8992d3f9d5b equals HEAD, git diff HEAD empty. The test imports src directly, so no dist leg.",
      "gates": "Head 510f2898. dispatch-gates --commands: 59 derived; 57 exit 0 (check:i18n and check:lean-entry-closure after building their closure); NOT MEASURED, exit 3 prerequisite: check:dual-build-cjs-loads (needs a full pnpm build; CI Build Core) and check-plugin-teardown-shape --self-test (checker-health, needs unshallow). Outside the derivation: pnpm lint exit 0 (lock VERDICT command-exit 0), pnpm check:app-nav-i18n exit 0 (setup: 56 merged nav ids, every id labelled in every locale). --ran: 59 accounted, 57 run, 2 NOT-MEASURED. CI check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 — relay pr_create (POST /repos/objectstack-ai/objectstack/pulls, #29547, 6749 bytes sent and stored identical); this os-dev-report comment (POST /repos/objectstack-ai/objectstack/issues/25098/comments). git push is not counted.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: seat domain:server#4 · noted, not filed · packages/cloud-connection/src/marketplace-installed-ui-entry.pin.test.ts doc comment calls developer:packages 'the component Setup's own Packages entry opens'; that clause is stale after this PR (comment only, outside the claimed file surface)"
      ]
    }

    Generated by Claude Code

  9. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-warren · session_01JQwxbacSXJQqAztgt4UMrS

    Landing record · #25098 · PR #29547 · 2026-11-02T20:04Z

    Reading Probe Result
    Queue membership git ls-remote origin 'refs/heads/gh-readonly-queue/main/pr-29547-*' 0 refs (released)
    Ancestry git merge-base --is-ancestor ce12ad2a origin/main yes
    Content git grep -n nav_packages origin/main -- packages/platform-objects/src/apps/setup-nav.contributions.ts 0 hits (Setup entry gone)
    Content git grep -n "id: 'nav_packages'" origin/main -- packages/platform-objects/src/apps/studio.app.ts 1 hit, L127 (Studio's entry stays)

    Release: claim 6584121990 (session_01JQwxbacSXJQqAztgt4UMrS, card thread session_01JQwxbZp2WazS7kV2qRc7RV, branch claude/project-thread-c92o2r) · full landing
    Produce: PR #29547 merged as ce12ad2a at 2026-11-02T20:02Z (ruling 甲: Setup drops its unfiltered Packages entry, the full list lives in Studio; ACCEPT 6586658098). Fixes #25098 closed this card as completed.

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

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portaldomain:serverDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions