Chaos Engineering Platform  ·  View 06 of 21  ·  Structure

Layered Architecture

Nine layers, with governance and safety deliberately separated.

Editable source SVG draw.io All views
Experience chaosctl Console Game-day timeline CI gate Definition Definition repo Templates Validator Dry-run resolver Governance Authorisation Approvals Notification Chaos budgets Safety Radius calculator Radius reservation Lease issuer Kill switch Incident gate Orchestration Run state machine Scheduler Sequencer Window controller Data plane Injection agent Fault adapters Lease watchdog Out-of-band reverter Verification Signal collector Baseline compare Steady-state evaluator Verdict engine Evidence Run store Evidence bundles Findings tracker Coverage reporting Audit log Consumed Service catalogue Dependency graph SLO store Incident platform Identity provider policy check permission signed lease applied state breach stops renewal verdict Layered Architecture Application we own Interface / broker Data store Security / platform External / third party synchronous Governance and safety are separate layers: one decides whether you may, the other decides how far. v 1.0 · owner Reliability Architecture · date 2026-09

Decisions

  • Governance and safety are different layers. Governance answers "may this person do this at all"; safety answers "how far, and for how long". Collapsing them makes an approval look like a guarantee.
  • The data plane sits below orchestration and receives a lease, not an instruction. Orchestration decides sequence; the safety layer decides permission, and permission wins.
  • The consumed layer is drawn as a layer so it is obvious how much of this design is somebody else's data.

Deliberate omissions

  • Only six of about thirty inter-layer edges are drawn — the ones that carry the design. The rest are ordinary calls downward.
  • The definition repo's review and CI path is on view 17, not here.

Risks

  • Nine layers is close to the point where a reader stops seeing a shape. If a tenth is proposed, something else should merge.