Files
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.