chaos-study-report
Skill3 starsChanged 5 months agoMITView on GitHub
Render the evidence collected by an executed Chaos study as a self-contained HTML report for your review: steady-state verdict label, tests run, evidence tables, findings with severity labels, stated limitations, and remediation suggestions. Pure read of collected evidence — executes nothing.
In this repository11 other files it gives its agents.
- samples/aks-zone-down-demo/AGENTS.mdAGENTS.md
- chaos-impactSkill
- chaos-study-designSkill
- chaos-study-historySkill
- chaos-study-runSkill
- chaos-study-scopeSkill
- chaos-studySkill
- create-workspaceSkill
- run-scenarioSkill
- setup-scenarioSkill
- start-chaosSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
Limitations are part of the finding, not a footnote: Every report states what it could not establish.
- Distinctive: line 100
Every value is HTML-escaped on the way in.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
chaos-study-report — render collected evidence as a report
The run produced numbers. This skill lays them out for your review, and — just as importantly — states what they do not show.
Principles
Interpretation is pure. This skill reads only what the run wrote. It calls no Azure APIs, collects nothing new, and changes nothing in your environment. Given the same evidence it produces the same report, every time.
Absent evidence is reported as absent. A signal that was not collected
renders as not measured, never as 0. A zero is a measurement; a gap is not.
A pass requires proof the action landed. Movement is not proof. The plan freezes a mechanism probe with a numeric condition, and the report evaluates that exact condition against evidence taken from inside the action's own window. A signal that drifted the right way but never met the threshold does not prove anything, and a condition that cannot be parsed or was never measured is reported as unproven with its reason — never as a pass. Without that proof the verdict is Inconclusive, not "held". Claiming resilience against an action that never arrived is the most expensive mistake this suite can make, so it is designed out.
Severity follows recovery, not drama. A breach that never recovers is
critical. The identical breach that self-heals within the recovery window is
medium. What matters is whether the system came back.
Limitations are part of the finding, not a footnote. Every report states what it could not establish. A short injection window, a missing signal, an unproven mechanism — each gets an explicit code so a reader can judge how much weight the conclusion carries.
The report must survive being emailed. One file, no network. All CSS is
inline, there is no JavaScript, and no external images or fonts are referenced.
The renderer refuses to emit a report containing a <script> tag or an
unsubstituted token.
Usage
./scripts/Invoke-ChaosStudyReport.ps1 -StudyId latestOptions:
-NoSeal— render for review without sealing the study-OutputPath— write the HTML somewhere else as well
Writes findings.v2.json and report.html into the study directory, then seals
the study. Sealed studies are never overwritten: re-reporting a sealed study
renders beside it as report-<studyId>.html and exits 0.
Verdicts
| Verdict | Condition |
| Steady state breached | any critical finding — breached and did not recover |
| Degraded but recovered | breached during injection, recovered in the post window |
| Inconclusive | the action could not be proven to have landed |
| Steady state held | the action landed and the objective survived |
Report sections
- Masthead — verdict, workspace, scope, action, window
- What was asked — the steady-state predicate and hypothesis
- Tests run — the action as the service described it, windows, scenario run outcome
- Evidence — signal-by-signal, before / during / after
- Findings — prioritized, with severity and the evidence behind each
- Limitations — what this study could not establish
- Remediation — what to do about the findings
- Provenance — plan hash, command trail, api-versions
The "Tests run" section states that the action metadata was discovered live from
Microsoft.Chaos/locations/{region}/actions, so a reader can see the identity,
type and applicability came from the platform rather than from a local list.
Limitation codes
| Code | Meaning |
L1 | A single study is a sample, not a proof of general resilience |
L2 | One or more planned signals were not collected |
L3 | The action mechanism could not be proven to have landed |
L7 | Injection window ≤ 3 minutes — too short to separate resilience from luck |
L8 | The scenario run failed or was cancelled mid-run |
L9 | The plan hash did not match at run time |
L10 | Action metadata was not confirmed against the live action list |
Additional codes are carried forward from the readiness gates recorded at scope
time. L1 is always present — by design, because it is always true.
Notes
- The report is deterministic apart from its
generatedAttimestamp. - Every value is HTML-escaped on the way in; evidence is untrusted input.
- Findings carry a stable
findingKeysochaos-study-historycan tell a persisting problem from a new one across studies. - Never write this report by hand. The renderer is the only thing that can
produce one, because the report's authority comes entirely from what it reads:
the frozen plan, the run record, the evidence, the operation provenance and the
manifest hashes. A hand-written HTML file with the same headings is a claim
without a chain of custody — it cannot be sealed, it cannot be compared by
chaos-study-history, and its verdict means nothing. If the study is missing the artifacts this phase needs, the honest move is to finish or resume the study, not to compose the conclusion yourself. - Appendix content is likewise generated, not narrated: adapter provenance, effective legs, permission grants, residue and command trail all come from the store. If something is unknown it renders as unknown, never as an assumption.
See ../chaos-study/references/report-contract.md for the full contract the
renderer enforces.
Next
chaos-study-history -Action compareDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

