Files
claude-skills/.wiki/concepts/delegate-task-negative-trigger-fp.md
vitya 8b22d16c20 fix(delegate-task): literal negative-clause kills self-task FP (0.2.0->0.2.1)
«создать задачу себе» false-positive-fired delegate-task instead of
using-tasks (5/5 trials, found by delegate-task-test-trigger). Root cause:
the self-task phrase shares the stem «создать задачу» with the positive
trigger «создать задачу на агента», and the abstract "Does NOT apply when
doing the work yourself" carve-out cannot beat a literal stem-match under
the using-superpowers 1%-rule.

Fix: make the negative literal + routed. Description now lists
«создать задачу себе» / «task for myself» / «поставить себе задачу»
-> using-tasks; body "Ne primenyaetsya" gains a self-assigned bullet plus a
disambiguator («на агента»/«агенту»/«в проект X» = delegate; «себе» = own
board). PATCH bump 0.2.0 -> 0.2.1.

Verification (fresh-context subagents, simulated available-skills registry,
no hint): positives 5/5 -> delegate-task (no regression); negative
«создать задачу себе на завтра» 4/5 -> using-tasks (was 0/5). The 1
residual miss reasoned correctly but tripped on an eval-harness artifact
(prompt forced skill-name-before-reasoning), not description ambiguity.

Wiki: concept page delegate-task-negative-trigger-fp.md + index/log.
Board: [delegate-task-description-fp-fix] -> done.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 12:42:44 +03:00

3.1 KiB
Raw Blame History

title, type, updated
title type updated
delegate-task — literal negative triggers beat abstract carve-outs concept 2026-06-09

delegate-task — literal negative triggers beat abstract carve-outs

Symptom

delegate-task v0.2.0 false-positive-fired on «создать задачу себе» (create a task for myself) — a self-assigned task that should route to using-tasks, not to cross-agent delegation. The delegate-task-test-trigger run measured it at 5/5 trials consistently wrong (→ delegate-task).

Root cause

The positive trigger list contained «создать задачу на агента». A self-task phrase «создать задачу себе» shares the stem «создать задачу», so it literal-matched the positive trigger. The negative clause was abstract — "Does NOT apply when doing the work yourself" — and an abstract carve-out does not beat a literal stem-match under the using-superpowers 1%-rule. Clean-context subagents recognized the «себе» exception in their reasoning, yet still invoked delegate-task FIRST because the literal match outweighed the abstract exclusion.

Fix (v0.2.0 → v0.2.1, PATCH)

Make the negative literal and routed, so it competes head-on with the positive at the same surface level:

Does NOT apply to self-assigned tasks on your own board («создать задачу себе», «task for myself», «поставить себе задачу» → using-tasks), to work you do yourself, or to workshop-internal tasks.

Plus a body disambiguator in the "Не применяется" section: «на агента» / «агенту» / «в проект X» = делегирование; «себе» / «myself» = своя доска.

Verification

Re-ran the delegate-task-test-trigger methodology (fresh-context subagents, simulated available-skills registry with the new description + competitors using-tasks / using-projects-meta / setup-tasks / session-handoff, no hint about the expected answer):

  • Positives 5/5 — «создать задачу на агента», «поставить задачу агенту», «delegate task to the books project», «делегировать таску», «tasks_create для проекта X» → all delegate-task. No regression from the literal negative.
  • Negative «создать задачу себе на завтра» 4/5 → using-tasks (was 0/5 before the fix). The single residual miss reasoned correctly («себе» → using-tasks) but was tripped by an eval-harness artifact (the prompt forced a skill name on line 1 before reasoning), not by ambiguity in the description.

Reusable principle

When a skill's positive triggers contain a phrase whose stem also appears in a sibling skill's domain, an abstract "does NOT apply when…" clause is too weak. Put the exact colliding negative phrase in the description with an explicit route. Literal beats abstract under the 1%-rule. See also tdd-criteria-design for another "make the bright line literal, not a judgement call" pattern.