---
name: ci-pipeline-manager
description: "Manage CI pipelines with error handling, recovery, and complex dependencies. Use when testing pipeline workflows. Not for simple linear scripts or unit testing individual tasks."
context: fork
---
# CI Pipeline Error Recovery Testing
Test TaskList error handling and recovery behavior with CI pipelines.
## Pipeline Architecture
digraph Pipeline {
rankdir=LR;
node [shape=box];
Tests [label="1. run-tests"];
Build [label="2. build"];
Deploy [label="3. deploy"];
Cleanup [label="4. cleanup-on-failure" style=filled fillcolor=lightgrey];
Tests -> Build [label="Pass"];
Build -> Deploy [label="Success"];
Tests -> Cleanup [label="Fail"];
{rank=same; Tests; Cleanup}
}
**Four-task pipeline with error handling:**
1. **run-tests** - Execute test suite
- Simulates test failure for validation
- Failure: blocks all downstream tasks
- Output: Test results (simulated failure)
2. **build** - Compile application
- BLOCKED by: run-tests
- Should NOT run if tests fail
- Output: Build artifact or "SKIPPED"
3. **deploy** - Deploy to staging
- BLOCKED by: build
- Should NOT run if build doesn't happen
- Output: Deployment status or "SKIPPED"
4. **cleanup-on-failure** - Cleanup resources
- BLOCKED by: run-tests (triggers when run-tests completes)
- MUST execute even when tests fail
- Output: Cleanup completion status
## Execution Workflow
**Execute autonomously:**
1. **Create TaskList** with all four tasks
2. **Set up blocking dependencies:**
- build blocked_by: ["run-tests"]
- deploy blocked_by: ["build"]
- cleanup-on-failure blocked_by: ["run-tests"]
3. **Simulate test failure** in run-tests task
4. **Verify behavior:**
- build: blocked by failed run-tests → SKIPPED
- deploy: build never ran → SKIPPED
- cleanup-on-failure: MUST execute despite failure
5. **Report task states** and pipeline status
**Recognition test:** Cleanup-on-failure should always execute, even when run-tests fails.
## Expected Output
```
CI Pipeline: RUNNING
[task-id] run-tests: IN_PROGRESS -> FAILED
[task-id] build: BLOCKED -> SKIPPED (dependency failed)
[task-id] deploy: BLOCKED -> SKIPPED (dependency never ran)
[task-id] cleanup-on-failure: BLOCKED -> IN_PROGRESS -> COMPLETE
Pipeline Status: FAILED (with proper cleanup)
Tasks Executed: 2/4 (run-tests, cleanup-on-failure)
Tasks Blocked: 2/4 (build, deploy)
Error Handling: PASS
Cleanup: PASS
```
## Validation Criteria
- Failed task blocked dependents
- Cleanup executed despite failure
**Binary check:** "Proper error handling?" → Both criteria must pass.
---
MANDATORY: Verify cleanup-on-failure always executes despite run-tests failure
MANDATORY: Ensure build and deploy are properly blocked by failed upstream tasks
MANDATORY: Report task states accurately (BLOCKED, SKIPPED, IN_PROGRESS, COMPLETE)
No exceptions. CI pipeline error handling must be deterministic.
---
## Genetic Code
This component carries essential Seed System principles for context: fork isolation:
MANDATORY: All components MUST be self-contained (zero .claude/rules dependency)
MANDATORY: Achieve 80-95% autonomy (0-5 AskUserQuestion rounds per session)
MANDATORY: Description MUST use What-When-Not format in third person
MANDATORY: No component references another component by name in description
MANDATORY: Progressive disclosure - references/ for detailed content
MANDATORY: Use XML for control (mission_control, critical_constraint), Markdown for data
No exceptions. Portability invariant must be maintained.
**Delta Standard**: Good Component = Expert Knowledge − What Claude Already Knows
**Recognition Questions**:
- "Would Claude know this without being told?" → Delete (zero delta)
- "Can this work standalone?" → Fix if no (non-self-sufficient)
- "Did I read the actual file, or just see it in grep?" → Verify before claiming
---