Error/Resilience Architecture Lens
Cognitive Mode: Diagnostic
Primary Question: "How are failures handled?"
Focus: Error Propagation, Recovery Mechanisms, Circuit Breakers, Validation Gates
When to Use
- Need to understand error handling architecture
- Documenting recovery and retry mechanisms
- Analyzing validation gates and circuit breakers
- User invokes
/arch-lens-error-resilience or /make-arch-diag error
Critical Constraints
NEVER:
- Modify any source code files
- Show happy path details (that's process flow lens)
- Ignore validation and fail-fast patterns
ALWAYS:
- Focus on FAILURE paths and recovery
- Show validation gates and their failure modes
- Document retry limits and circuit breakers
- Include exception hierarchy if present
- BEFORE creating any diagram, LOAD the
/mermaid skill using the Skill tool - this is MANDATORY
Analysis Workflow
Step 1: Launch Parallel Exploration Subagents
Spawn Explore subagents to investigate:
Exception Hierarchy
- Find custom exception classes
- Map inheritance relationships
- Look for: Exception, Error, raise, error classes, custom exceptions
Validation Gates
- Find validation/guard functions
- Identify fail-fast patterns
- Look for: validate_*, check_*, assert, guard, gate, precondition checks
Error Detection
- Find error detection points
- Identify how failures are recognized
- Look for: try/except, catch, on_error, handle_error, error handling
Recovery Mechanisms
- Find retry logic
- Identify fallback strategies
- Look for: retry, backoff, attempt, max_retries, retry policies
Circuit Breakers
- Find patterns that prevent infinite retries
- Identify failure thresholds
- Look for: circuit, breaker, max_failures, trip, failure thresholds
Error Routing
- Find how errors are propagated
- Identify error terminal states
- Look for: raise, return Error, error node, ERROR state
Step 2: Map Error Paths
For each major operation, document:
- Success Path: Normal completion
- Retry Path: Transient failure recovery
- Failure Path: Permanent failure handling
- Circuit Break Path: Threshold exceeded
CRITICAL - Analyze Read/Write Direction:
For EVERY error handling component:
- Error context capture: What data is READ to build error context?
- Error logging: Where are errors WRITTEN (logs, database, files)?
- State updates: What state is WRITTEN on failure?
- Recovery reads: What data is READ during recovery?
Distinguish:
- Error logs (write-only, never read back for logic)
- Failure context in database (may be read for retry/debugging)
- Debug artifacts (write-only diagnostics)
Step 3: Document Recovery Mechanisms
| Mechanism |
Trigger |
Action |
Limit |
| Retry |
Transient error |
Repeat operation |
max N |
| Fallback |
Specific error |
Alternative action |
- |
| Circuit Breaker |
Too many failures |
Stop retrying |
threshold |
Step 4: Create the Diagram
Use flowchart with:
Direction: TB for error flow hierarchy
Subgraphs:
- Execution (normal operation)
- Validation Gates (fail-fast checks)
- Error Handling (detection and routing)
- Recovery (retry, fallback)
- Terminals (success, failure states)
Node Styling:
handler class: Execution nodes
detector class: Validation gates, error detection
gap class: Failed/error state (yellow warning)
stateNode class: Decision points, circuit breaker
output class: Recovery actions
terminal class: Final states (success, error)
Connection Types:
- Solid: Normal flow
- Edge labels: Conditions, error types
- Show loops for retry mechanisms
Step 5: Write Output
Write the diagram to: temp/arch-lens-error-resilience/arch_diag_error_resilience_{YYYY-MM-DD_HHMMSS}.md
Output Template
# Error/Resilience Diagram: {System Name}
**Lens:** Error/Resilience (Diagnostic)
**Question:** How are failures handled?
**Date:** {YYYY-MM-DD}
**Scope:** {What was analyzed}
## Exception Hierarchy
BaseError
├── ValidationError
├── ProcessingError
│ └── RetryableError
└── FatalError
## Resilience Diagram
```mermaid
%%{init: {'flowchart': {'nodeSpacing': 40, 'rankSpacing': 50, 'curve': 'basis'}}}%%
flowchart TB
%% CLASS DEFINITIONS %%
classDef terminal fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;
classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;
classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;
classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;
classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;
subgraph Execution ["EXECUTION"]
EXEC["Execute<br/>━━━━━━━━━━<br/>Main operation"]
SUCCESS["SUCCESS<br/>━━━━━━━━━━<br/>Completed"]
RETRY["RETRY<br/>━━━━━━━━━━<br/>Transient failure"]
FAILED["FAILED<br/>━━━━━━━━━━<br/>Needs handling"]
end
subgraph Gates ["VALIDATION GATES (Fail-Fast)"]
GATE1["Validate Input<br/>━━━━━━━━━━<br/>Check required fields"]
GATE2["Validate State<br/>━━━━━━━━━━<br/>Check preconditions"]
end
subgraph Recovery ["RECOVERY MECHANISMS"]
direction TB
R_RETRY["Retry with Backoff<br/>━━━━━━━━━━<br/>Max N attempts"]
R_FALLBACK["Fallback Action<br/>━━━━━━━━━━<br/>Alternative path"]
R_CIRCUIT{"Circuit<br/>Breaker<br/>triggered?"}
end
subgraph Terminals ["TERMINAL STATES"]
T_COMPLETE([COMPLETE])
T_ERROR([ERROR])
T_CIRCUIT([CIRCUIT_BROKEN])
end
%% EXECUTION FLOW %%
EXEC --> SUCCESS
EXEC --> RETRY
EXEC --> FAILED
SUCCESS --> T_COMPLETE
RETRY -->|"back to queue"| EXEC
%% VALIDATION GATES %%
GATE1 -->|"missing"| T_ERROR
GATE1 -->|"valid"| GATE2
GATE2 -->|"invalid"| T_ERROR
GATE2 -->|"valid"| EXEC
%% RECOVERY %%
FAILED --> R_CIRCUIT
R_CIRCUIT -->|"not triggered"| R_RETRY
R_CIRCUIT -->|"triggered"| T_CIRCUIT
R_RETRY --> EXEC
R_RETRY -->|"exhausted"| R_FALLBACK
R_FALLBACK --> T_ERROR
%% CLASS ASSIGNMENTS %%
class EXEC,SUCCESS handler;
class RETRY,FAILED gap;
class GATE1,GATE2 detector;
class R_RETRY,R_FALLBACK output;
class R_CIRCUIT stateNode;
class T_COMPLETE,T_ERROR,T_CIRCUIT terminal;
Color Legend:
| Color |
Category |
Description |
| Orange |
Execution |
Normal operation and success |
| Yellow |
Failed |
Failure states requiring handling |
| Red |
Gates |
Validation gates (fail-fast) |
| Dark Teal |
Recovery |
Retry and fallback mechanisms |
| Teal |
Circuit |
Circuit breaker decisions |
| Dark Blue |
Terminal |
Final states |
Recovery Mechanisms
| Mechanism |
Trigger |
Action |
Max Attempts |
| {name} |
{condition} |
{what happens} |
{limit} |
Validation Gates
| Gate |
Checks |
Failure Mode |
| {name} |
{what validated} |
{error raised} |
---
## Pre-Diagram Checklist
Before creating the diagram, verify:
- [ ] LOADED `/mermaid` skill using the Skill tool
- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)
- [ ] Diagram will include a color legend table
---
## Related Skills
- `/make-arch-diag` - Parent skill for lens selection
- `/mermaid` - MUST BE LOADED before creating diagram
- `/arch-lens-process-flow` - For normal flow view
- `/arch-lens-concurrency` - For parallel failure handling
1---2name: arch-lens-error-resilience3description: Create Error/Resilience architecture diagram showing failure handling, recovery mechanisms, and circuit breakers. Diagnostic lens answering "How are failures handled?"4---56# Error/Resilience Architecture Lens78**Cognitive Mode:** Diagnostic9**Primary Question:** "How are failures handled?"10**Focus:** Error Propagation, Recovery Mechanisms, Circuit Breakers, Validation Gates1112## When to Use1314- Need to understand error handling architecture15- Documenting recovery and retry mechanisms16- Analyzing validation gates and circuit breakers17- User invokes `/arch-lens-error-resilience` or `/make-arch-diag error`1819## Critical Constraints2021**NEVER:**22- Modify any source code files23- Show happy path details (that's process flow lens)24- Ignore validation and fail-fast patterns2526**ALWAYS:**27- Focus on FAILURE paths and recovery28- Show validation gates and their failure modes29- Document retry limits and circuit breakers30- Include exception hierarchy if present31- BEFORE creating any diagram, LOAD the `/mermaid` skill using the Skill tool - this is MANDATORY3233---3435## Analysis Workflow3637### Step 1: Launch Parallel Exploration Subagents3839Spawn Explore subagents to investigate:4041**Exception Hierarchy**42- Find custom exception classes43- Map inheritance relationships44- Look for: Exception, Error, raise, error classes, custom exceptions4546**Validation Gates**47- Find validation/guard functions48- Identify fail-fast patterns49- Look for: validate_*, check_*, assert, guard, gate, precondition checks5051**Error Detection**52- Find error detection points53- Identify how failures are recognized54- Look for: try/except, catch, on_error, handle_error, error handling5556**Recovery Mechanisms**57- Find retry logic58- Identify fallback strategies59- Look for: retry, backoff, attempt, max_retries, retry policies6061**Circuit Breakers**62- Find patterns that prevent infinite retries63- Identify failure thresholds64- Look for: circuit, breaker, max_failures, trip, failure thresholds6566**Error Routing**67- Find how errors are propagated68- Identify error terminal states69- Look for: raise, return Error, error node, ERROR state7071### Step 2: Map Error Paths7273For each major operation, document:74- **Success Path**: Normal completion75- **Retry Path**: Transient failure recovery76- **Failure Path**: Permanent failure handling77- **Circuit Break Path**: Threshold exceeded7879**CRITICAL - Analyze Read/Write Direction:**80For EVERY error handling component:81- **Error context capture**: What data is READ to build error context?82- **Error logging**: Where are errors WRITTEN (logs, database, files)?83- **State updates**: What state is WRITTEN on failure?84- **Recovery reads**: What data is READ during recovery?8586Distinguish:87- Error logs (write-only, never read back for logic)88- Failure context in database (may be read for retry/debugging)89- Debug artifacts (write-only diagnostics)9091### Step 3: Document Recovery Mechanisms9293| Mechanism | Trigger | Action | Limit |94|-----------|---------|--------|-------|95| Retry | Transient error | Repeat operation | max N |96| Fallback | Specific error | Alternative action | - |97| Circuit Breaker | Too many failures | Stop retrying | threshold |9899### Step 4: Create the Diagram100101Use flowchart with:102103**Direction:** `TB` for error flow hierarchy104105**Subgraphs:**106- Execution (normal operation)107- Validation Gates (fail-fast checks)108- Error Handling (detection and routing)109- Recovery (retry, fallback)110- Terminals (success, failure states)111112**Node Styling:**113- `handler` class: Execution nodes114- `detector` class: Validation gates, error detection115- `gap` class: Failed/error state (yellow warning)116- `stateNode` class: Decision points, circuit breaker117- `output` class: Recovery actions118- `terminal` class: Final states (success, error)119120**Connection Types:**121- Solid: Normal flow122- Edge labels: Conditions, error types123- Show loops for retry mechanisms124125### Step 5: Write Output126127Write the diagram to: `temp/arch-lens-error-resilience/arch_diag_error_resilience_{YYYY-MM-DD_HHMMSS}.md`128129---130131## Output Template132133```markdown134# Error/Resilience Diagram: {System Name}135136**Lens:** Error/Resilience (Diagnostic)137**Question:** How are failures handled?138**Date:** {YYYY-MM-DD}139**Scope:** {What was analyzed}140141## Exception Hierarchy142143```144BaseError145├── ValidationError146├── ProcessingError147│ └── RetryableError148└── FatalError149```150151## Resilience Diagram152153```mermaid154%%{init: {'flowchart': {'nodeSpacing': 40, 'rankSpacing': 50, 'curve': 'basis'}}}%%155flowchart TB156 %% CLASS DEFINITIONS %%157 classDef terminal fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;158 classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;159 classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;160 classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;161 classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;162 classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;163 classDef gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;164165 subgraph Execution ["EXECUTION"]166 EXEC["Execute<br/>━━━━━━━━━━<br/>Main operation"]167 SUCCESS["SUCCESS<br/>━━━━━━━━━━<br/>Completed"]168 RETRY["RETRY<br/>━━━━━━━━━━<br/>Transient failure"]169 FAILED["FAILED<br/>━━━━━━━━━━<br/>Needs handling"]170 end171172 subgraph Gates ["VALIDATION GATES (Fail-Fast)"]173 GATE1["Validate Input<br/>━━━━━━━━━━<br/>Check required fields"]174 GATE2["Validate State<br/>━━━━━━━━━━<br/>Check preconditions"]175 end176177 subgraph Recovery ["RECOVERY MECHANISMS"]178 direction TB179 R_RETRY["Retry with Backoff<br/>━━━━━━━━━━<br/>Max N attempts"]180 R_FALLBACK["Fallback Action<br/>━━━━━━━━━━<br/>Alternative path"]181 R_CIRCUIT{"Circuit<br/>Breaker<br/>triggered?"}182 end183184 subgraph Terminals ["TERMINAL STATES"]185 T_COMPLETE([COMPLETE])186 T_ERROR([ERROR])187 T_CIRCUIT([CIRCUIT_BROKEN])188 end189190 %% EXECUTION FLOW %%191 EXEC --> SUCCESS192 EXEC --> RETRY193 EXEC --> FAILED194195 SUCCESS --> T_COMPLETE196 RETRY -->|"back to queue"| EXEC197198 %% VALIDATION GATES %%199 GATE1 -->|"missing"| T_ERROR200 GATE1 -->|"valid"| GATE2201 GATE2 -->|"invalid"| T_ERROR202 GATE2 -->|"valid"| EXEC203204 %% RECOVERY %%205 FAILED --> R_CIRCUIT206 R_CIRCUIT -->|"not triggered"| R_RETRY207 R_CIRCUIT -->|"triggered"| T_CIRCUIT208 R_RETRY --> EXEC209 R_RETRY -->|"exhausted"| R_FALLBACK210 R_FALLBACK --> T_ERROR211212 %% CLASS ASSIGNMENTS %%213 class EXEC,SUCCESS handler;214 class RETRY,FAILED gap;215 class GATE1,GATE2 detector;216 class R_RETRY,R_FALLBACK output;217 class R_CIRCUIT stateNode;218 class T_COMPLETE,T_ERROR,T_CIRCUIT terminal;219```220221**Color Legend:**222| Color | Category | Description |223|-------|----------|-------------|224| Orange | Execution | Normal operation and success |225| Yellow | Failed | Failure states requiring handling |226| Red | Gates | Validation gates (fail-fast) |227| Dark Teal | Recovery | Retry and fallback mechanisms |228| Teal | Circuit | Circuit breaker decisions |229| Dark Blue | Terminal | Final states |230231## Recovery Mechanisms232233| Mechanism | Trigger | Action | Max Attempts |234|-----------|---------|--------|--------------|235| {name} | {condition} | {what happens} | {limit} |236237## Validation Gates238239| Gate | Checks | Failure Mode |240|------|--------|--------------|241| {name} | {what validated} | {error raised} |242```243244---245246## Pre-Diagram Checklist247248Before creating the diagram, verify:249250- [ ] LOADED `/mermaid` skill using the Skill tool251- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)252- [ ] Diagram will include a color legend table253254---255256## Related Skills257258- `/make-arch-diag` - Parent skill for lens selection259- `/mermaid` - MUST BE LOADED before creating diagram260- `/arch-lens-process-flow` - For normal flow view261- `/arch-lens-concurrency` - For parallel failure handling