test(gsd): add regression tests for wave 3 session fixes

Tests tri-state hasImplementationArtifacts return values and
AutoSession.consecutiveCompleteBootstraps per-session isolation
and reset() behavior.
This commit is contained in:
Jeremy 2026-04-07 12:46:14 -05:00
parent dc9899c9d6
commit 49080c90e2

View file

@ -0,0 +1,47 @@
// GSD State Machine — Wave 3 Session Regression Tests
// Validates tri-state hasImplementationArtifacts and AutoSession.consecutiveCompleteBootstraps.
import { describe, test } from "node:test";
import assert from "node:assert/strict";
import { hasImplementationArtifacts } from "../auto-recovery.js";
import { AutoSession } from "../auto/session.js";
// ── Fix 9: hasImplementationArtifacts returns tri-state ──
describe("hasImplementationArtifacts tri-state return", () => {
test("returns 'unknown' for non-git directory", () => {
const result = hasImplementationArtifacts("/tmp/not-a-git-repo-" + Date.now());
assert.strictEqual(result, "unknown");
});
test("return type is one of present/absent/unknown", () => {
const result = hasImplementationArtifacts(process.cwd());
assert.ok(
result === "present" || result === "absent" || result === "unknown",
`Expected present/absent/unknown, got: ${result}`,
);
});
});
// ── Fix 11: consecutiveCompleteBootstraps is per-session ──
describe("AutoSession.consecutiveCompleteBootstraps", () => {
test("initial value is 0", () => {
const s = new AutoSession();
assert.strictEqual(s.consecutiveCompleteBootstraps, 0);
});
test("reset() clears the counter", () => {
const s = new AutoSession();
s.consecutiveCompleteBootstraps = 5;
s.reset();
assert.strictEqual(s.consecutiveCompleteBootstraps, 0);
});
test("two sessions have independent counters", () => {
const s1 = new AutoSession();
const s2 = new AutoSession();
s1.consecutiveCompleteBootstraps = 3;
assert.strictEqual(s2.consecutiveCompleteBootstraps, 0);
});
});