From 35e9d6886909a2c629f8bf341f8920b0c3641227 Mon Sep 17 00:00:00 2001 From: Dotta Date: Wed, 4 Nov 2026 17:28:45 -0600 Subject: [PATCH] fix(evals): retain modified execution ownership in timeline Co-Authored-By: Paperclip --- .../chat-catalog-domains/internal-timeline-narrative.test.ts | 4 ++-- .../chat-catalog-domains/internal-timeline-narrative.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.test.ts b/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.test.ts index 420458926c3..1620e0c2e37 100644 --- a/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.test.ts +++ b/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.test.ts @@ -41,9 +41,9 @@ it("does not turn a project prototype possessive into a worker", () => { it("starts fresh worker scope at a consecutive Markdown heading", () => { expect(grade(account.replace("**First attempt (Morgan)**\nMorgan built the page. ", "## Earlier work (Riley)\nSummary.\n## Initial build (Morgan)\nThe engineer built the page.\n\n"))).toBe(true); }); -it("retains unknown-person command ownership as a contrary actor", () => { +it.each(["run", "initial attempt", "saved check"])("retains unknown-person %s ownership as a contrary actor", execution => { expect(grade(account.replace("**First attempt (Morgan)**\nMorgan built the page. ", "") - .replace("command failed", "command failed on Avery's run"))).toBe(false); + .replace("command failed", `command failed on Avery's ${execution}`))).toBe(false); }); it("does not give a heading credit for another actor's command", () => { diff --git a/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.ts b/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.ts index e71fe1c2eb7..8c45095eb03 100644 --- a/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.ts +++ b/tests/runner-e2e/chat-catalog-domains/internal-timeline-narrative.ts @@ -17,7 +17,7 @@ export function truthfulTimelineAccount(input: { const withoutOwner = text.replace(new RegExp(`\\b${escape(owner)}\\b`, "gi"), ""); return [firstWorker, repairWorker].some(name => name !== owner && new RegExp(`\\b${escape(name)}['’]s\\b`, "i").test(withoutOwner)) || /\b(?:human|operator|person|user|board|CEO)\b/i.test(withoutOwner) - || [...withoutOwner.matchAll(/\b([A-Z][\p{L}'-]+)['’]s\s+(?:attempt|run|verification|check|test|command)\b/gu)].some(match => + || [...withoutOwner.matchAll(/\b([A-Z][\p{L}'-]+)['’]s\s+(?:[a-z][a-z0-9_-]*\s+){0,3}(?:attempt|run|verification|check|test|command)\b/gu)].some(match => !calendarWords.has(match[1]!.toLowerCase()) && !/^(?:today|tomorrow|yesterday)$/i.test(match[1]!)) || /\b(?:another|different|other)\s+(?:worker|agent|person|engineer|reviewer|operator)\b/i.test(withoutOwner) || /\b(?:run|ran|executed|performed)\s+by\s+[A-Z][a-z]+\b|\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)*\s+(?:ran|executed|performed)\b/.test(withoutOwner)