Files
OmniRoute/docs/diagrams/resilience-3layers.mmd
diegosouzapw 675668c430 docs(diagrams): create 8 canonical Mermaid sources + folder structure
Introduce docs/diagrams/ with the README index and 8 versioned Mermaid
sources that reflect the v3.8.0 platform:

- request-pipeline.mmd     /v1/chat/completions request pipeline
- auto-combo-9factor.mmd   Auto-Combo 9-factor scoring weights
- resilience-3layers.mmd   Provider breaker / cooldown / model lockout
- i18n-flow.mmd            Hash-based incremental doc translation
- mcp-tools-37.mmd         MCP Server tool inventory by category
- cloud-agent-flow.mmd     Codex / Devin / Jules task lifecycle
- authz-pipeline.mmd       3-class authz pipeline (PUBLIC/CLIENT_API/MANAGEMENT)
- db-schema-overview.mmd   Selected core SQLite relations

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 13:53:56 -03:00

22 lines
958 B
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
%% 3-layer resilience model
%% Reflects: src/shared/utils/circuitBreaker.ts, src/sse/services/auth.ts,
%% open-sse/services/accountFallback.ts
%% v3.8.0
flowchart TB
Req["Request"] --> L1{"Provider Circuit Breaker<br/>(scope: whole provider)"}
L1 -->|CLOSED| L2
L1 -->|OPEN| Block1["Skip provider<br/>(or 503 retry-after)"]
L1 -->|HALF_OPEN| Probe["Allow probe"]
Probe --> L2
L2{"Connection Cooldown<br/>(scope: one account/key)"} -->|available| L3
L2 -->|cooling down| Skip2["Skip this connection<br/>fall back to next"]
L3{"Model Lockout<br/>(scope: provider × conn × model)"} -->|allowed| Exec["Execute upstream"]
L3 -->|locked| Skip3["Fall back to next model"]
Exec -->|success| Clear["Clear cooldowns/lockouts"]
Exec -->|"408 / 500 / 502 / 503 / 504"| TripL1["Trip provider breaker"]
Exec -->|"401 / 403 (account)"| TripL2["Start connection cooldown"]
Exec -->|"429 quota (model)"| TripL3["Start model lockout"]