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
app-shell: PackageFormDialog.validationTiming test reads the zh label before the lazy studio catalogue loads, and fails intermittently since #26815 #26863
Filing gate: ① a defect, measured, with the landing site named. It is a flaky UI test that turns main and unrelated PRs red. Filed by the domain:server seat 2 (session_0186vfjHHMsRXC9EUT9hTFMo) while landing #26856. ⛔ Not a claim. Dedupe: the newest 60 issues of every state were grepped for PackageFormDialog and 软件包, with no match.
Measured
ui/packages/app-shell/src/views/metadata-admin/PackageFormDialog.validationTiming.test.tsx:66 fails with TestingLibraryElementError: Unable to find a label with the text of: /软件包 ID/. The failures so far:
The next main run at 8eef9a8db4 passed it, so the test is intermittent.
Likely cause
#26815 (#25922 slice S3) moved the package-form strings into the lazily loaded studio i18n namespace. The test reads the zh label before that catalogue has loaded. #26800 fixed the same shape for flowCanvasChip-11665, whose test now awaits the lazy studio zh catalogue before reading the tooltip.
Wanted
The test awaits the lazy studio zh catalogue, or finds the label with an async query, the way #26800 did. ⛔ No skip, no quarantine, and no raised timeout as the fix. Also sweep the other app-shell tests that read a string #26815 moved, because the same race applies to them.
Filing facts
Business reason: every eviction or red PR costs a CI cycle, and a seat that cannot read the log treats it as a regression.
Reader who acts: the triage seat, then the domain:ui implementer.
Claim: PM loop round 1
Session: session_01QsR2jTfvjNTaR29ehLk26T
Account: zhuangjianguo
Branch: claude/project-thread-lwzcd3 (platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)
Worktree: objectstack-issue-26863
Domain: domain:ui
Seat: domain:ui#4
File surface: test files under ui/packages/app-shell/src/** only (PackageFormDialog.validationTiming.test.tsx plus each sibling test that reads a string #26815 moved without awaiting the lazy studio catalogue), no changeset; ⛔ shipped code, the i18n package, skip/quarantine/raised timeout (stop on breach; explain in the report)
Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate; reason: the maintainer's standing rule 「只认领不需要 fable 的卡」, 2026-10-27T10:39Z), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: app-shell tests (ui lane) read zh strings that #26815 made lazy without awaiting the studio catalogue, so Test UI reds at random on main and on unrelated PRs · the platform path that may cover it: loadStudioCatalogue('zh'), which #26800 already awaits in two tests · reached by every Test UI run
Thread-read: none
Premise: holds (grep -c loadStudioCatalogue on PackageFormDialog.validationTiming.test.tsx → 0 on origin/main 5787df4d at 2026-10-27T19:17Z; the same red on PR #26866 shard 10/16, run 40566251810)
Priority: first-graded by the ui seat as priority:p1 (CI health, a jump: it reds the main-red fix PR #26866); finding removed
Serial constraints cleared: test files only, no open PR edits them
Dispatched at 2026-10-27T19:20Z to the card thread on that branch; the order lives in the thread's opening message.
{
"issue": 26863,
"status": "done",
"branch": "claude/project-thread-lwzcd3",
"pr": "https://github.com/objectstack-ai/objectstack/pull/26914",
"head": "a51a0622",
"session": "session_01QsR2jVTqmjzhQU2Rqq79mu",
"premise_still_valid": true,
"summary": "PackageFormDialog.validationTiming.test.tsx now awaits loadStudioCatalogue('zh') from @object-ui/i18n/namespaces/studio at module scope (it reads engine.packages.create.id / .name via getByLabelText, both moved by #26815). The sweep found two more #26815 dependents and gave them the same await: ResourceEditPage.discardDraftLabel-12690 (engine.edit.discardDraft, discardDraftConfirm, draftDiscarded; the PR #26877 Test UI 9/16 red) and ResourceEditPage.environmentOverlay-12141 (engine.edit.readOnlyTypeBanner). Test files only, 3 files +18/-0; no shipped code, no i18n package change, no changeset.",
"sweep": "population: every app-shell test file without the preload that names a zh locale in code or holds a CJK literal found in a studio zh value = 238 files (validationTiming excluded, already fixed). Run with the studio zh loader held never-resolving (ablation-replace on ui/packages/i18n/src/namespaces/studio/index.ts, restored blob == HEAD): Test Files 2 failed | 236 passed (238), Tests 2 failed | 2368 passed (2370). The 2 failures are the two ResourceEditPage files above. The other 236 judged safe on that run: none of their assertions depends on a lazy studio zh row (the key-reading FlowNodeInspector / ViewVariantInspector / datasetPickers / previews files included).",
"files_changed": [
"ui/packages/app-shell/src/views/metadata-admin/PackageFormDialog.validationTiming.test.tsx",
"ui/packages/app-shell/src/views/metadata-admin/ResourceEditPage.discardDraftLabel-12690.test.tsx",
"ui/packages/app-shell/src/views/metadata-admin/ResourceEditPage.environmentOverlay-12141.test.tsx"
],
"line_budget": "3 files, +18 / -0 (6 per file: comment + import + top-level await)",
"tests": "at a51a0622, under os-verify-lock: alone 5/5, 3/3, 12/12 passed. Studio zh loader delayed 4000 ms: leg A (preloads kept) Test Files 3 passed, Tests 20 passed; leg B (all three preloads removed) Test Files 3 failed, Tests 5 failed / 15 passed, incl. 'Unable to find a label with the text of: /软件包 ID/' (the card's CI signature); every mutation restored (blob == HEAD, git diff HEAD empty). Shard company (planShards from ui/scripts/test-shard-partition.mjs, which puts validationTiming on 10/16 as CI did; discardDraftLabel on 2/16; environmentOverlay on 13/16), app-shell files of each shard: shard 10 102 files 755 tests passed; shard 2 104 files 1010 tests passed; shard 13 107 files 1139 tests passed. app-shell turbo type-check 64/64 tasks, VERDICT command-exit 0.",
"gates": "at a51a0622: dispatch-gates --commands derived 24; all 24 exit 0 (closing-keyword-parity against the final body via GITHUB_EVENT_PATH; check-changeset-no-major --base origin/main and check-adr-0087-registration also 0); check:type-check-debt under the lock 0 raw tsc errors; vitest run scripts/ under the lock 178 passed | 2 skipped files, 5065 passed | 2 skipped tests; --ran: 24 derived, 24 run, 0 NOT-MEASURED; ui check:new-line-citations 0 new. PR check-runs: in_progress at report time.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"deviations": [
"Shard-company runs narrowed to each shard's packages/app-shell files (102/104/107 of 369/368/370). A whole-shard run was stopped by hand at 18 min because the non-TTY reporter printed nothing and it read as a stall; CI's Test UI runs the full shards. Named in the PR body.",
"PR reviewer request (session-context asks for update_pull_request reviewers) not made: the seat's card rules forbid GitHub MCP writes, and pr_create has no reviewers field.",
"Commits carry the repo's model-free trailer pair, not the harness reminder's model-named Co-Authored-By (pre-push check:commit-card-trailers)."
],
"mcp_calls": "2 — mcp__github__issue_read get_comments on #26863 (claim check); mcp__claude-code-remote__get_session (own session id). No GitHub MCP write.",
"api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/pulls + POST issues/26914/assignees, read back identical 5943 bytes, run 40582405132); this os-dev-report comment via the relay comment op. Plus git push (not REST).",
"open_questions": [],
"out_of_scope_findings": []
}
Seat close · domain:ui#4 · session_01QsR2jTfvjNTaR29ehLk26T
Main is fixed. On origin/main94e29cd1, each of the three files awaits loadStudioCatalogue('zh') at module scope: #26839 (942ffb21) added it to PackageFormDialog.validationTiming and ResourceEditPage.discardDraftLabel-12690, and #26855 (c4a4aefc) added it to ResourceEditPage.environmentOverlay-12141. The thread's sweep (238 app-shell tests with the zh loader held never-resolving) found exactly these three dependents, so no other file is owed. This seat's PR #26914 is closed as superseded. Closing as completed.
Activity
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 1
Session:
session_01QsR2jTfvjNTaR29ehLk26TAccount:
zhuangjianguoBranch:
claude/project-thread-lwzcd3(platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)Worktree:
objectstack-issue-26863Domain:
domain:uiSeat:
domain:ui#4File surface: test files under
ui/packages/app-shell/src/**only (PackageFormDialog.validationTiming.test.tsxplus each sibling test that reads a string #26815 moved without awaiting the lazy studio catalogue), no changeset; ⛔ shipped code, the i18n package, skip/quarantine/raised timeout (stop on breach; explain in the report)Container & model:
S,mode:thread,model: TIER_DEFAULT(dispatch-gates --tier: no path-derived mandate; reason: the maintainer's standing rule 「只认领不需要 fable 的卡」, 2026-10-27T10:39Z),effort: highClause-②: no
Metadata-protocol: none
Responsibility: app-shell tests (ui lane) read zh strings that #26815 made lazy without awaiting the studio catalogue, so Test UI reds at random on main and on unrelated PRs · the platform path that may cover it:
loadStudioCatalogue('zh'), which #26800 already awaits in two tests · reached by every Test UI runThread-read: none
Premise: holds (
grep -c loadStudioCatalogueonPackageFormDialog.validationTiming.test.tsx→ 0 on origin/main5787df4dat 2026-10-27T19:17Z; the same red on PR #26866 shard 10/16, run 40566251810)Priority: first-graded by the ui seat as
priority:p1(CI health, a jump: it reds the main-red fix PR #26866);findingremovedSerial constraints cleared: test files only, no open PR edits them
Dispatched at 2026-10-27T19:20Z to the card thread on that branch; the order lives in the thread's opening message.
Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
os-dev-report
{ "issue": 26863, "status": "done", "branch": "claude/project-thread-lwzcd3", "pr": "https://github.com/objectstack-ai/objectstack/pull/26914", "head": "a51a0622", "session": "session_01QsR2jVTqmjzhQU2Rqq79mu", "premise_still_valid": true, "summary": "PackageFormDialog.validationTiming.test.tsx now awaits loadStudioCatalogue('zh') from @object-ui/i18n/namespaces/studio at module scope (it reads engine.packages.create.id / .name via getByLabelText, both moved by #26815). The sweep found two more #26815 dependents and gave them the same await: ResourceEditPage.discardDraftLabel-12690 (engine.edit.discardDraft, discardDraftConfirm, draftDiscarded; the PR #26877 Test UI 9/16 red) and ResourceEditPage.environmentOverlay-12141 (engine.edit.readOnlyTypeBanner). Test files only, 3 files +18/-0; no shipped code, no i18n package change, no changeset.", "sweep": "population: every app-shell test file without the preload that names a zh locale in code or holds a CJK literal found in a studio zh value = 238 files (validationTiming excluded, already fixed). Run with the studio zh loader held never-resolving (ablation-replace on ui/packages/i18n/src/namespaces/studio/index.ts, restored blob == HEAD): Test Files 2 failed | 236 passed (238), Tests 2 failed | 2368 passed (2370). The 2 failures are the two ResourceEditPage files above. The other 236 judged safe on that run: none of their assertions depends on a lazy studio zh row (the key-reading FlowNodeInspector / ViewVariantInspector / datasetPickers / previews files included).", "files_changed": [ "ui/packages/app-shell/src/views/metadata-admin/PackageFormDialog.validationTiming.test.tsx", "ui/packages/app-shell/src/views/metadata-admin/ResourceEditPage.discardDraftLabel-12690.test.tsx", "ui/packages/app-shell/src/views/metadata-admin/ResourceEditPage.environmentOverlay-12141.test.tsx" ], "line_budget": "3 files, +18 / -0 (6 per file: comment + import + top-level await)", "tests": "at a51a0622, under os-verify-lock: alone 5/5, 3/3, 12/12 passed. Studio zh loader delayed 4000 ms: leg A (preloads kept) Test Files 3 passed, Tests 20 passed; leg B (all three preloads removed) Test Files 3 failed, Tests 5 failed / 15 passed, incl. 'Unable to find a label with the text of: /软件包 ID/' (the card's CI signature); every mutation restored (blob == HEAD, git diff HEAD empty). Shard company (planShards from ui/scripts/test-shard-partition.mjs, which puts validationTiming on 10/16 as CI did; discardDraftLabel on 2/16; environmentOverlay on 13/16), app-shell files of each shard: shard 10 102 files 755 tests passed; shard 2 104 files 1010 tests passed; shard 13 107 files 1139 tests passed. app-shell turbo type-check 64/64 tasks, VERDICT command-exit 0.", "gates": "at a51a0622: dispatch-gates --commands derived 24; all 24 exit 0 (closing-keyword-parity against the final body via GITHUB_EVENT_PATH; check-changeset-no-major --base origin/main and check-adr-0087-registration also 0); check:type-check-debt under the lock 0 raw tsc errors; vitest run scripts/ under the lock 178 passed | 2 skipped files, 5065 passed | 2 skipped tests; --ran: 24 derived, 24 run, 0 NOT-MEASURED; ui check:new-line-citations 0 new. PR check-runs: in_progress at report time.", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "deviations": [ "Shard-company runs narrowed to each shard's packages/app-shell files (102/104/107 of 369/368/370). A whole-shard run was stopped by hand at 18 min because the non-TTY reporter printed nothing and it read as a stall; CI's Test UI runs the full shards. Named in the PR body.", "PR reviewer request (session-context asks for update_pull_request reviewers) not made: the seat's card rules forbid GitHub MCP writes, and pr_create has no reviewers field.", "Commits carry the repo's model-free trailer pair, not the harness reminder's model-named Co-Authored-By (pre-push check:commit-card-trailers)." ], "mcp_calls": "2 — mcp__github__issue_read get_comments on #26863 (claim check); mcp__claude-code-remote__get_session (own session id). No GitHub MCP write.", "api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/pulls + POST issues/26914/assignees, read back identical 5943 bytes, run 40582405132); this os-dev-report comment via the relay comment op. Plus git push (not REST).", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Seat close ·
domain:ui#4·session_01QsR2jTfvjNTaR29ehLk26TMain is fixed. On
origin/main94e29cd1, each of the three files awaitsloadStudioCatalogue('zh')at module scope: #26839 (942ffb21) added it toPackageFormDialog.validationTimingandResourceEditPage.discardDraftLabel-12690, and #26855 (c4a4aefc) added it toResourceEditPage.environmentOverlay-12141. The thread's sweep (238 app-shell tests with the zh loader held never-resolving) found exactly these three dependents, so no other file is owed. This seat's PR #26914 is closed as superseded. Closing as completed.Generated by Claude Code