n8n/packages/@n8n/instance-ai/evaluations/data/workflows
Arvin Ansari 30b4d7946c
feat(core): Add the activity-awareness skill and its A/B eval arms (no-changelog)
Three pieces so the surfaces built earlier can actually be judged.

The `instance-awareness` skill teaches the ladder rather than the tools: ask
about intent, look up state; read cheapest-first and stop at the first rung that
answers the question; treat an absence in the node-usage histogram as evidence
rather than as a gap. It also says where each surface stops — the log records
that a save happened and the node count changed, never which nodes, so anything
about contents is a workflow read.

Four eval cases on a new `activity` tier, which also carries `memory` so they
run under both. Two are authored from real reviewed traces rather than invented:
lang-tracer observation 3870 and its siblings, where the agent restarted work it
had just finished and re-elicited requirements it already had. Their A/B
discriminator is a probe-anchored context assertion — with the feed off nothing
carries the prior workflow into the turn, so it can only arrive via a tool call,
which is turn-end and not probe. That distinction is the measurement.

Every case is scored on behaviour, never on narration. A probe that asks the
agent to describe its own context manufactures its own evidence, which is the
restatement confound recorded on this branch. So the checks ask whether it
re-elicited a known requirement, whether it named the broken workflow, whether
it picked the house node — not whether it can recite the block.

The fourth case is the negative control, and the one that should stop a rollout:
loud recent activity plus an unrelated request. It deliberately does not assert
that the recent workflow is absent from context — it will be there, the feed put
it there. What is scored is whether the agent acted on it. Having a fact and
using it are different, and that difference is the whole point.

scripts/ab-activity-eval.sh drives both arms. They differ by a flag on the
instance under test, not by a runner argument, so each arm needs its own start —
the flag is read once when the relay registers. The script says what to read and
in what order, with context-ignored first.

Also opens the activity preamble up. It forbade narrating the feed but never
granted permission to act on it, which left the agent with a list of work it was
implicitly told to ignore. It now says this is work you can pick up, that a
vague opener usually means the most recent thing, and points at the skill.

Two honest limits recorded in the README. `node-usage` is not gated by the flag,
so the preference case measures a capability both arms have and a difference
there is noise. And that case has no historical precedent: a sweep of 16,262
traces found no conversation where a user stated a node preference their own
workflows already showed.
2026-08-26 16:32:51 +02:00
..
ai-gateway-prefers-covered-scraping-node.json fix(core): Prefer n8n credits covered nodes in Instance AI workflow builds (#35019) 2026-07-28 11:58:42 +00:00
ai-gateway-prefers-supported-service-node.json fix(core): Prefer n8n credits covered nodes in Instance AI workflow builds (#35019) 2026-07-28 11:58:42 +00:00
ai-gateway-respects-named-web-search-tool.json fix(core): Prefer n8n credits covered nodes in Instance AI workflow builds (#35019) 2026-07-28 11:58:42 +00:00
applies-the-house-naming-prefix-across-a-session-boundary.json test(core): Complete the standing-preference case family (no-changelog) 2026-08-21 13:33:41 +02:00
carries-a-standing-preference-across-a-session-boundary.json fix(core): Create the prior-session thread before seeding into it (no-changelog) 2026-08-20 21:45:47 +02:00
checks-the-record-before-accepting-a-false-premise.json test(core): Cover execution history as a context surface (no-changelog) 2026-08-24 14:54:25 +02:00
credential-setup-anthropic-browser.json feat: Add the credential-setup browser eval lane (no-changelog) (#35982) 2026-08-13 15:56:24 +00:00
diagnoses-the-last-run-instead-of-asking.json test(core): Cover execution history as a context surface (no-changelog) 2026-08-24 14:54:25 +02:00
discloses-deleted-credential-on-next-edit.json test(core): Add stale-fact eval cases for memory vs live instance state (no-changelog) 2026-08-20 11:52:30 +02:00
discloses-node-removed-outside-conversation.json test(core): Grade the stale-state claims at the moment they can be true (no-changelog) 2026-08-24 12:56:54 +02:00
discloses-renamed-data-table-column.json test(core): Add stale-fact eval cases for memory vs live instance state (no-changelog) 2026-08-20 11:52:30 +02:00
discloses-workflow-no-longer-active.json test(core): Grade the stale-state claims at the moment they can be true (no-changelog) 2026-08-24 12:56:54 +02:00
does-not-drag-recent-activity-into-an-unrelated-ask.json feat(core): Add the activity-awareness skill and its A/B eval arms (no-changelog) 2026-08-26 16:32:51 +02:00
finds-the-failure-pattern-across-several-runs.json test(core): Guard multi-run aggregation over execution history (no-changelog) 2026-08-24 15:16:04 +02:00
follows-the-house-chat-model-without-being-told.json feat(core): Add the activity-awareness skill and its A/B eval arms (no-changelog) 2026-08-26 16:32:51 +02:00
honors-missing-credential-field-correction.json 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
index.ts test(core): Extend Instance AI intent eval fixtures (no-changelog) (#33224) 2026-07-07 12:49:32 +00:00
matches-instance-conventions-when-adding-a-sibling-sync.json fix(core): Let a context claim say which moment it is about (no-changelog) 2026-08-21 14:19:07 +02:00
picks-up-the-workflow-from-a-previous-session.json feat(core): Add the activity-awareness skill and its A/B eval arms (no-changelog) 2026-08-26 16:32:51 +02:00
recalls-agreed-reminder-rules-from-immediately-prior-turn.json test(core): Add needle-probe eval cases for recall at known depths (no-changelog) 2026-08-20 11:52:17 +02:00
recalls-alert-channel-when-two-channels-were-agreed.json test(core): Add deterministic context claims to the recall probes (no-changelog) 2026-08-20 16:43:38 +02:00
recalls-paging-threshold-among-two-similar-percentages.json test(core): Add needle-probe eval cases for recall at known depths (no-changelog) 2026-08-20 11:52:17 +02:00
recalls-report-source-table-among-two-similar-tables.json test(core): Add deterministic context claims to the recall probes (no-changelog) 2026-08-20 16:43:38 +02:00
recalls-retry-and-region-rules-set-several-turns-earlier.json test(core): Add deterministic context claims to the recall probes (no-changelog) 2026-08-20 16:43:38 +02:00
recalls-write-step-rules-locked-in-at-thread-start.json fix(core): Let a context claim say which moment it is about (no-changelog) 2026-08-21 14:19:07 +02:00
routes-through-the-house-gateway-across-a-session-boundary.json test(core): Complete the standing-preference case family (no-changelog) 2026-08-21 13:33:41 +02:00
surfaces-the-failed-run-on-an-open-opener.json feat(core): Add the activity-awareness skill and its A/B eval arms (no-changelog) 2026-08-26 16:32:51 +02:00
tags-work-for-review-across-a-session-boundary.json test(core): Complete the standing-preference case family (no-changelog) 2026-08-21 13:33:41 +02:00