Skip to content

feat(platform-objects): Setup drops its unfiltered Packages entry; the full list lives in Studio - #29547

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-c92o2r
Nov 2, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-c92o2r

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Warren · project thread
Fixes #25098

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:系统设置(Setup)的「应用」组去掉未过滤的「软件包」入口;完整软件包列表只留在 Studio → 总览 → 软件包。
  • 为什么改:维护者裁决「二、软件包列表挪到 Studio ;甲」:完整列表是开发面,Setup 只保留应用市场过滤后的「已安装应用」入口。
  • 风险与回滚:只删一个导航项及其四语种标签;页面本身没动,书签照常可开。回滚即还原本 PR。
  • 先看:setup-nav.contributions.ts(删掉的那一行)、新 pin setup-packages-door.test.ts、changeset。
  • 两分钟验证:pnpm --filter @objectstack/platform-objects exec vitest run src/apps/setup-packages-door.test.ts,预期 3 个用例全绿。
  • 需要你做的:无,席位落地。

What changes

  • packages/platform-objects/src/apps/setup-nav.contributions.ts: Setup's group_apps contribution drops nav_packages (developer:packages, unfiltered). The group comment now says where the full list lives (Studio) and which Setup door remains: nav_marketplace_installed, the marketplace-filtered "Installed Apps" entry that @objectstack/cloud-connection contributes wherever the marketplace capability is present. Studio's nav_packages (studio.app.ts, Overview → Packages) is untouched.
  • Translations: apps.setup.navigation.nav_packages is removed from en, zh-CN, ja-JP and es-ES, and its recorded digest from the three *.source-hashes.ts tables. apps.studio.navigation.nav_packages stays in all four catalogs and all three hash tables.
  • setup-packaged-actions-nav.test.ts: restated, not loosened. Its retirement control used Setup's nav_packages as proof the walk reads the real array; it now uses nav_packaged_actions, which the same file already requires to exist. Its comment and one test title no longer say "beside Packages".
  • New pin setup-packages-door.test.ts: Setup's shell plus SETUP_NAV_CONTRIBUTIONS carry no developer:packages entry without a source filter (and no nav_packages id), and Studio's Overview still carries exactly one unfiltered developer:packages entry. The predicate has its own positive and negative controls.
  • Changeset: patch for @objectstack/platform-objects.

Why

Maintainer ruling 甲 on #25098 (amends #23892 ruling B, item 1): the full package list is a development surface, so its unfiltered entry lives in Studio only, and Setup keeps the marketplace-filtered Installed Apps door. The blocker objectstack-ai/cloud#3138 is cleared: cloud PR #3488 registers that door in hosted tenant environments, so a hosted Setup keeps a way to installed packages.

Tests

  • pnpm --filter @objectstack/platform-objects test (under the verify lock, after building the dependency closure): Test Files 110 passed (110), Tests 1510 passed (1510).
  • pnpm --filter @objectstack/platform-objects typecheck: exit 0.
  • Ablation, one leg plus restore, at commit 510f2898 via scripts/ablation-replace.mjs: re-inserting Setup's nav_packages line into setup-nav.contributions.ts turns Setup ships no unfiltered developer:packages entry red (expected [ { id: 'nav_packages', …(4) } ] to deeply equal []; 1 failed, 2 passed). Restore blob equals the HEAD blob (e8992d3f9d5b) and git diff HEAD is empty. The test imports the source file directly, so no dist/ rebuild sits in the path.

Acceptance notes

Verification

All readings at head 510f2898.

Derived gates: 59 derived, 57 exit 0, 2 NOT MEASURED; plus pnpm lint and check:app-nav-i18n
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 59 commands from the 11 changed paths (merge base 399df5bb).
  • 57 exit 0. pnpm check:i18n and pnpm check:lean-entry-closure first exited 3 (prerequisite not built); after turbo run build of the closure the i18n gate names, plus @objectstack/objectql, both exit 0: check-i18n-bundles: OK (10 package(s) — all bundles in sync, no undeclared authoring keys).
  • NOT MEASURED, reason: prerequisite not met (exit 3). pnpm check:dual-build-cjs-loads needs a full pnpm build of about 83 packages; CI's Build Core runs it. node scripts/check-plugin-teardown-shape.mjs --self-test is checker-health only and needs an unshallow clone.
  • pnpm check:app-nav-i18n (outside the derivation, run because the card names it): OK (13 contributor(s), 4 locale(s), 2 app(s) — setup: 56 merged nav id(s), account: 12 merged nav id(s) — every id labelled in every locale).
  • pnpm lint under the verify lock: VERDICT command-exit 0.
  • dispatch-gates --ran: 59 derived famil(ies) accounted for — 57 run, 2 NOT-MEASURED (2 DERIVED from a recorded exit 3).
  • CI families (type-check lanes, Build Core, Test Core) are read from this PR's check-runs, not re-run locally.

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (not touched)
  • 2. Every name I added uses the casing for its kind.
  • 3. No formatter ran; pnpm lint passes.
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset.
  • 6. packages/spec touched: its generated artifacts are regenerated and committed. (not touched)
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English. (The maintainer quick-read section is in Chinese by the os-dev order.)

Generated by Claude Code

…e full list lives in Studio

Ruling 甲 (amends #23892 ruling B): Setup keeps the marketplace-filtered
Installed Apps door, Studio keeps Overview > Packages. The Setup copies of
the entry's label and their source hashes go with it, the packaged-actions
pin is restated without it, and a new pin holds both directions.

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added the size/m label Nov 2, 2026
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

5 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run.

What this run could not see

Coarse fallback — 2 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 208d3e2efb47d21dc05793cae500d1d76ea25a21 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from a4079afda793478a377c217ae11b4f7d4b292795 — the merge of head b87abb91b4dfb8cf5e45ff6fe8838745bf39a325 into base 208d3e2efb47d21dc05793cae500d1d76ea25a21, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin a4079afda793478a377c217ae11b4f7d4b292795 && git checkout a4079afda793478a377c217ae11b4f7d4b292795
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 208d3e2efb47d21dc05793cae500d1d76ea25a21 b87abb91b4dfb8cf5e45ff6fe8838745bf39a325 && git checkout -B drift-repro 208d3e2efb47d21dc05793cae500d1d76ea25a21 && git merge --no-ff b87abb91b4dfb8cf5e45ff6fe8838745bf39a325

node scripts/docs-audit/affected-docs.mjs --json 208d3e2efb47d21dc05793cae500d1d76ea25a21

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

@github-actions github-actions Bot added documentation Improvements or additions to documentation tests tooling labels Nov 2, 2026
…oved to Studio

Co-Authored-By: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#4 · os-warren · session_01JQwxbacSXJQqAztgt4UMrS

席位核对

ACCEPT · domain:server#4 · head b87abb91b4dfb8cf5e45ff6fe8838745bf39a325 · 2026-11-02T19:37Z · seat review of record at TIER_DEFAULT (not governed: check-governed-merges --pr 29547 0 of 12 paths; Clause-②: no; no packages/spec path)

  1. Shape: draft, base main, body line 3 Fixes #25098. 12 files, +116/-36: one patch changeset for @objectstack/platform-objects, Setup's group_apps loses nav_packages, the key and its digests leave the four catalogs and three hash tables (Studio's nav_packages stays in all of them), one restated test, one new pin, and the CLI composition count. Seat read the diff: Studio's Overview entry (studio.app.ts) is untouched, and Setup keeps the marketplace-filtered nav_marketplace_installed door.
  2. Premise measured: ruling 甲 on 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 holds on origin/main: Setup carried an unfiltered developer:packages entry beside Studio's. The blocker cloud#3138 is cleared (cloud PR feat(spec)!: prune dead ReportColumnSchema/ReportGroupingSchema exports + unread report chart groupBy (#3463) #3488, per the card). The new pin's ablation reds only the Setup case (1 failed / 2 passed), and the restore equals HEAD.
  3. Gates on this head: check-runs pinned to b87abb91: 48 total, 35 success, 13 skipped, 0 failed; Lint & Repo Gates, TypeScript Type Check, Test Core (8/8 shards) and Build Core success. mergeable_state clean. Dev local at 510f2898: dispatch-gates --ran 59 derived / 57 run / 2 NOT MEASURED (check:dual-build-cjs-loads, covered by Build Core; teardown self-test, checker health only), pnpm lint 0, platform-objects 1510/1510.
  4. Accepted deviations: head b87abb91 adds one file outside the card's surface, packages/cli/test/connect-agent-both-halves-wire.pin.test.ts: the Setup tree count goes 34 → 33, the direct result of the removed entry, with the reason written in its comment. It was red on Test Core (4/8) at 510f2898 and is green here. The body's Verification readings name 510f2898; this one test file is the only difference, and CI is read on the new head.
  5. Out of scope: the stale doc-comment clause in packages/cloud-connection/src/marketplace-installed-ui-entry.pin.test.ts ("Setup's own Packages entry") is a test comment, not published text; the seat drops it rather than filing a card. nav_cloud_connection's move stays with cloud-connection: a runtime holding the env service key is platform-managed: register no Setup page, refuse unbind; move the entry to Integrations (ruling 甲) #25097. Skills-docs: n/a (Metadata-protocol: none).
  6. Landing: not governed, under 3000 lines ⇒ the seat lands it (pr_ready + automerge_enable). At MERGED: landing record on 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 by Fixes), pm:dispatched removed.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review November 2, 2026 19:39
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge November 2, 2026 19:39
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit ce12ad2 Nov 2, 2026
49 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-c92o2r branch November 2, 2026 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tests tooling

Projects

None yet

1 participant