A Fleet workflow gives the advisory a fixed pipeline that holds under pressure: draft from the incident corpus, an adversarial disclosure review, and a mandatory approval before publication — with the whole chain recorded.
genflows:
- name: security-advisory
steps:
- {name: draft, prompt: "Draft the customer-facing advisory: impact, affected versions, remediation. NO exploit detail, NO internal system names.", corpus: ["incidents/current/*.md", "docs/security/advisory-template.md"], kind: report, out: advisory.md}
- {name: disclosure-review, prompt: "Adversarially review: what does this disclose to an attacker? What does a customer still need to assess exposure? Flag both.", depends_on: [draft], kind: review, out: flags.md}
- {name: security-lead-ok, depends_on: [draft, disclosure-review], kind: approval, out: decision.md}
- {name: publish, depends_on: [security-lead-ok, draft], kind: publish, out: published.md}
The disclosure review is prompted in both directions — over-disclosure (helps attackers) and under-disclosure (fails customers) — and the run cannot reach publish without the security lead's recorded decision on the exact text.