Skip to content

Flaky: FormPage.predicateScope hop1SessionPrincipal times out at 15s under full-project parallel load #6567

Description

@claude

Observed on 2026-08-26 while verifying objectui#3719 (branch claude/issue-3719-settings-valuedomain-combobox, worktree at 51f9c5bed+2). Filed unassigned; not touched, since it is outside that card's scope.

Fact

apps/console/src/components/FormPage.predicateScope.test.tsx > #6110 hop 1 — /forms/:name publishes the SESSION principal > hop1SessionPrincipal: the route alone binds current_user, with no scope handed in fails only under full-project parallel load, with:

Error: Test timed out in 15000ms.
❯ src/components/FormPage.predicateScope.test.tsx:336:3

Measured three times on the same tree, same commit:

runscoperesult
vitest run apps/console/81 files / 920 tests920 passed (duration 246s)
vitest run apps/console/81 files / 920 tests1 failed — this test, 15023ms (duration 386s)
vitest run apps/console/src/components/FormPage.predicateScope.test.tsx1 file / 8 tests8 passed

So it is load-dependent, not a regression: the two full runs bracket an unrelated .md-only commit, and the isolated run is green at the same HEAD.

Why it is worth a card rather than a retry

AGENTS.md §"测试纪律" names this exact shape — an unbounded module load counted inside a bounded window — and prescribes hoisting the dynamic import() into the test file's module scope, explicitly not raising the timeout or adding the file to heavyDomTests. The failing test is annotated in-file as "⚠️ THE anti-inert case … every other DENIED case above hands FormPage the scope directly and stays green even if nothing in the app ever publishes it", i.e. it is the one case in the file that is not vacuous. A flaky anti-inert pin is the worst one to have flaky: the pressure when it goes red in CI is to weaken precisely the assertion that makes the other seven mean something.

FormPage reaches its renderer through the registry, so the suspected boundary is a lazy plugin import resolving inside the 15s budget only when the transform pipeline is not saturated (the slow run spent 851s in setup across the project).

Not verified here

Whether the specific unbounded import is FormPage's own React.lazy or one reached through @object-ui/react's registry — that needs the failure dump, which this run did not capture beyond the timeout line.


Generated by Claude Code

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions