diff --git a/tests/runner-e2e/README.md b/tests/runner-e2e/README.md index c1cb765f0b5..bd446143639 100644 --- a/tests/runner-e2e/README.md +++ b/tests/runner-e2e/README.md @@ -187,8 +187,10 @@ pnpm test:e2e:runner -- --id rolling-web-deployment.runner-codex.daytona.recover ``` This source lane requires a complete server/UI build and disposable S3 and -Postgres. Each controller has an independent compiled build and cache; shared -workspace dependencies mean it is not released-container or Railway evidence. +Postgres. Each controller has an independent compiled build and cache. The copied +app retains the checkout's `cli/` and `packages/` dependency links, including the +development Runner vendor entry. Shared workspace dependencies mean this is +not released-container or Railway evidence. The read-only recovery observer captures the live predecessor's identity just before handoff, then requires a new controller generation, authenticated Runner attachment, and new canonical events for the original execution. No fixture diff --git a/tests/runner-e2e/rolling-deployment-process.ts b/tests/runner-e2e/rolling-deployment-process.ts index 00377990759..c55aa5caab3 100644 --- a/tests/runner-e2e/rolling-deployment-process.ts +++ b/tests/runner-e2e/rolling-deployment-process.ts @@ -48,6 +48,7 @@ export async function startRollingDeploymentProcess(input: { // This lane uses workspace dependencies, whose exports include TypeScript. // Preserve the normal development plugin loader beside each compiled copy. await symlink(path.join(input.repositoryRoot, "cli"), path.join(home, "app/cli")); + await symlink(path.join(input.repositoryRoot, "packages"), path.join(home, "app/packages")); await writeFile(path.join(appRoot, "package.json"), '{"type":"module"}'); for (const omittedAsset of input.browser.omitAssets ?? []) { if (!/^[A-Za-z0-9_.-]+\.js$/.test(omittedAsset)) throw new Error("Unsafe omitted asset fixture");