From geas
Verify-Fix Loop — bounded fix-verify inner loop. Reads TaskContract for retry budget, produces EvidenceBundle per iteration, writes DecisionRecord on escalation. Max iterations from contract (default 3).
npx claudepluginhub choam2426/geasThis skill uses the workspace's default tool permissions.
After the evidence gate fails, this loop ensures bugs are actually fixed — not just "code is written."
Enforces repeated execute-verify-fix loops on task chunks until acceptance criteria pass or blocking issues identified. Use after partial task execution with remaining todos or unresolved verification findings.
Automates fixes for Evaluate-Loop failures: parses evaluator reports, creates tasks in plan.md, executes with git commits, verifies locally, and triggers re-evaluation up to 5 cycles.
Share bugs, ideas, or general feedback.
After the evidence gate fails, this loop ensures bugs are actually fixed — not just "code is written."
KEY PRINCIPLE: Completion = Evidence Gate says PASS, not "code is written."
Read the gate failure details:
.geas/missions/{mission_id}/tasks/{task-id}.json — for retry_budget and escalation_policy.geas/missions/{mission_id}/evidence/{task-id}/quality-specialist.json — for specific failuresExit the loop. Return to the pipeline — next step is Closure Packet assembly, then Critical Reviewer Challenge, then Final Verdict.
From the TaskContract:
retry_budget: maximum fix-verify iterations (default: 3)escalation_policy: what to do when budget exhaustedTrack current iteration count in .geas/state/run.json under current_task_id.
routing.primary_worker_type in the TaskContract)Generate a fix-specific ContextPacket:
blocking_dimensions from rubric evaluation — the fixer must know which quality dimensions failed and their current scores vs. thresholdsself_check.untested_paths overlap with failure areas, highlight the connectionSpawn the fixer with worktree isolation (implementation agents always use worktree):
Agent(agent: "{fixer}", isolation: "worktree", prompt: "Read your ContextPacket at .geas/missions/{mission_id}/packets/{task-id}/{fixer}-fix-{N}.md. Fix the specific failures listed in your packet. Write your results to .geas/missions/{mission_id}/evidence/{task-id}/{fixer}-fix-{N}.json")
After the fixer completes, merge the worktree branch before re-running the evidence gate. If merge conflicts arise, follow the orchestration_authority merge conflict protocol.
After the fixer completes:
/evidence-gate with the updated evidence and TaskContractFollow the TaskContract's escalation_policy:
"design-authority-review" (default)Spawn design-authority for architectural review:
The evidence gate has failed {retry_budget} times for task {task-id}.
Read the TaskContract at .geas/missions/{mission_id}/tasks/{task-id}.json
Read all evidence at .geas/missions/{mission_id}/evidence/{task-id}/
Analyze: Is there a fundamental design issue? Is the approach viable?
Write your analysis to .geas/missions/{mission_id}/evidence/{task-id}/design-authority-escalation.json
Then evaluate design_authority's assessment:
"product-authority-decision"Spawn product-authority with full context:
"pivot"Invoke /pivot-protocol with full context.
For any escalation, write a DecisionRecord to .geas/missions/{mission_id}/decisions/{dec-id}.json:
{
"version": "1.0",
"id": "dec-003",
"title": "Escalation: {task-title} failed {retry_budget} fix attempts",
"context": "Evidence gate failed repeatedly. Tier failures: ...",
"options": [...],
"decision": "...",
"reasoning": "...",
"trade_offs": "...",
"decided_by": "design-authority|product-authority",
"participants": ["quality-specialist", "implementer", "design-authority"],
"related_task_id": "{task-id}",
"created_at": "..."
}
Log the escalation event to .geas/ledger/events.jsonl.
Evidence Gate PASS?
YES -> Return to pipeline (Closure Packet -> Critical Reviewer -> Final Verdict)
NO -> Fix (implementer) -> Re-gate
PASS? -> Return to pipeline (Closure Packet -> Critical Reviewer -> Final Verdict)
NO -> Fix -> Re-gate (iteration 2)
PASS? -> Return to pipeline (Closure Packet -> Critical Reviewer -> Final Verdict)
NO -> ... (up to retry_budget)
Budget exhausted?
-> escalation_policy:
design-authority-review -> design_authority analysis -> fixable? -> one more try
product-authority-decision -> product_authority decides
pivot -> Pivot Protocol
-> Write DecisionRecord