Files
projectbrain-Public/backend/test/operatingSystemServices.test.ts
T

79 lines
4.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { parseCommandIntent } from "../src/services/commandIntent.js";
import { detectStuckConditions, interpretConnectorHealth } from "../src/services/diagnostics.js";
import { buildPulse } from "../src/services/pulse.js";
import { deliveryValidationsAreGreen } from "../src/services/projectCompletion.js";
import { buildParallelGroups, rankReadyWork, type WorkGraphNodeView } from "../src/services/workGraph.js";
const graphNode = (patch: Partial<WorkGraphNodeView> = {}): WorkGraphNodeView => ({
id: "node-1", projectId: "project-1", stableKey: "node-1", source: "test", sourceId: "node-1", type: "feature", title: "Work", canonicalLifecycle: "ready", domainLifecycle: "pending", scope: "committed", priority: 50, risk: "normal", blockingStatus: "open", executionEligibility: "ready", attemptCount: 0, consecutiveFailureCount: 0, dependencies: [], dependents: [], completionEvidence: [], createdAt: "2026-09-12T10:00:00.000Z", updatedAt: "2026-09-12T10:00:00.000Z", ...patch,
});
describe("operating-system user-facing services", () => {
it("turns natural language into constrained policy instead of an execution bypass", () => {
expect(parseCommandIntent("Continue this project but don't deploy.")).toMatchObject({
objective: "continue",
policy: { deploy: "blocked", automaticRecovery: true },
allowedScope: ["required", "committed"],
});
expect(parseCommandIntent("Finish everything required for release.")).toMatchObject({ objective: "release", requestedCompletionState: "definition_of_done", policy: { deploy: "unchanged" } });
});
it("distinguishes functional connector failure from process health", () => {
expect(interpretConnectorHealth({ process: true, transport: true, authentication: true, api: true, functional_read: false })).toBe("degraded");
expect(interpretConnectorHealth({ process: true, transport: true, api: false })).toBe("unavailable");
expect(interpretConnectorHealth({ process: true, transport: true, authentication: true, authorization: true, api: true, functional_read: true, write_readiness: true })).toBe("healthy");
});
it("detects reclaimable stale work and keeps the repair explicit", () => {
const now = Date.parse("2026-09-12T12:00:00.000Z");
expect(detectStuckConditions({
now,
running: [{ id: "lease-1", leaseExpiresAt: "2026-09-12T11:00:00.000Z" }],
queued: [{ id: "queue-1", queuedAt: "2026-09-12T11:00:00.000Z", consumerPresent: false }],
})).toMatchObject([
{ kind: "expired_lease", repairable: true },
{ kind: "queue_without_consumer", repairable: true },
]);
});
it("summarizes meaningful pulse events instead of returning a raw event dump", () => {
const pulse = buildPulse([
{ at: "2026-09-12T11:55:00.000Z", kind: "work.completed", title: "Delivery merged", summary: "The delivery was merged." },
{ at: "2026-09-12T11:56:00.000Z", kind: "heartbeat", title: "heartbeat", summary: "technical noise", meaningful: false },
{ at: "2026-09-12T11:57:00.000Z", kind: "work.blocked", title: "Validation failed", summary: "Retrying automatically." },
], Date.parse("2026-09-12T12:00:00.000Z"));
expect(pulse.counts).toMatchObject({ meaningful: 2, completed: 1, blockers: 1 });
expect(pulse.nextLikelyAction).toContain("Retrying");
});
it("treats a released delivery as a meaningful result while keeping noise out", () => {
const pulse = buildPulse([
{ at: "2026-09-12T11:55:00.000Z", kind: "delivery.released", title: "Release completed", summary: "The release is live." },
{ at: "2026-09-12T11:56:00.000Z", kind: "work.claimed", title: "Claimed", summary: "technical lease", meaningful: false },
], Date.parse("2026-09-12T12:00:00.000Z"));
expect(pulse.counts).toMatchObject({ meaningful: 1, completed: 1, active: 0 });
});
it("does not invent an operating action for unsupported language", () => {
expect(parseCommandIntent("Tell me a joke")).toMatchObject({ objective: "unknown", confidence: 35 });
});
it("keeps Future work out of ready scheduling and separates conflicting groups", () => {
const ready = [
graphNode({ id: "a", stableKey: "a", metadata: { touchedPaths: ["src/shared/a.ts"] } }),
graphNode({ id: "b", stableKey: "b", metadata: { touchedPaths: ["src/shared/a.ts"] } }),
graphNode({ id: "c", stableKey: "c", scope: "future" }),
];
expect(rankReadyWork(ready).map((item) => item.id)).toEqual(["a", "b"]);
expect(buildParallelGroups(rankReadyWork(ready))).toHaveLength(2);
});
it("does not mark a delivery complete before its declared validations have run", () => {
expect(deliveryValidationsAreGreen(["pnpm test"], [])).toBe(false);
expect(deliveryValidationsAreGreen(["pnpm test"], [{ status: "passed" }])).toBe(true);
expect(deliveryValidationsAreGreen(["pnpm test"], [{ status: "failed" }])).toBe(false);
expect(deliveryValidationsAreGreen([], [])).toBe(true);
});
});