From 8524f209abb072151ef0e96f0c23df30bdb5240a Mon Sep 17 00:00:00 2001 From: Dotta Date: Sat, 7 Nov 2026 22:04:28 -0600 Subject: [PATCH] test(evals): treat a bold-labelled line as its own owner group MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Run 42443802148 wrote '**Unassigned — 18 blocked:** RUN-18, …' directly below '**Morgan — 166 blocked:** …'. The grouping check joined each item's line with the nearest earlier label, so those unassigned items were judged to sit under Morgan. A line that opens with its own label is now its own group. Bumps oracleVersion to organize-open-work.v5. Co-Authored-By: Claude Opus 5.5 --- tests/runner-e2e/chat-catalog-descriptors.json | 2 +- .../chat-catalog-domains/internal-task-inventory.ts | 6 ++++-- tests/runner-e2e/chat-catalog-domains/internal.test.ts | 9 +++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/runner-e2e/chat-catalog-descriptors.json b/tests/runner-e2e/chat-catalog-descriptors.json index df9fa46016e..1502b1f8171 100644 --- a/tests/runner-e2e/chat-catalog-descriptors.json +++ b/tests/runner-e2e/chat-catalog-descriptors.json @@ -5882,7 +5882,7 @@ "chat-scenarios/tasks.yaml", "chat-catalog-domains/internal-task-inventory.ts" ], - "oracleVersion": "paperclip.chat-catalog.internal.organize-open-work.v4", + "oracleVersion": "paperclip.chat-catalog.internal.organize-open-work.v5", "coverageGaps": [], "expectedRunCount": 1, "turnTimeoutMs": 120000, diff --git a/tests/runner-e2e/chat-catalog-domains/internal-task-inventory.ts b/tests/runner-e2e/chat-catalog-domains/internal-task-inventory.ts index 1d2afcd8b19..6b3f079a7d8 100644 --- a/tests/runner-e2e/chat-catalog-domains/internal-task-inventory.ts +++ b/tests/runner-e2e/chat-catalog-domains/internal-task-inventory.ts @@ -52,7 +52,9 @@ const statesCount = (text: string, count: number) => new RegExp(`(? /^\s*(?:#{1,6}\s+|\*\*)/.test(line)) ?? ""; + const label = (candidate: string) => /^\s*(?:#{1,6}\s+|\*\*)/.test(candidate); + // A line that opens with its own group label ("**Unassigned — 18 blocked:** RUN-18, …") is its own group. + const prior = label(line) ? "" : text.slice(0, lineStart).split("\n").reverse().find(label) ?? ""; return `${line} ${prior}`.toLowerCase(); } export function gradeOpenInventory(value: unknown) { @@ -192,7 +194,7 @@ function openInventory(): ChatCatalogCase { if ((await ctx.allRuns()).length) throw new Error("Seeding the paused-owner inventory unexpectedly admitted work"); return { project: p, originalTasks, workerIds: [worker.id, secondWorker.id], ownerPauseReceipts, ownerLabels: { [worker.id]: "Morgan", [secondWorker.id]: "Riley", unassigned: "Unassigned" } }; }, gradeOpenInventory); - return { ...base, observe: observeOpenInventory, oracleVersion: "paperclip.chat-catalog.internal.organize-open-work.v4", + return { ...base, observe: observeOpenInventory, oracleVersion: "paperclip.chat-catalog.internal.organize-open-work.v5", sourceFiles: [...base.sourceFiles, "chat-catalog-domains/internal-task-inventory.ts"], attemptTimeoutMs: 600_000, setupPolicy: { readiness: "preserve-scenario", invariantCheckIds: ["inventory-owners-paused", "lead-ready", "inventory-settled"] }, async verifySetup(ctx, state) { diff --git a/tests/runner-e2e/chat-catalog-domains/internal.test.ts b/tests/runner-e2e/chat-catalog-domains/internal.test.ts index 99a2c6a4623..6ab8281a00b 100644 --- a/tests/runner-e2e/chat-catalog-domains/internal.test.ts +++ b/tests/runner-e2e/chat-catalog-domains/internal.test.ts @@ -646,6 +646,15 @@ describe("multi-page open inventory calibration", () => { o.reply = "501 open tasks.\n## Unassigned\n" + o.tasks.slice(0, 4).map(row => `[${row.title}](/ACORN/issues/${row.id})`).join(", ") + " … every 3rd task: 1, 4, 7"; expect(gradeInternal(o).passed).toBe(false); }); + it("treats a bold-labelled line as its own owner group, not the group above it", () => { + const o = valid("tasks.organize-open-work"); o.state.ownerLabels = { morgan: "Morgan", unassigned: "Unassigned" }; + const link = (row: { id: string; title?: string }) => `[${row.title}](/ACORN/issues/${row.id})`; + o.reply = "**Morgan — 0 blocked:** none\n**Unassigned — 2 blocked:** " + o.tasks.slice(0, 2).map(link).join(", ") + + "\n**Unassigned — todo:** " + o.tasks.slice(2).map(link).join(", "); + expect(gradeInternal(o).passed).toBe(true); + o.reply = "**Morgan — 2 blocked:** " + o.tasks.slice(0, 2).map(link).join(", ") + "\n- " + o.tasks.slice(2).map(link).join(", "); + expect(gradeInternal(o).passed).toBe(false); + }); it("rejects a blocked item placed after an ordinary item for the same owner", () => { const o = valid("tasks.organize-open-work"); o.reply = "## Unassigned\n" + [...o.tasks.slice(2), ...o.tasks.slice(0, 2)].map(row => `- [${row.title}](/ACORN/issues/${row.id})`).join("\n");