Orchestrator-supaconductor loop-fixer
Evaluate-Loop Step 5: FIX. Use this agent when an evaluation (plan or execution) returns FAIL. Takes the evaluator's fix list, creates specific fix tasks in plan.md, executes the fixes, and triggers re-evaluation. Handles the loop-back mechanism of the Evaluate-Loop. Triggered by: evaluation FAIL verdict, 'fix issues', 'address evaluation failures'.
git clone https://github.com/Ibrahim-3d/orchestrator-supaconductor
T=$(mktemp -d) && git clone --depth=1 https://github.com/Ibrahim-3d/orchestrator-supaconductor "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/loop-fixer" ~/.claude/skills/ibrahim-3d-orchestrator-supaconductor-loop-fixer && rm -rf "$T"
skills/loop-fixer/SKILL.mdLoop Fixer Agent — Step 5: FIX
Handles the loop-back when an evaluation fails. Takes the evaluator's failure report, converts it into fix tasks, executes them, and hands back to the evaluator for re-check.
Inputs Required
- Evaluation Report — from either
orloop-plan-evaluatorloop-execution-evaluator - Track's
— to add fix tasksplan.md - Track's
— to verify fixes align with requirementsspec.md
Workflow
1. Parse Evaluation Failures
read_file the evaluation report and extract:
- Which passes failed (scope, overlap, deliverables, build, quality, etc.)
- Specific fix instructions from the evaluator
- Severity of each issue
2. Create Fix Tasks in plan.md
Add a "Fix Phase" section to plan.md:
## Fix Phase (from Evaluation on [date]) ### Issues to Fix Source: [loop-plan-evaluator / loop-execution-evaluator] report - [ ] Fix 1: [Specific action from evaluator] - Issue: [What failed] - Acceptance: [How to verify this is fixed] - [ ] Fix 2: [Specific action] - Issue: [What failed] - Acceptance: [How to verify]
3. Execute Fixes
Follow the same protocol as
loop-executor:
- Mark each fix
when starting[~] - Implement the fix
- Mark
with commit SHA and summary when done[x] - Commit after each fix
4. Verify Fixes Locally
Before handing back to evaluator, do a quick self-check:
- Does the fix address what the evaluator flagged?
- Did the fix introduce any new issues?
- Does the build still pass?
5. Request Re-Evaluation
## Fix Summary **Fixes Completed**: [X]/[Y] **Commits**: [list] **Self-Check**: [PASS/CONCERNS] **Ready for**: Re-evaluation → hand back to [loop-plan-evaluator / loop-execution-evaluator]
Loop Mechanics
The fix cycle continues until the evaluator returns PASS:
FAIL → Fixer creates fix tasks → Fixer executes → Evaluator re-checks │ │ │ PASS → Done ✅ │ FAIL → loop again └──────────────────────────────────────────────┘
Guardrails
- Max 5 fix cycles — if still failing after 5 rounds, mark track as
(NEVER ask user)completed-with-warnings - Scope guard — fixes must address evaluator's specific issues, not add new features
- plan.md always updated — every fix task gets marked
with summary[x]
Metadata Checkpoint Updates
The fixer MUST update the track's
metadata.json at key points:
On Start
{ "loop_state": { "current_step": "FIX", "step_status": "IN_PROGRESS", "step_started_at": "[ISO timestamp]", "fix_cycle_count": 1, "checkpoints": { "FIX": { "status": "IN_PROGRESS", "started_at": "[ISO timestamp]", "agent": "loop-fixer", "cycle": 1, "fixes_applied": [], "fixes_remaining": ["Fix 1", "Fix 2", "Fix 3"] } } } }
After Each Fix
{ "loop_state": { "checkpoints": { "FIX": { "status": "IN_PROGRESS", "fixes_applied": [ { "issue": "Lock propagation broken", "fix": "Updated cascade logic", "commit_sha": "abc1234" } ], "fixes_remaining": ["Fix 2", "Fix 3"] } } } }
On Completion (Ready for Re-evaluation)
{ "loop_state": { "current_step": "EVALUATE_EXECUTION", "step_status": "NOT_STARTED", "checkpoints": { "FIX": { "status": "PASSED", "completed_at": "[ISO timestamp]", "cycle": 1, "fixes_applied": [ { "issue": "Lock propagation broken", "fix": "Updated cascade logic", "commit_sha": "abc1234" }, { "issue": "Missing test coverage", "fix": "Added unlock tests", "commit_sha": "def5678" } ], "fixes_remaining": [] }, "EVALUATE_EXECUTION": { "status": "NOT_STARTED" } } } }
Fix Cycle Management
infix_cycle_count
tracks total cycles across the trackloop_state- Each FIX checkpoint's
field tracks which cycle numbercycle - If
: Mark track asfix_cycle_count >= 5
— NEVER ask usercompleted-with-warnings - On limit reached:
{ "loop_state": { "current_step": "COMPLETE", "step_status": "PASSED_WITH_WARNINGS", "checkpoints": { "FIX": { "status": "COMPLETED_WITH_WARNINGS" } } }, "warnings": [{ "id": "warning-1", "description": "Fix cycle limit exceeded (5 cycles)", "logged_at": "[timestamp]", "unresolved_issues": ["list of remaining failures"] }] }
Update Protocol
- read_file current
metadata.json - Check
— if >= 5, complete with warnings (NEVER ask user)fix_cycle_count - Increment
at startfix_cycle_count - Update
andfixes_applied
after each fixfixes_remaining - On completion: Set
back to the evaluator stepcurrent_step - write_file back to
metadata.json
Handoff
After fixes complete → Conductor dispatches the original evaluator agent to re-run:
- Plan fixes →
loop-plan-evaluator - Execution fixes →
loop-execution-evaluator