The live-link E2E intentionally creates a project without a lockfile. Prevent ambient CI=true from making Yarn 4's first install immutable, while preserving the CI environment for every other behavior under test.
The paragraph claimed later child output reaches only the scrollback. Output
after a settle still reaches the scrollback and whichever send is active when
it arrives — appendOutput writes both (session.ts:302-307), and settleActive
clears `active` rather than suppressing delivery. Only the settled operation
stops receiving it, which is what the timing bound protects.
Keep restore-only and self-hosted stores outside pnpm/action-setup's replaceable install directory, resolving the configured path for every paired cache. Pin Yarn 4 for the generated-project e2e so runner images without Corepack do not fall back to Yarn Classic, and update the bilingual decision record.
master already stabilized the raw-mode SIGINT scenario in 65e0ffe03 and
3be090f1d with wider scenario-owned bounds and deliberately delayed child
readiness, so the merge takes master's test implementation. What this branch
keeps is the contract that explains why those bounds are required: the note
paragraph on the settle boundary in PtySendOperation.append, and the
waitForOutput comment recording that raising its deadline alone cannot
recover output the send never collected.
- The clone exclusion is now '.runner*' (catches .runner_migrated /
.credentials_migrated, which GitHub writes on migrated runners and
which equally trip the already-configured refusal — hit live during
the 2026-07-27 org-group migration).
- The problem statement now states the verdict runs on ubuntu-latest,
scopes the switch to enterprise Linux-pool outages, and names the
residual dependency: node-compat/python-sdk/windows stay standard-
hosted, so a broader hosted-capacity failure still blocks the
verdict, with Windows the only leg lacking any in-house substitute.
Static gate green locally: 32 passed, 0 failed.
Two sessions resolved the same all-checks-passed conflict differently. The
remote's version is the one kept: the selector with '|| ubuntu-latest'
covers a standard-hosted outage too, which a bare ubuntu-latest pin does
not, and its runbook wording is internally consistent at four failover
jobs. Reverted this side's three-job doc downgrade.
One semantic conflict on the `all-checks-passed` verdict job. Master moved
it to `ubuntu-latest`; this branch had routed it through the failover
selector so a hosted-pool outage could not leave the required verdict
queued. Master's resolution satisfies that requirement more directly:
standard hosted capacity is independent of both custom pools, so the
verdict is reachable whichever pool is degraded, and the selector is no
longer needed. Kept `ubuntu-latest` and folded the failover reasoning
into its comment.
The failover runbook accordingly documents three failover jobs (the three
required Linux workers), not four, and states why the verdict stays on
standard hosted capacity in both states.