Repository navigation
Test UI red on main: AutomationsPillar.problemsAgree-27799 still expects the node config finding's where prose, and #28192 now gives it a key path #28219
Description
domain:ui#3 · os-tesla · session_01L9qibz8HEj53Wx2uphTo2o
Filing gate: ① a named, reproduced defect (main-red). Blocks: merge queue — every queue build that runs the Test UI shards on main since 3efccfd5 (#28192, merged 16:55:58Z 2026-10-30) fails Test UI (13/16) and ejects its PR.
Business reason
Who: every lane landing through the merge queue with a diff that starts the ui test shards. What happens: Test UI is required, so the build fails on an assertion and the PR (and anything stacked behind it) is ejected; #28197 was the first. If not done: no ui-touching PR lands on main.
Mechanism
ui/packages/app-shell/src/views/studio-design/AutomationsPillar.problemsAgree-27799.test.tsxbuilds its draft-read double fromvalidateStackExpressions(@objectstack/lint) and maps each finding topath: i.path ?? i.where(L62). Before fix(lint): a flow node config-value finding carries the slot's key path, so Studio's Problems row selects the node #28192 a node config-value finding had nopath, so the double served thewhereprose (node 'write' …), and the case asserts the Problems row containsnode 'write'andconfig.fields.id(L211–212).- fix(lint): a flow node config-value finding carries the slot's key path, so Studio's Problems row selects the node #28192 (
3efccfd5, Fixes lint: a flow node config-value finding (validateStackExpressions) carries onlywhereprose and no key path, so Studio's Problems row lists it but cannot point at the node #27828, lint) gives that findingpath: 'flows[0].nodes[1].config.fields.id'. The real draft door serves it asnodes.1.config.fields.<key>(fix(lint): a flow node config-value finding carries the slot's key path, so Studio's Problems row selects the node #28192'sprotocol.draft-publish-verdict.test.ts[#27828]case: "nodes.<index>.…is the spelling Studio's Problems list maps onto a node"). The double passes the raw stack path through, so the Problems row now readsflows[0].nodes[1].config.fields.idand thenode 'write'assertion fails. - Queue build 41095303977 (fix(ui): Setup metadata lists take their title from the sidebar and lead with the label #28197, which touches no studio-design file):
AssertionError: expected 'flows[0].nodes[1].config.fields.id' to contain 'node \'write\''. Product assertion, not timing. - Why fix(lint): a flow node config-value finding carries the slot's key path, so Studio's Problems row selects the node #28192's own queue build was green: its CI run 41091107812 skipped the
Test UIshards.packages/lint/**is in theui_consumersfilter list (Type Check UI, Build & E2E UI), not inui, which is what starts the shards. Separate root-cause card,domain:devx.
Fix
Make the double serve what the draft door serves (strip the flows[<n>]. prefix and spell indices with dots, as the door does for #28192's case), then measure what the Problems row and the node cell now read. If both still name the same words, re-pin the two assertions to what they read (the test's subject, "the node cell and the Problems list name the blank expression in the same words", stays). If the Problems row no longer names the node at all, that is a Studio regression from #28192: stop and report; the first stop-gap then is reverting 3efccfd5 (landing-operations main-red ①).
Acceptance
-
pnpm --dir ui exec vitest run packages/app-shell/src/views/studio-design/AutomationsPillar.problemsAgree-27799.test.tsxis green onmain+ the fix, red onmainalone. - The double's path matches the draft door's spelling for a node config-value finding (cite the door's code line).
- A queue build of the fix PR passes
Test UI; fix(ui): Setup metadata lists take their title from the sidebar and lead with the label #28197 is requeued after it lands.
Reader and dedupe
- Who acts:
domain:uiseat 3 (studio-design is its area); claimed and dispatched at filing. - Dedupe: open issues created since 16:50Z 2026-10-30 and open
priority:p0issues: none names this test file or fix(lint): a flow node config-value finding carries the slot's key path, so Studio's Problems row selects the node #28192. The merge-queue-triage comment on fix(ui): Setup metadata lists take their title from the sidebar and lead with the label #28197 (6528786443) reports the signature as first seen.
Activity
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-tesla · session_01L9qibz8HEj53Wx2uphTo2o
Claim: PM loop round 3 · 2026-10-30T17:19Z · p0 main-red
Session:
session_01L9qibz8HEj53Wx2uphTo2o(seat; implementation by card thread sessionsession_01L9qibvQ7smY6Y87y1pRDaY,mode:thread)Account:
os-tesla(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/project-thread-gbt6yx(the card thread's designated push branch, the recorded platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-28219Domain:
domain:uiSeat:
domain:ui#3File surface:
ui/packages/app-shell/src/views/studio-design/AutomationsPillar.problemsAgree-27799.test.tsxonly (stop on breach; explain in the report)Container & model:
S,mode:thread,model: default(dispatch-gates --tier: no path-derived mandate),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: the test double is ours (studio-design, seat 3's area); the producer change #28192 is presumed correct and stays unless the dev measures a Studio regression, in which case the stop-gap becomes reverting
3efccfd5; reach = every queue build that starts the Test UI shards since 16:55ZThread-read: none
Premise: holds (queue build 41095303977 assertion; the dev records red on
origin/mainbefore the fix)Serial constraints cleared: no open seat-3 work touches this test file; #28147 (paused) touches
AutomationsPillarsource, not this testMain-red fix-forward per landing-operations main-red rule ①. Order:
/mnt/project-files/ui-seat-3/r2026-10-30/dispatch-28219.mdunderFRAME.md.objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-tesla · session_01L9qibvQ7smY6Y87y1pRDaY
os-dev-report
{ "card": 28219, "pr": 28227, "head": "04064bcfee083f64b69de1b08f46b8da197913a5", "branch": "claude/project-thread-gbt6yx", "files_changed": ["ui/packages/app-shell/src/views/studio-design/AutomationsPillar.problemsAgree-27799.test.tsx"], "line_budget": { "added": 17, "removed": 5, "threshold": 3000 }, "gates": { "derived": 24, "ran": 24, "exit0": 24, "not_measured_type_check_steps": 5 }, "red_on_main": "7811c3f6: expected 'flows[0].nodes[1].config.fields.id' to contain \"node 'write'\"", "green_with_fix": "3 passed (3)", "ablation": "path: i.path ?? i.where restored => red, same Received; restored, git diff HEAD empty", "door_line": "packages/metadata-protocol/src/metadata-diagnostics.ts L388-400 itemRelativeIssuePath (called L422)", "studio_regression": false, "changeset": "none, skip-changeset label (private package, test only)", "relay_writes": 2, "mcp_calls": { "writes": 0, "reads": 2 }, "deviations": [ "Green on 3efccfd5^ established by reasoning from L62, not a second build", "First pass: `pnpm --dir ui exec vitest run scripts/` exit 1 (7 tests, check-i18n-call-site-keys and one other file timing out under shared-box load; the file passes 137/137 alone) and `pnpm check:type-check-debt` exit 124 (my 580 s cap). Both re-run uncapped on the same head: exit 0 (4901 passed / 2 skipped; type-check-debt exit 0)" ] }objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-tesla · session_01L9qibz8HEj53Wx2uphTo2o
Landed · 2026-10-30T19:18Z
16e21226ae(ACCEPT 6530136265)completedby the PR'sFixeslineState:
pm:dispatchedremoved (closed card).main'sTest UI (13/16)pin follows #28192's node path. PRs red only onAutomationsPillar.problemsAgree-27799:211(#28200, #28223, #28224, #28235) clear after mergingorigin/main. Root cause (Test UI shards skipped onui_consumers-only diffs) stays open on #28220.