Rl-Auto / apps /api /src /__tests__ /iteration-memory.test.ts
Lazywords's picture
Deploy RL Auto Docker Space
c4ae742
Raw
History Blame Contribute Delete
2.67 kB
import { describe, expect, it } from "vitest";
import {
buildIterationMemoryPrompt,
createIterationMemory,
optimizeIterationMemory,
} from "../queue/iteration-memory.js";
describe("iteration memory optimizer", () => {
it("accumulates repeated weak dimensions into a compact memory prompt", () => {
const first = optimizeIterationMemory(
createIterationMemory(),
{
total_score: 8,
max_score: 12,
verdict: "NEEDS_REVISION",
dimensions: {
task_realism: { score: 1, explanation: "The task reads like a procedural checklist." },
trajectory_task_alignment: { score: 0, explanation: "The task asks for an action missing from the trajectory." },
},
},
1,
"first feedback",
);
const second = optimizeIterationMemory(
first,
{
total_score: 9,
max_score: 12,
verdict: "NEEDS_REVISION",
dimensions: {
task_realism: { score: 2, explanation: "Now reads naturally." },
trajectory_task_alignment: { score: 0, explanation: "Still contains the unsupported action." },
},
},
2,
"second feedback",
);
expect(second.bestScore).toBe(9);
expect(second.resolvedDimensions).toContain("task_realism");
expect(second.activeFindings).toHaveLength(1);
expect(second.activeFindings[0]).toMatchObject({
dimension: "trajectory_task_alignment",
firstSeenIteration: 1,
lastSeenIteration: 2,
hits: 2,
});
const prompt = buildIterationMemoryPrompt(second);
expect(prompt).toContain("ITERATION MEMORY");
expect(prompt).toContain("trajectory_task_alignment");
expect(prompt).toContain("repeated 2x");
expect(prompt).toContain("RESOLVED DIMENSIONS: task_realism");
expect(prompt).toContain("second feedback");
});
it("removes active findings once the dimension is fixed", () => {
const first = optimizeIterationMemory(
createIterationMemory(),
{
total_score: 7,
dimensions: {
rubric_quality: { score: 0, explanation: "Rubric is not observable." },
},
},
1,
"needs observable rubric",
);
const fixed = optimizeIterationMemory(
first,
{
total_score: 11,
dimensions: {
rubric_quality: { score: 2, explanation: "Rubric is now observable." },
},
},
2,
"fixed",
);
expect(fixed.activeFindings).toHaveLength(0);
expect(fixed.resolvedDimensions).toEqual(["rubric_quality"]);
expect(buildIterationMemoryPrompt(fixed)).toContain("No active weak dimensions remain");
});
});