diff --git a/docs/companion/phase-9.html b/docs/companion/phase-9.html index e293399..fc13a55 100644 --- a/docs/companion/phase-9.html +++ b/docs/companion/phase-9.html @@ -1125,21 +1125,23 @@
The exit gate has a teeth condition: "Alert drill executed: every critical
- alert fired and answered from the playbook." Yet there is no drill step in the
- plugin — the workflow runs Step 0 through Step 6 and never mentions one —
- no command triggers it, and drill-record.md is listed optional.
- The single most valuable act of the phase, the one that separates a procedure from a wish, is
- required by the gate and produced by nothing. This is exactly the work that caught Harbor's
- silent-night bug.
The exit gate carried a teeth condition — "Alert drill executed: every
+ critical alert fired and answered from the playbook" — while the workflow ran Step 0
+ through Step 6 and never mentioned a drill, no command triggered one, and
+ drill-record.md was listed optional. The single most valuable act of the
+ phase was required by the gate and produced by nothing. The plugin now ships
+ Step 4: Alert Drill — placed after the playbook, so the drill tests
+ incident-response.md as much as it tests the alert — with a spec, a template,
+ and the artifact promoted to required. This is exactly the work that caught
+ Harbor's silent-night bug.
feedback-synthesizer assembles; the humans own the candor.sdlc/artifacts/09-monitoring/generate_phase_report.py · /visual-explainer.sdlc/reports/Why it's non-negotiable: routing that goes to the wrong channel, a playbook step that quietly assumes pod access, a threshold that doesn't actually trigger — all of it fails here, by appointment, at drill prices. An alert that has never fired is a wish.
-drill-record.md is on the plugin's required-artifact list for Phase 9 — the
- gate's integrity and completeness checks will block if it's missing or empty. But the phase
- definition has no drill step, no specification for the file, and no command that produces
- it. The registry also carries "alert drill executed" as an exit condition, but that one is
- rendered for the human who signs and never enforced. So: write the file by hand, with the columns
- above. It goes in the gate packet.
templates/phases/09-monitoring/drill-record.md, so you are filling in a shape rather
+ than inventing one. The registry also carries "alert drill executed" as an exit condition, put in
+ front of the human who signs. It goes in the gate packet.
It can confirm alert-definitions.md exists and has no placeholder text in it. It
cannot read a threshold and tell you whether anybody measured anything — a file full of
numbers pulled from thin air passes exactly as cleanly as one derived from real traffic. It
- cannot tell whether the drill happened or whether drill-record.md was written from
- memory the morning of the gate. It cannot see operations' names on the change review. And the
+ cannot tell whether the drill actually happened or whether drill-record.md was written
+ from memory the morning of the gate — Step 4 tells you to write it as you go, and nothing
+ can enforce that. It cannot see operations' names on the change review. And the
fatigue review, the what-healthy table and the outcome metric's first read have no check and no
sign-off question behind them at all. A green gate is not a finished phase.