n8n/packages/@n8n/instance-ai/evaluations/run
Arvin Ansari 449ea18406 fix(core): Let a context claim say which moment it is about (no-changelog)
Grading context at the moment the request arrived is right for asking whether a
fact survived from earlier: the agent restates facts as it works, so the end
state would let a request manufacture its own evidence. It is wrong for asking
whether the agent went and fetched something. Tool calls land on step two and
later while that snapshot is step one, so a retrieval claim graded there fails
every time regardless of whether retrieval worked — the anchor excludes the very
thing the claim is about.

Both claim kinds now carry an optional anchor, defaulting to the arrival moment,
so existing cases are unchanged. Claims are grouped by anchor and judged one
call per group, each with its own context block, rather than handing the judge
both and asking it to infer which moment a claim meant. Verdicts are returned in
the order the case wrote them.

The judge prompt no longer states a timing of its own; the block says which
moment it holds, in its opening section and in every heading, and the prompt
explains how to read an absence at each. Getting this wrong was silent, which is
the argument for naming it in the case rather than inferring it from wording.

Found by re-running the cross-workflow case, where one grader passed on "the
agent called workflows(action='get') on two workflow IDs" while the other failed
with "the raw message window contains no tool calls or results retrieving any
existing workflow's node details". Both were right. Its two retrieval claims are
anchored at turn end here, which also means its earlier classification flip from
context-ignored to retrieval-gap was an instrumentation artifact — and those two
point at opposite conclusions about where the bottleneck is.

Also drops the cutover-date assertion from the write-step probe. A date is
rewordable, the agent keeps it in prose while regenerating the ISO string, so
the literal measured phrasing rather than recall. The upsert key, which survives
verbatim, still carries one.

Four of the new tests fail when the anchor is ignored, confirmed by
reintroducing that.
2026-08-21 14:19:07 +02:00
..
aggregator.ts feat: Add the credential-setup browser eval lane (no-changelog) (#35982) 2026-08-13 15:56:24 +00:00
build-orchestrator.ts fix(core): Let a context claim say which moment it is about (no-changelog) 2026-08-21 14:19:07 +02:00
case-pipeline.ts fix(ai-builder): Keep model-provider outages out of eval builder scores (no-changelog) (#35293) 2026-08-04 10:52:11 +00:00
case-selection.ts test(core): Support credential seeding in MCP workflow evals (no-changelog) (#35782) 2026-08-10 19:56:03 +00:00
ci-metadata.ts refactor(ai-builder): Decompose the eval CLI into phase modules with typed seams (no-changelog) (#34691) 2026-07-22 16:25:44 +00:00
context-outcome.ts feat(core): Classify whether context was present, and whether it was used (no-changelog) 2026-08-20 15:36:10 +02:00
direct-driver.ts refactor(ai-builder): Split the eval harness runner into domain modules (no-changelog) (#34834) 2026-07-27 09:01:09 +00:00
eval-session.ts feat: Add the credential-setup browser eval lane (no-changelog) (#35982) 2026-08-13 15:56:24 +00:00
iterations.ts refactor(ai-builder): Decompose the eval CLI into phase modules with typed seams (no-changelog) (#34691) 2026-07-22 16:25:44 +00:00
lane-allocator.ts refactor(ai-builder): Decompose the eval CLI into phase modules with typed seams (no-changelog) (#34691) 2026-07-22 16:25:44 +00:00
lane-setup.ts test(core): Support credential seeding in MCP workflow evals (no-changelog) (#35782) 2026-08-10 19:56:03 +00:00
lane-users.ts test(core): Support credential seeding in MCP workflow evals (no-changelog) (#35782) 2026-08-10 19:56:03 +00:00
langsmith-driver.ts feat(ai-builder): Report per-case claude build cost for MCP eval builds (no-changelog) (#34777) 2026-07-23 18:42:09 +00:00
persist.ts feat(core): Classify whether context was present, and whether it was used (no-changelog) 2026-08-20 15:36:10 +02:00
reporters.ts feat(ai-builder): Collapse the eval case's three seed keys into one seed union (no-changelog) (#35292) 2026-08-03 14:37:06 +00:00
reshape.ts fix(ai-builder): Keep model-provider outages out of eval builder scores (no-changelog) (#35293) 2026-08-04 10:52:11 +00:00
rows.ts feat(ai-builder): Harden the eval harness — crash-recovery journal, parity fixes, extension points (no-changelog) (#34747) 2026-07-23 12:25:55 +00:00
tiers.ts ci(ai-builder): Gate the mcp-gate eval tier absolutely (no-changelog) (#35762) 2026-08-06 14:37:04 +00:00