What happened
The adversarial-pipeline agent outputs a verdict but cannot call taskctl verdict to record it. Error message: "WORKFLOW_ERROR: Cannot complete review - taskctl MCP tool not available for recording verdict."
This causes the pipeline to stall because verdicts are not recorded, preventing the Pulse loop from transitioning tasks correctly.
Root Cause
The taskctl tool is being filtered out by the permission system in src/session/llm.ts:resolveTools():
adversarial-pipeline agent has permission: [] (empty array) in pulse-scheduler.ts:372
- Agent definition allows
taskctl: "allow" in agent.ts:309
PermissionNext.merge() at prompt.ts:818 merges agent + session permissions
PermissionNext.disabled() marks taskctl as disabled
resolveTools() deletes taskctl from the available tools list
The merge order is wrong - agent taskctl: "allow" should override session permission: [].
Expected behaviour
adversarial-pipeline should be able to call taskctl verdict to record verdicts
- Permission system should respect agent-level tool allow rules
- Verdicts should be recorded, allowing Pulse to transition tasks correctly
Steps to reproduce
- Run
taskctl start 381 (or any issue)
- Wait for developer to complete implementation
- Watch adversarial-pipeline run
- See error: "taskctl MCP tool not available for recording verdict"
- Pipeline stalls, no verdict recorded
Environment
Acceptance Criteria
Definition of Done
What happened
The
adversarial-pipelineagent outputs a verdict but cannot calltaskctl verdictto record it. Error message: "WORKFLOW_ERROR: Cannot complete review - taskctl MCP tool not available for recording verdict."This causes the pipeline to stall because verdicts are not recorded, preventing the Pulse loop from transitioning tasks correctly.
Root Cause
The
taskctltool is being filtered out by the permission system insrc/session/llm.ts:resolveTools():adversarial-pipelineagent haspermission: [](empty array) inpulse-scheduler.ts:372taskctl: "allow"inagent.ts:309PermissionNext.merge()atprompt.ts:818merges agent + session permissionsPermissionNext.disabled()markstaskctlas disabledresolveTools()deletestaskctlfrom the available tools listThe merge order is wrong - agent
taskctl: "allow"should override sessionpermission: [].Expected behaviour
adversarial-pipelineshould be able to calltaskctl verdictto record verdictsSteps to reproduce
taskctl start 381(or any issue)Environment
dev(after fix(taskctl): adversarial-developer feedback loop loses context between rounds, causing rewrite loops #384 merge)0.0.0-main-202604061028src/session/llm.ts,src/session/prompt.ts,src/tasks/pulse-scheduler.ts,src/agent/agent.tsAcceptance Criteria
adversarial-pipelinecan successfully calltaskctl verdictto record APPROVED/ISSUES_FOUND verdictstaskctl: "allow"overrides sessionpermission: []taskctltool is available to adversarial-pipelineDefinition of Done
PermissionNext.merge()orPermissionNext.disabled()