diff --git a/src/lib/onboard/machine/flow-phases/agent-policy-finalization.test.ts b/src/lib/onboard/machine/flow-phases/agent-policy-finalization.test.ts index 5f848695f23..6032686b82a 100644 --- a/src/lib/onboard/machine/flow-phases/agent-policy-finalization.test.ts +++ b/src/lib/onboard/machine/flow-phases/agent-policy-finalization.test.ts @@ -5,7 +5,6 @@ import { describe, expect, it } from "vitest"; import type { OnboardFlowContext } from "../flow-context"; import { advanceTo, completeOnboardMachine } from "../result"; -import { OnboardRuntime, type OnboardRuntimeDeps } from "../runtime"; import { runOnboardSequenceWithRunner } from "../sequence-runner"; import { createAgentSetupPhase, @@ -17,8 +16,6 @@ import { import { MACHINE_SNAPSHOT_VERSION, type Session, - type SessionUpdates, - cloneSession, createSession, createTestRuntime, } from "../../../../../test/helpers/onboard-machine-runtime-fixture"; diff --git a/src/lib/onboard/machine/flow-sequence.test.ts b/src/lib/onboard/machine/flow-sequence.test.ts index 1fe51188963..e964cd28537 100644 --- a/src/lib/onboard/machine/flow-sequence.test.ts +++ b/src/lib/onboard/machine/flow-sequence.test.ts @@ -7,13 +7,10 @@ import type { OnboardFlowContext, OnboardFlowPhaseResult } from "./flow-context" import { onboardFlowPhaseResult } from "./flow-context"; import { buildOnboardFlowPhaseSequence } from "./flow-sequence"; import { advanceTo, branchTo, completeOnboardMachine } from "./result"; -import { OnboardRuntime, type OnboardRuntimeDeps } from "./runtime"; import { runOnboardSequenceWithRunner } from "./sequence-runner"; import { MACHINE_SNAPSHOT_VERSION, type Session, - type SessionUpdates, - cloneSession, createSession, createTestRuntime, } from "../../../../test/helpers/onboard-machine-runtime-fixture"; diff --git a/src/lib/onboard/machine/runner-sequence.test.ts b/src/lib/onboard/machine/runner-sequence.test.ts index 8a13f838e36..08c556d1013 100644 --- a/src/lib/onboard/machine/runner-sequence.test.ts +++ b/src/lib/onboard/machine/runner-sequence.test.ts @@ -12,12 +12,8 @@ import { type OnboardStateHandlers, runOnboardMachine, } from "./runner"; -import { OnboardRuntime, type OnboardRuntimeDeps } from "./runtime"; import { MACHINE_SNAPSHOT_VERSION, - type Session, - type SessionUpdates, - cloneSession, createSession, createTestRuntime as createRuntime, } from "../../../../test/helpers/onboard-machine-runtime-fixture"; diff --git a/src/lib/onboard/machine/runner.test.ts b/src/lib/onboard/machine/runner.test.ts index 5d5bca43c8a..727dd3acf06 100644 --- a/src/lib/onboard/machine/runner.test.ts +++ b/src/lib/onboard/machine/runner.test.ts @@ -17,12 +17,8 @@ import { type OnboardStateHandlers, runOnboardMachine, } from "./runner"; -import { OnboardRuntime, type OnboardRuntimeDeps } from "./runtime"; import { MACHINE_SNAPSHOT_VERSION, - type Session, - type SessionUpdates, - cloneSession, createSession, createTestRuntime as createRuntime, } from "../../../../test/helpers/onboard-machine-runtime-fixture"; diff --git a/src/lib/onboard/machine/runtime.test.ts b/src/lib/onboard/machine/runtime.test.ts index d76820af90a..1d67a40bbb1 100644 --- a/src/lib/onboard/machine/runtime.test.ts +++ b/src/lib/onboard/machine/runtime.test.ts @@ -120,6 +120,19 @@ function sessionInState(state: Session["machine"]["state"]): Session { return session; } +describe("onboard machine runtime fixture", () => { + it("keeps fallback clones isolated when normalization rejects a session (#8289)", () => { + const original = createSession(); + original.version = 0; + + const cloned = cloneSession(original); + cloned.steps.preflight.status = "complete"; + + expect(cloned).not.toBe(original); + expect(original.steps.preflight.status).toBe("pending"); + }); +}); + describe("OnboardRuntime", () => { it("starts a session and emits started/resumed lifecycle events", async () => { const { runtime, events, getSession } = createHarness(null); diff --git a/src/lib/onboard/machine/sequence-runner.test.ts b/src/lib/onboard/machine/sequence-runner.test.ts index ed8c3026baf..5d75ce185a4 100644 --- a/src/lib/onboard/machine/sequence-runner.test.ts +++ b/src/lib/onboard/machine/sequence-runner.test.ts @@ -4,7 +4,6 @@ import { describe, expect, it } from "vitest"; import { advanceTo, branchTo, completeOnboardMachine, retryTo } from "./result"; -import { OnboardRuntime, type OnboardRuntimeDeps } from "./runtime"; import { buildOnboardSequenceHandlers, DuplicateOnboardSequencePhaseError, @@ -13,8 +12,6 @@ import { } from "./sequence-runner"; import { type Session, - type SessionUpdates, - cloneSession, createSession, createTestRuntime, } from "../../../../test/helpers/onboard-machine-runtime-fixture"; diff --git a/test/helpers/onboard-machine-runtime-fixture.ts b/test/helpers/onboard-machine-runtime-fixture.ts index 58b88d01a95..78287c67be8 100644 --- a/test/helpers/onboard-machine-runtime-fixture.ts +++ b/test/helpers/onboard-machine-runtime-fixture.ts @@ -27,7 +27,8 @@ export type { Session, SessionUpdates } from "../../src/lib/state/onboard-sessio /** A deep session copy that survives independent mutation. */ export function cloneSession(session: Session): Session { - return normalizeSession(JSON.parse(JSON.stringify(session))) ?? session; + const copy = JSON.parse(JSON.stringify(session)) as Session; + return normalizeSession(copy) ?? copy; } /** Behavior options for createTestRuntime. */