feat(FN-4168): complete Step 4 — hydrate stalled review signal

Fusion-Task-Id: FN-4168
Fusion-Task-Lineage: 781ffc66-cb1c-42b9-85e1-e5cbe0655863
This commit is contained in:
Fusion
2026-05-13 02:10:40 -07:00
committed by gsxdsm
parent 3cbedcffe8
commit 0391e10cc8
2 changed files with 47 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { mkdtemp, rm } from "node:fs/promises";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { TaskStore } from "../store.js";
describe("TaskStore stalledReview hydration", () => {
let rootDir: string;
let globalDir: string;
let store: TaskStore;
beforeEach(async () => {
rootDir = await mkdtemp(join(tmpdir(), "store-stalled-review-"));
globalDir = join(rootDir, ".fusion-global-settings");
store = new TaskStore(rootDir, globalDir, { inMemoryDb: true });
await store.init();
});
afterEach(async () => {
await store.close();
await rm(rootDir, { recursive: true, force: true });
});
it("populates stalledReview on slim listings when reenqueue churn threshold is met", async () => {
const task = await store.createTask({
description: "stalled review candidate",
column: "in-review",
});
for (let i = 0; i < 3; i += 1) {
await store.logEntry(task.id, "Auto-recovered: eligible in-review task re-enqueued for merge");
}
const slimTasks = await store.listTasks({ slim: true, column: "in-review" });
const hydrated = slimTasks.find((entry) => entry.id === task.id);
expect(hydrated?.stalledReview?.heuristic).toBe("reenqueue-churn");
expect(hydrated?.stalledReview?.matchCount).toBe(3);
});
});