Skip to content

Smoke and CI wall-clock budgets: the five rows #2323 left as "assess" #2333

Description

@cliffhall

Split out of #2323, which enumerated every wall-clock budget in the repo's test
gates and fixed the Vitest, Testing Library and Playwright ones. Five rows in
its Group F/G were marked assess — they need a read that survey did not do,
and #2323 says so explicitly under "Follow-up work identified but not in scope".
The cheap, definite one (F6, hoisting the 19 scattered Playwright locator
budgets into scripts/lib/browser-timeouts.mjs) was folded in; these are the
rest.

Each needs the same two questions answered that #2323 answered for the others:
is this a ceiling on a poll or a fixed sleep, and is the number one
somebody chose for a machine running three or four concurrent worktree gates
.

# Site Current What to decide
F1 scripts/lib/announced-child.mjs:48-49 timeoutMs = 30_000, pollMs = 250 Bounds test-server readiness for every smoke that needs one, so it gates the widest surface of the five.
F4 scripts/lib/mcp-app-flow.mjs:177-179 goto 30_000, connect 45_000, ready 45_000 Predates browser-timeouts.mjs and duplicates its ui/roundTrip split by hand. Either adopt those constants or say why this flow differs.
F5 scripts/lib/deep-link-connect.mjs:60-61 goto 30_000, connect 45_000 Deliberately mirrors F4 — keep them shared, don't fork. Same call as F4.
F7 scripts/lib/pty.mjs:133 spawnSync(…, { timeout: 5000 }) Probes for script(1). A 5s bound on a process spawn under 8x oversubscription is thin, and its expiry means "no pty available" rather than "slow", so a false negative silently changes what the TUI smoke tests.
G1 .github/workflows/main.yml — no timeout-minutes on any job or step (5 jobs) GitHub's 360 min default Set an explicit per-job budget as a hung-job guard, not as a flake fix. Nothing in #2323's evidence implicates CI — GitHub runners are not the contended machine. sdk-watch.yml:119 already does this (timeout-minutes: 20) and is the precedent.

Not in scope

Acceptance

  • Each of the five rows is either changed with a comment saying what the budget
    covers, or recorded on this issue as "keep, the default is correct" with the
    reasoning.
  • F4 and F5 end up sharing whatever they end up with.
  • If any Playwright budget moves, it moves in scripts/lib/browser-timeouts.mjs
    (or joins it), not at a call site.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior changev2Issues and PRs for v2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions