task-existence-gate Case 3 was a BLOCK branch guarded by
getActivePipeline(). It was already doubly unreachable before this PR —
0 running pipelines ever observed on disk, and the sole
registry.pipelines writer sat behind a Teams-yield gate that fired on
every one of 699 checks. #3466 then deleted that writer's only caller outright, making
the precondition structurally impossible, not just practically dead.
CLAUDE.md's "blocks them in active pipelines" claim was false either way.
| gate check | at HEAD (before this PR) | verdict |
|---|---|---|
| registry.pipelines writers | zero — registerPipeline had no production callers | can never populate |
| getActivePipeline() callers | task-existence-gate.ts only | always returns undefined |
| Case 3 (BLOCK) precondition | if (activePipeline) — never truthy | dead branch |
| ~/.claude/orchestration/*.json on disk | 0 running pipelines, ever | confirms it live too |
| CLAUDE.md:66 claim | "blocks them in active pipelines" | false claim |
Recommended option 1 (reword CLAUDE.md) folded into option 2 (delete Case 3
outright) once #3466 made registry.pipelines unpopulatable from any caller.
PipelineExecution type and the registry.pipelines field stay —
#3353 owns that call, not this issue.
task-existence-gate.ts −18 Case 3 (BLOCK) branch + getActivePipeline
import/usage + outputDeny import;
doc comments reworded to match shipped
behavior (advisory-only, never blocks)
task-integration.ts −16 registerPipeline · getActivePipeline
(zero production callers post-#3466)
CLAUDE.md −1 "blocks them in active pipelines" ->
"advisory nudge ... never blocking"
KEPT PipelineExecution type + registry.pipelines
field + cleanupOldTasks' pipeline-cleanup —
#3353 owns registry.pipelines, not this issue
Gate now has exactly two outcomes: task exists -> silent pass, no task
found -> advisory outputWithContext nudge. No blocking path remains.
verification 315 test files, 7,536 tests passed (2 pre-existing skips)
typecheck clean · root build clean
validate-counts PASSED (105 skills / 36 agents / 216 hooks —
unaffected, no hooks.json registration touched)
grep -rn "registerPipeline|getActivePipeline" dist/*.mjs -> 0 hits