/* Unit tests for isolation covering isolation schemas; runIsolationConformance; createConformanceResult. It also guards the documented public contract and regression-sensitive edge cases. Not a contract source of truth — the module under test owns the authoritative behavior; fixtures are minimal scaffolding only. RFC-1311: Compass header sweep — declares the isolation suite's contract for test-file scaffold coverage. */ import { describe, it, expect } from "vitest"; import { validateIsolationAdapter, validateBridgeRequest, attenuatedGrantSetV1Schema, isolationConformanceResultV1Schema, } from "../schemas.ts"; import type { IsolationAdapterV1, IsolationPropertyEvidenceV1, AttenuatedGrantSetV1, CapabilityBridgeRequestV1, IsolationConformanceResultV1, } from "../contracts.ts"; import { runIsolationConformance, createConformanceResult, type IsolationConformanceFixtureV1, } from "../conformance.ts"; import type { Sha256Digest } from "@warpgogol/werkstatt-shared/fingerprint"; const VALID_SHA = ("sha256:" + "a".repeat(64)) as Sha256Digest; const VALID_SHA_2 = ("sha256:" + "b".repeat(64)) as Sha256Digest; function makeFullProperties(): IsolationPropertyEvidenceV1 { return { schema: "werkstatt/isolation-property-evidence@1", properties: [ { kind: "containment", proven: true, evidenceHash: VALID_SHA, description: "containment proven", }, { kind: "clean-room-startup", proven: true, evidenceHash: VALID_SHA, description: "clean-room proven", }, { kind: "artifact-immutability", proven: true, evidenceHash: VALID_SHA, description: "immutability proven", }, { kind: "grant-enforcement", proven: true, evidenceHash: VALID_SHA, description: "grant proven", }, { kind: "egress-controls", proven: true, evidenceHash: VALID_SHA, description: "egress proven", }, { kind: "resource-limits", proven: true, evidenceHash: VALID_SHA, description: "limits proven", }, { kind: "secret-non-inheritance", proven: true, evidenceHash: VALID_SHA, description: "secret proven", }, { kind: "teardown", proven: true, evidenceHash: VALID_SHA, description: "teardown proven" }, { kind: "crash-recovery", proven: true, evidenceHash: VALID_SHA, description: "crash proven", }, { kind: "concurrent-workload-separation", proven: true, evidenceHash: VALID_SHA, description: "separation proven", }, { kind: "bridge-confusion-replay", proven: true, evidenceHash: VALID_SHA, description: "bridge proven", }, { kind: "host-compromise-assumptions", proven: true, evidenceHash: VALID_SHA, description: "host proven", }, ], unsupported: [], }; } function makeAdapter(overrides: Partial = {}): IsolationAdapterV1 { return { schema: "werkstatt/isolation-adapter@1", adapterId: "test-adapter", properties: makeFullProperties(), create: async () => ({ workloadId: "wl-1", invoke: async () => ({ schema: "werkstatt/capability-bridge-response@1", requestId: "req-1", status: "ok" as const, payload: new Uint8Array(), diagnostics: [], }), terminate: async () => ({ schema: "werkstatt/termination-report@1", workloadId: "wl-1", reason: "test", terminated: true, quarantined: false, diagnostics: [], }), }), ...overrides, }; } function makeGrantSet(): AttenuatedGrantSetV1 { return { schema: "werkstatt/attenuated-grant-set@1", grants: [{ scope: "read", resource: "test", maxDuration: 1000, maxOperations: 10 }], grantSetHash: VALID_SHA, }; } function makeBridgeRequest( overrides: Partial = {}, ): CapabilityBridgeRequestV1 { return { schema: "werkstatt/capability-bridge-request@1", requestId: "req-1", capability: "werkstatt/kernel" as `${string}/${string}`, grant: { scope: "read", resource: "test", maxDuration: 1000, maxOperations: 10 }, payload: new Uint8Array([1, 2, 3]), deadline: 5000, ...overrides, }; } function makeFixture( overrides: Partial = {}, ): IsolationConformanceFixtureV1 { return { fixtureId: "test-fixture", fixtureHash: VALID_SHA, adapter: makeAdapter(), cases: [], ...overrides, }; } describe("isolation schemas", () => { it("validates a correct adapter", () => { const result = validateIsolationAdapter(makeAdapter()); expect(result.status).toBe("pass"); expect(result.violations).toHaveLength(0); }); it("rejects adapter with unknown field", () => { const adapter = { ...makeAdapter(), extraField: "evil" } as unknown as IsolationAdapterV1; const result = validateIsolationAdapter(adapter); expect(result.status).toBe("fail"); expect(result.violations.length).toBeGreaterThan(0); }); it("rejects adapter with wrong schema", () => { const adapter = { ...makeAdapter(), schema: "werkstatt/wrong@1", } as unknown as IsolationAdapterV1; const result = validateIsolationAdapter(adapter); expect(result.status).toBe("fail"); }); it("rejects adapter with invalid adapterId (empty)", () => { const adapter = { ...makeAdapter(), adapterId: "" }; const result = validateIsolationAdapter(adapter); expect(result.status).toBe("fail"); }); it("validates a correct bridge request", () => { const result = validateBridgeRequest(makeBridgeRequest()); expect(result.status).toBe("pass"); expect(result.violations).toHaveLength(0); }); it("rejects bridge request with unknown field", () => { const req = { ...makeBridgeRequest(), ambientFs: "/etc/passwd", } as unknown as CapabilityBridgeRequestV1; const result = validateBridgeRequest(req); expect(result.status).toBe("fail"); }); it("rejects bridge request with invalid capability format", () => { const req = { ...makeBridgeRequest(), capability: "invalid-no-slash" as `${string}/${string}` }; const result = validateBridgeRequest(req); expect(result.status).toBe("fail"); }); it("rejects bridge request with zero deadline", () => { const req = { ...makeBridgeRequest(), deadline: 0 }; const result = validateBridgeRequest(req); expect(result.status).toBe("fail"); }); it("validates a correct attenuated grant set", () => { const result = attenuatedGrantSetV1Schema.safeParse(makeGrantSet()); expect(result.success).toBe(true); }); it("rejects attenuated grant set with unknown field", () => { const gs = { ...makeGrantSet(), extra: true } as unknown as AttenuatedGrantSetV1; const result = attenuatedGrantSetV1Schema.safeParse(gs); expect(result.success).toBe(false); }); it("rejects attenuated grant set with invalid hash", () => { const gs = { ...makeGrantSet(), grantSetHash: "not-a-hash" } as unknown as AttenuatedGrantSetV1; const result = attenuatedGrantSetV1Schema.safeParse(gs); expect(result.success).toBe(false); }); it("validates a correct conformance result", () => { const result: IsolationConformanceResultV1 = createConformanceResult( "test-adapter", VALID_SHA, VALID_SHA, VALID_SHA, [], [], "pass", ); const parsed = isolationConformanceResultV1Schema.safeParse(result); expect(parsed.success).toBe(true); }); it("rejects conformance result with testOnly: false", () => { const result = { ...createConformanceResult("test-adapter", VALID_SHA, VALID_SHA, VALID_SHA, [], [], "pass"), testOnly: false, } as unknown as IsolationConformanceResultV1; const parsed = isolationConformanceResultV1Schema.safeParse(result); expect(parsed.success).toBe(false); }); it("rejects conformance result with unknown field", () => { const result = { ...createConformanceResult("test-adapter", VALID_SHA, VALID_SHA, VALID_SHA, [], [], "pass"), admission: true, } as unknown as IsolationConformanceResultV1; const parsed = isolationConformanceResultV1Schema.safeParse(result); expect(parsed.success).toBe(false); }); }); describe("runIsolationConformance", () => { it("returns pass for a fully-proven adapter with all cases", () => { const fixture = makeFixture(); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.status).toBe("pass"); expect(result.violations).toHaveLength(0); expect(result.testOnly).toBe(true); expect(result.cases).toHaveLength(12); }); it("returns fail for vm-theatre case", () => { const fixture = makeFixture({ cases: ["vm-theatre"], }); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.status).toBe("fail"); expect(result.cases).toHaveLength(1); expect(result.cases[0]!.caseKind).toBe("vm-theatre"); expect(result.cases[0]!.passed).toBe(false); }); it("returns fail for worker-threads-theatre case", () => { const fixture = makeFixture({ cases: ["worker-threads-theatre"], }); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.status).toBe("fail"); expect(result.cases[0]!.caseKind).toBe("worker-threads-theatre"); expect(result.cases[0]!.passed).toBe(false); }); it("returns fail for subprocess-theatre case", () => { const fixture = makeFixture({ cases: ["subprocess-theatre"], }); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.status).toBe("fail"); expect(result.cases[0]!.caseKind).toBe("subprocess-theatre"); expect(result.cases[0]!.passed).toBe(false); }); it("returns incomplete when required property is missing", () => { const incompleteProperties: IsolationPropertyEvidenceV1 = { ...makeFullProperties(), properties: makeFullProperties().properties.filter((p) => p.kind !== "containment"), }; const fixture = makeFixture({ adapter: makeAdapter({ properties: incompleteProperties }), }); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.status).toBe("incomplete"); expect(result.violations.some((v) => v.includes("containment"))).toBe(true); }); it("returns incomplete when property is marked unsupported", () => { const unsupportedProperties: IsolationPropertyEvidenceV1 = { ...makeFullProperties(), properties: makeFullProperties().properties.filter((p) => p.kind !== "teardown"), unsupported: ["teardown"], }; const fixture = makeFixture({ adapter: makeAdapter({ properties: unsupportedProperties }), }); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.status).toBe("incomplete"); expect(result.violations.some((v) => v.includes("teardown"))).toBe(true); }); it("returns incomplete when property is unproven", () => { const unprovenProperties: IsolationPropertyEvidenceV1 = { ...makeFullProperties(), properties: makeFullProperties().properties.map((p) => p.kind === "egress-controls" ? { ...p, proven: false } : p, ), }; const fixture = makeFixture({ adapter: makeAdapter({ properties: unprovenProperties }), }); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.status).toBe("incomplete"); }); it("result always has testOnly: true", () => { const fixture = makeFixture(); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.testOnly).toBe(true); }); it("result contains no admission or promotion decision", () => { const fixture = makeFixture(); const result = runIsolationConformance(fixture, { now: () => 0 }); const keys = Object.keys(result); expect(keys).not.toContain("admission"); expect(keys).not.toContain("promotion"); expect(keys).not.toContain("certified"); expect(keys).not.toContain("authority"); }); it("runs specific cases when provided", () => { const fixture = makeFixture({ cases: ["filesystem-escape", "network-escape"], }); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.cases).toHaveLength(2); expect(result.cases[0]!.caseKind).toBe("filesystem-escape"); expect(result.cases[1]!.caseKind).toBe("network-escape"); expect(result.status).toBe("pass"); }); it("adapter with empty properties returns incomplete", () => { const emptyProperties: IsolationPropertyEvidenceV1 = { schema: "werkstatt/isolation-property-evidence@1", properties: [], unsupported: [], }; const fixture = makeFixture({ adapter: makeAdapter({ properties: emptyProperties }), }); const result = runIsolationConformance(fixture, { now: () => 0 }); expect(result.status).toBe("incomplete"); }); }); describe("createConformanceResult", () => { it("creates a result with correct schema", () => { const result = createConformanceResult( "adapter-1", VALID_SHA, VALID_SHA_2, VALID_SHA, [], [], "pass", ); expect(result.schema).toBe("werkstatt/isolation-conformance-result@1"); expect(result.adapterId).toBe("adapter-1"); expect(result.testOnly).toBe(true); }); it("creates a fail result with violations", () => { const result = createConformanceResult( "adapter-1", VALID_SHA, VALID_SHA_2, VALID_SHA, [], ["ISOLATION-REJECTED: vm-theatre"], "fail", ); expect(result.status).toBe("fail"); expect(result.violations).toHaveLength(1); }); });