n8n/packages
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
..
@n8n feat(core): Add the activity-awareness skill and its A/B eval arms (no-changelog) 2026-08-26 16:32:51 +02:00
cli feat(core): Add the activity-awareness skill and its A/B eval arms (no-changelog) 2026-08-26 16:32:51 +02:00
core fix(core): Wrap a trigger's closeFunction in an expression isolate at creation time (#36638) 2026-08-20 08:03:10 +00:00
extensions/insights 🚀 Release 2.34.0 (#35487) 2026-08-04 07:14:55 +00:00
frontend feat(API): Add Git connections public API (no-changelog) (#36272) 2026-08-20 07:28:36 +00:00
modules refactor(editor): Extract instance-registry into a frontend module package (no-changelog) (#36325) 2026-08-18 12:00:24 +00:00
node-dev chore: Set up repository for TypeScript 7 migration (#33890) 2026-07-09 13:21:16 +03:00
nodes-base feat(API): Add Git connections public API (no-changelog) (#36272) 2026-08-20 07:28:36 +00:00
testing ci: Explain single-instance duplicate findings instead of counting them (#36566) 2026-08-20 06:54:29 +00:00
workflow fix(core): Only init the expression engine for commands that evaluate expressions (#36538) 2026-08-19 15:36:45 +00:00