import { describe, expect, it } from "vitest";
import { runTrace } from "./harness/world";

/**
 * Seeded fault-injection harness (§6 / ADR-011).
 *
 * Every run is replayable: if this fails, re-run with the printed seed.
 * Phase 2 exit: I1–I9 hold across 10 000 seeded runs. Override with
 * SYNC_HARNESS_RUNS for a shorter CI smoke (the default is the exit number).
 */
const RUNS = Number.parseInt(process.env.SYNC_HARNESS_RUNS ?? "10000", 10);

describe("seeded fault-injection harness", () => {
  it(`I1–I9 hold across ${RUNS} seeded runs`, async () => {
    const failures: number[] = [];
    for (let seed = 1; seed <= RUNS; seed++) {
      try {
        await runTrace({ seed });
      } catch (err) {
        failures.push(seed);
        throw new Error(
          `harness failed on seed ${seed} (replay with SYNC_HARNESS_SEED=${seed}): ${
            err instanceof Error ? err.message : String(err)
          }`,
        );
      }
    }
    expect(failures).toEqual([]);
  }, 180_000);
});
