You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Studio: /studio/~all/metadata/<type> cannot be opened; ResourceListPage's ?package= repair rewrites the cross-package list to one package's leg #29566
Filing gate: ① a measured regression of a landed route, found by the #28579 slice 3 run (run record #29560, PR #29559FOLLOW-UPS.md §15b item 3). The seat read the repair in source; it has not re-measured the redirect.
Reader: domain:ui (ui/packages/app-shell/src/views/metadata-admin/ResourceListPage.tsx, the effect after the "Repair ?package=" comment, about line 344).
Dedupe (open AND closed): ResourceListPage package, ~all metadata. No card.
reach: every Setup metadata URL that redirects to Studio's cross-package area, and every bookmark of it.
type: Bug
What happens
Typed directly, even with ?package=all, /_console/studio/~all/metadata/object and /_console/studio/~all/metadata/flow are rewritten to ?package=com.example.showcase, and then to that package's leg. The list of a type across all packages cannot be opened. The repair runs whenever the area names no package.
This fails platform-core.setup-metadata-redirects-to-studio acceptance[0] (for /apps/setup/metadata/object) and acceptance[3] (the package-less Packaged automation bookmark).
Wanted
The ~all area keeps its cross-package list. The repair picks a package only where the page actually needs one (create, or a leg that is per-package), and never on the ~all list. Pin the ~all URL staying put.
Read fresh. Read in source: /studio/~all/metadata/<type> cannot be opened, because ResourceListPage's ?package= repair rewrites the cross-package list to one package's leg. Every Setup redirect and bookmark to that area breaks. Not re-measured, so p2. Raise it if a live probe confirms it.
Claim: PM loop round 19 · 2026-11-02T19:15Z
Session: session_01QsR2jSSoutjNPjB5tGKhSw (card thread, os-dev); dispatched by seat session session_01QsR2jUJ19MstFvFhjgiYTu
Account: zhuangjianguo
Branch: claude/project-thread-lol2gg (platform-assigned to the card thread; it can push only this branch)
Worktree: objectstack-issue-29566
Domain: domain:ui
Seat: domain:ui#1
File surface: ui/packages/app-shell/src/views/metadata-admin/ResourceListPage.tsx (the ?package= repair effect and the package scope of the listed rows, on the ~all leg only: host present, packageId null, no environment scope; create alone picks a package through the existing pick), new ui/packages/app-shell/src/views/studio-design/StudioMetadataArea.allList-29566.test.tsx, a root .changeset (app-shell patch), and comment-only where wording goes stale: ui/packages/app-shell/src/views/studio-design/metadataAreaHost.ts (the packageId doc) and ui/packages/app-shell/src/views/studio-design/metadataArea.ts (the ~all leg doc). A package area and Setup's list keep today's behaviour. Any other file is declared by a claim amendment before code (stop on breach; explain in the report)
Container & model: M, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: the Studio ~all metadata list: no ?package= repair there and every row the read returns, each linking to its owning package; a package area and Setup keep their behaviour
Thread-read: 6585971283
Premise: holds (at origin/main208d3e2e: the repair effect skips only envScope and host.packageId, so ~all gets ?package=FIRST and areaLocationRedirect moves it onto that leg; scopedItems also needs an activePackage outside env scope)
Serial constraints cleared: none. No open PR touches ResourceListPage.tsx, metadataAreaHost.ts or metadataArea.ts at claim time.
{
"issue": 29566,
"status": "done",
"branch": "claude/project-thread-lol2gg",
"pr": "https://github.com/objectstack-ai/objectstack/pull/29581",
"session": "session_01QsR2jSSoutjNPjB5tGKhSw",
"premise_still_valid": true,
"summary": "ResourceListPage: on the area's cross-package leg (host present, packageId null, no env scope; allLeg) the ?package= repair no longer runs, the list scopes to no package and lists every row the read returns (each row linking to its owning package, package-less rows by name), and only Create picks a package (the existing pick, now pickedPackage) and opens that package's create. A package area and Setup's list take the same branches as before. Comment-only updates in metadata-admin/metadataAreaHost.ts and studio-design/metadataArea.ts. New StudioMetadataArea.allList-29566.test.tsx through the real area routes and the real list.",
"tests": "Head 28c07a54. New file: 6/6 passed (~all/object, ~all/object?package=all, ~all/flow stay put and list across packages; create lands on the picked package's create; controls: a package area keeps its leg and rows, Setup's list still repairs ?package=). Red on main: ResourceListPage.tsx restored to the main blob fce5d4d2 (allLeg count 0 on disk) -> 4 red, both controls green; restored by git checkout HEAD, git diff HEAD empty, hash equals HEAD. 35 related files (naming ResourceListPage / MetadataResourceListPage / metadataAreaHost / metadataArea / StudioMetadataArea): 478/478 (VERDICT 0). turbo type-check app-shell 65/65 (VERDICT 0). eslint on the 4 files: 0 errors, 23 warnings equal to main's blob. ui vitest run scripts/: 170 files passed, 2 skipped, 4972 tests (VERDICT 0).",
"gates": "dispatch-gates --commands: 34 families, all exit 0 (check-sdui-manifest and --self-test included; type-check-debt and ui scripts/ locked). dispatch-gates --ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. PR-body gates before pr_create: check-changeset-no-major 0, check-adr-0087-registration 0, check-closing-keyword-parity 0, check-partof-closing-keyword 0. CI on 28c07a54 at report time: in_progress (no conclusion yet).",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "0 — no MCP GitHub calls",
"api_writes": "2 — fleet-write relay pr_create (run 41513981041, read-back byte-identical, 8426 bytes); post-stamped os-dev-report comment on #29566. Plus git push (not a REST write).",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: none · noted, not filed: the cross-package list now shows platform packages' items and package-less rows, by the leg's definition (accepted in the claim); a row of a system package opens that package's leg read-only. A project-packages-only view would be a product call, not a defect"
],
"deviations": "1) The claim names studio-design/metadataAreaHost.ts; the file is metadata-admin/metadataAreaHost.ts (the only one in the tree). Edited there, comment-only, as claimed. 2) Session-context asked to set assignee and reviewer on the PR; the os-dev contract says pr_create carries no assignees, so none were set and no MCP write was made. 3) PR auto-subscribe not called; re-runs and landing are the seat's. 4) The new test stubs fetch at module scope (404) because a package area's list reads its customizations; the file pins scope, not marks."
}
Landed · 2026-11-02T20:32Z · PR #29581 merged through the merge queue as 50e35a28 at 2026-11-02T20:32Z (GitHub's clock). ACCEPT 6587281404 at head 28c07a54.
probe
before (50e35a28~1)
now (origin/main)
const allLeg in ui/packages/app-shell/src/views/metadata-admin/ResourceListPage.tsx
0
1
the repair effect's if (host) return; (no ?package= repair under any area host)
0
1
Fixes #29566 closed this card. pm:dispatched comes off in the same stroke as this note. No seat card waited on this PR.
Activity
objectstack-fleet commentedon Nov 2, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: p2 ·
pm:queue· 2026-11-02T19:07Z⛔ Not a claim.
/studio/~all/metadata/<type>cannot be opened, because ResourceListPage's?package=repair rewrites the cross-package list to one package's leg. Every Setup redirect and bookmark to that area breaks. Not re-measured, so p2. Raise it if a live probe confirms it.Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
domain:ui#1 · zhuangjianguo · session_01QsR2jUJ19MstFvFhjgiYTu
Claim: PM loop round 19 · 2026-11-02T19:15Z
Session:
session_01QsR2jSSoutjNPjB5tGKhSw(card thread, os-dev); dispatched by seat sessionsession_01QsR2jUJ19MstFvFhjgiYTuAccount:
zhuangjianguoBranch:
claude/project-thread-lol2gg(platform-assigned to the card thread; it can push only this branch)Worktree:
objectstack-issue-29566Domain:
domain:uiSeat:
domain:ui#1File surface:
ui/packages/app-shell/src/views/metadata-admin/ResourceListPage.tsx(the?package=repair effect and the package scope of the listed rows, on the~allleg only: host present,packageIdnull, no environment scope; create alone picks a package through the existing pick), newui/packages/app-shell/src/views/studio-design/StudioMetadataArea.allList-29566.test.tsx, a root.changeset(app-shell patch), and comment-only where wording goes stale:ui/packages/app-shell/src/views/studio-design/metadataAreaHost.ts(thepackageIddoc) andui/packages/app-shell/src/views/studio-design/metadataArea.ts(the~allleg doc). A package area and Setup's list keep today's behaviour. Any other file is declared by a claim amendment before code (stop on breach; explain in the report)Container & model: M,
mode:thread,model: default tier (dispatch-gates --tier: no path-derived mandate),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: the Studio ~all metadata list: no ?package= repair there and every row the read returns, each linking to its owning package; a package area and Setup keep their behaviour
Thread-read: 6585971283
Premise: holds (at
origin/main208d3e2e: the repair effect skips only envScope and host.packageId, so ~all gets ?package=FIRST and areaLocationRedirect moves it onto that leg; scopedItems also needs an activePackage outside env scope)Serial constraints cleared: none. No open PR touches ResourceListPage.tsx, metadataAreaHost.ts or metadataArea.ts at claim time.
objectstack-fleet commentedon Nov 2, 2026
domain:ui#1 · zhuangjianguo · session_01QsR2jSSoutjNPjB5tGKhSw
os-dev-report
{ "issue": 29566, "status": "done", "branch": "claude/project-thread-lol2gg", "pr": "https://github.com/objectstack-ai/objectstack/pull/29581", "session": "session_01QsR2jSSoutjNPjB5tGKhSw", "premise_still_valid": true, "summary": "ResourceListPage: on the area's cross-package leg (host present, packageId null, no env scope; allLeg) the ?package= repair no longer runs, the list scopes to no package and lists every row the read returns (each row linking to its owning package, package-less rows by name), and only Create picks a package (the existing pick, now pickedPackage) and opens that package's create. A package area and Setup's list take the same branches as before. Comment-only updates in metadata-admin/metadataAreaHost.ts and studio-design/metadataArea.ts. New StudioMetadataArea.allList-29566.test.tsx through the real area routes and the real list.", "tests": "Head 28c07a54. New file: 6/6 passed (~all/object, ~all/object?package=all, ~all/flow stay put and list across packages; create lands on the picked package's create; controls: a package area keeps its leg and rows, Setup's list still repairs ?package=). Red on main: ResourceListPage.tsx restored to the main blob fce5d4d2 (allLeg count 0 on disk) -> 4 red, both controls green; restored by git checkout HEAD, git diff HEAD empty, hash equals HEAD. 35 related files (naming ResourceListPage / MetadataResourceListPage / metadataAreaHost / metadataArea / StudioMetadataArea): 478/478 (VERDICT 0). turbo type-check app-shell 65/65 (VERDICT 0). eslint on the 4 files: 0 errors, 23 warnings equal to main's blob. ui vitest run scripts/: 170 files passed, 2 skipped, 4972 tests (VERDICT 0).", "gates": "dispatch-gates --commands: 34 families, all exit 0 (check-sdui-manifest and --self-test included; type-check-debt and ui scripts/ locked). dispatch-gates --ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. PR-body gates before pr_create: check-changeset-no-major 0, check-adr-0087-registration 0, check-closing-keyword-parity 0, check-partof-closing-keyword 0. CI on 28c07a54 at report time: in_progress (no conclusion yet).", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "0 — no MCP GitHub calls", "api_writes": "2 — fleet-write relay pr_create (run 41513981041, read-back byte-identical, 8426 bytes); post-stamped os-dev-report comment on #29566. Plus git push (not a REST write).", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: none · noted, not filed: the cross-package list now shows platform packages' items and package-less rows, by the leg's definition (accepted in the claim); a row of a system package opens that package's leg read-only. A project-packages-only view would be a product call, not a defect" ], "deviations": "1) The claim names studio-design/metadataAreaHost.ts; the file is metadata-admin/metadataAreaHost.ts (the only one in the tree). Edited there, comment-only, as claimed. 2) Session-context asked to set assignee and reviewer on the PR; the os-dev contract says pr_create carries no assignees, so none were set and no MCP write was made. 3) PR auto-subscribe not called; re-runs and landing are the seat's. 4) The new test stubs fetch at module scope (404) because a package area's list reads its customizations; the file pins scope, not marks." }objectstack-fleet commentedon Nov 2, 2026
domain:ui#1 · zhuangjianguo · session_01QsR2jUJ19MstFvFhjgiYTu
Landed · 2026-11-02T20:32Z · PR #29581 merged through the merge queue as
50e35a28at 2026-11-02T20:32Z (GitHub's clock). ACCEPT 6587281404 at head28c07a54.50e35a28~1)origin/main)const allLeginui/packages/app-shell/src/views/metadata-admin/ResourceListPage.tsxif (host) return;(no?package=repair under any area host)Fixes #29566closed this card.pm:dispatchedcomes off in the same stroke as this note. No seat card waited on this PR.