✓ Human-authored analysis; AI used for formatting and proofreading.
Cloud failures come from systems that are good enough until they aren't.
The IAM role was good enough for 18 months. Then someone discovered the trust chain it created. The S3 bucket policy was good enough until the VPC endpoint was removed and the condition clause failed silently. The security tooling was good enough. It detected 95% of individual misconfigurations. The 5% it missed were the compound paths where breaches happened.
Good enough is the most dangerous state a safety system can be in. Good enough: functioning well enough that nobody prioritizes replacing it, while silently accumulating the conditions for catastrophic failure.
In cloud systems, good enough safety is indistinguishable from failure that is just delayed. The delay makes it invisible. The failure makes it catastrophic.
The convergence pattern
Every product category goes through the same cycle. Many good enough tools → structural pressure → convergence into one integrated solution:
| Domain | Good enough era | Convergent era |
|---|---|---|
| Mobile phones (1990s) | Phone + MP3 player + GPS unit + wallet + pager + camera. Each "good enough" at its job. | Smartphone subsumes all of them. Not by being better at any one — by being the integrated solution. |
| Browser plugins (2000s) | Flash + RealPlayer + ActiveX + Java applets. Each solving one media problem. | Native browser (HTML5/JS). The plugins disappeared not because they stopped working — because the integrated solution made them unnecessary. |
| Build automation | Make + autoconf + custom shell scripts. Each solving one piece of the build. | Integrated CI/CD pipelines (GitHub Actions, GitLab CI). The scripts didn't break — they became unnecessary. |
| Configuration management | SSH + custom scripts + tribal knowledge. Each "good enough" for its scope. | IaC + GitOps. The scripts were still correct — but the integrated approach was structurally superior. |
| Cloud security (today) | CSPM + SIEM + WAF + IaC scanners + OPA + dashboards. Each "good enough." | (Convergence pending) |
The pattern is the same every time. The good enough tools work. They work at the wrong level. The convergent solution subsumes them by solving the higher-order job.
The smartphone didn't have a better camera than a dedicated camera. It solved "capture and share a moment" better than camera + USB cable + computer + email. The job was higher-order than any individual tool addressed.
The most dangerous state
For most product categories, good enough is fine. A good enough MP3 player plays music adequately. The worst case: slightly worse audio quality.
For safety systems, good enough is structurally dangerous:
Non-safety system:
"Good enough" → acceptable → stays acceptable → no problem
Safety system:
"Good enough" → acceptable today → margin tested over years
→ margin fails at an unpredictable moment → catastrophic
This is the temporal version of Lamport's safety/liveness distinction. A safety property must hold at ALL TIMES. A good enough safety margin will be tested by every possible configuration, composition and interaction continuously, for years. The margin that was good enough for the first 10,000 configurations meets configuration #10,001 and fails.
The three outages of Cloudflare, CrowdStrike, AWS are each a good enough margin that failed:
- Cloudflare's feature-file validation was "good enough" until a file exceeded the size the proxy could handle
- CrowdStrike's schema checking was "good enough" until a file had 20 fields instead of 21
- AWS's plan versioning was "good enough" until a race condition applied a stale plan
Each system worked correctly for years. The transition from good enough to catastrophic was instant.
The job customers want
The cloud security industry has been selling MEANS:
"We scan!" → a means, not a job
"We alert!" → a means, not a job
"We block!" → a means, not a job
"We visualize attack paths!" → a means, not a job
"We auto-remediate!" → a means, not a job
The job customers want:
"Operate distributed systems safely, continuously, and without surprise."
No customer wakes up wanting more scans, alerts, or dashboards. They want the job done: the system stays safe, continuously, without requiring constant human attention.
The means-vs-job distinction separates pre-convergence tools from convergent-era solutions. Pre-convergence tools sell means ("we scan 47 resource types!"). Convergent solutions deliver the job ("the invariant holds against every snapshot, deterministically, before deployment").
Once a credible job-fit product appears, customers switch, but because the new tool solves the job they were hiring the old tools to do.
Perfection
Perfect means: achieving the safety function with zero unnecessary harm.
| Function | Perfect direction |
|---|---|
| Safety | Always enforced — not "mostly" or "usually" |
| Cost | Only when needed — not running continuously if per-commit is sufficient |
| Latency | Before damage — not after deployment, not after detection |
| Scope | Smallest possible — not "scan everything always" but "evaluate what's changing" |
| Human effort | Near zero — not "faster triage" but "no triage" |
| Recovery | Reversible — not "auto-fix production" but "block the merge before it's irreversible" |
Each row is a direction. The product moves toward each direction with every release. "Always enforced" is the limit. Currently, Stave enforces on every CI run, not on every API call. "Near zero human effort" is the limit. Currently, the operator selects a profile and reads an exit code. Each is closer to the perfect direction than the industry default, without claiming perfection.
The Innovator's Dilemma
Incumbent tools look at the convergent-era product and see inferiority:
Incumbent: "We manage 300+ resource types across 5 clouds with runtime monitoring,
auto-remediation, attack-path visualization, and AI-powered triage."
Convergent product: "We evaluate invariants against snapshots. No runtime monitoring.
No auto-remediation. No visualization. No AI."
The incumbent's feature list is longer. The convergent product looks inferior by every metric the incumbent measures.
This is the Innovator's Dilemma. The convergent solution doesn't compete on the incumbent's metrics. It solves a different job at a different level:
| Historical parallel | Why the "inferior" solution won |
|---|---|
| VOIP beat telecom | Solved "talk to people remotely" at a fraction of the cost. Worse call quality. Didn't matter. |
| Flash storage beat spinning disks | Solved "store data portably." Less capacity initially. Didn't matter. |
| GitOps beat manual ops | Solved "reproducible deploys" at the right abstraction. Less flexibility. Didn't matter. |
Each inferior solution won because it solved the higher-order job better than the superior incumbent. The incumbent's features were means. The convergent solution delivered the job.
The cloud-security version:
Incumbent job (means): "Scan, alert, triage, remediate"
Convergent job (outcome): "The invariant holds. Deterministically. Before deployment."
The convergent product doesn't scan (the operator's collectors do). Doesn't alert (exit codes replace alerts). Doesn't triage (the verdict is binary). Doesn't remediate (the CI pipeline blocks the merge). Each missing feature is a means the convergent product doesn't need. Because it solves the job differently.
Seven commitments for the convergent era
Each commitment looks suboptimal from the pre-convergence competitive frame. Each is optimal for the convergent-era job:
1. Self-checking yes; self-healing no
Pre-convergence view: "Why can't it auto-fix? Every competitor auto-remediates."
Convergent-era reason: Perfection advances in small reversible steps, not leaps. Auto-remediation is an irreversible mutation of production state. One wrong fix is worse than the misconfiguration it corrected. The convergent product evaluates and blocks. The operator's existing pipeline fixes.
2. Invariants, not rules
Pre-convergence view: "Rules are more flexible. Invariants are rigid."
Convergent-era reason: Invariants compose (Alpern-Schneider theorem). Rules accumulate. 3000+ invariants compose into a global safety guarantee by mathematical theorem. 3000+ rules accumulate into a maintenance nightmare. The convergent product scales through composition.
3. Transitions, not just snapshots
Pre-convergence view: "Just tell me what's wrong right now."
Convergent-era reason: The convergent system asks about CHANGE, not just state. "Does this proposed transition violate an invariant?" is a different question from "is this resource misconfigured?" The first prevents breaches. The second detects them after the fact.
4. Bounded mitigation, not full remediation
Pre-convergence view: "Why doesn't it fix the problem end-to-end?"
Convergent-era reason: Stay outside the runtime mutation path. A product that modifies production state has the same blast-radius risk as the misconfigurations it's supposed to prevent. The convergent product gates. The existing pipeline remediates through the existing change-management process.
5. No replacement of existing tools
Pre-convergence view: "We need a platform that replaces our fifteen tools."
Convergent-era reason: Additive adoption beats rip-and-replace. The convergent product adds one step to the existing pipeline (the CI gate). The fifteen existing tools keep running as the reactive safety net. Adoption friction kills convergent products; zero-friction adoption is the only path.
6. Open-source embedded catalog
Pre-convergence view: "Why give away the controls? That's the IP."
Convergent-era reason: The catalog becomes the convergence substrate like HTTP or the Kubernetes API. When every operator runs the same 3000+ controls, the catalog is the standard. The value accrues to the entity that defined the standard.
7. "One invariant closer" — not "we solve cloud security"
Pre-convergence view: "You need a bigger vision statement."
Convergent-era reason: Engineering claims beat marketing horizon-claims. "We evaluate 3000+ invariants deterministically" is testable. "We solve cloud security" is a hostage to fortune. The convergent product advances step-wise with each invariant added, chain defined, schema extended and the claim is always verifiable.
Four refusals
Each refusal looks like a weakness from the pre-convergence frame. Each is an advantage in the convergent era:
| Refusal | Why it's correct |
|---|---|
| Don't replace existing tools | Adoption friction kills convergent products. Add one CI step, not a platform migration. |
| Don't auto-remediate cloud state | Irreversible runtime mutation compromises the trust the product is built on. |
| Don't claim "we solve cloud security" | Maximalist claims are hostages to fortune. The claim must be verifiable at every moment. |
| Don't optimize for current customer feature requests | Current requests target the pre-convergence era. The convergent product builds for the job that doesn't have a name yet, until it's the only job that matters. |
The strategic dichotomy
"The only strategic choice is whether you lead that convergence or get displaced by it."
There is no third option. Once the structural conditions for convergence are present (the good enough tools have saturated, the failure cost has crossed the threshold, the higher-order job is nameable), convergence happens. The empirical record such as VOIP, Flash storage, GitOps, smartphones, HTML5 is decisive. Incumbent excellence at the pre-convergence job is no defense against displacement when the convergent era arrives.
The conditions are present now in cloud security:
"Good enough" tools have saturated → 15+ tools per organization, breach rate unchanged
Failure cost has crossed the threshold → Cloudflare, CrowdStrike, AWS are billion-dollar outages
Higher-order job is nameable → "The invariant holds, deterministically, before deployment"
Structural forcing function has arrived → Agentic era removes the human from the loop
All four conditions met. The convergence is coming. The question is which product leads it.
The good enough test for your own stack
Look at your cloud security toolstack. For each tool:
1. Is it solving a MEANS or a JOB?
We scan is a means. The system stays safe, continuously, without surprise is the job. If the tool solves a means, it's pre-convergence.
2. Is it "good enough" — or is it structurally sound?
Good enough means: it works for the configurations you've tested. Structurally sound means: it works for every configuration that could exist, by mathematical guarantee (safety composition). Good enough fails at configuration #10,001. Structurally sound doesn't fail.
3. Would the tool survive the removal of humans from the loop?
When agents deploy infrastructure and humans aren't triaging alerts at 3am: does the tool still work? If it requires a human to interpret its output, it's pre-convergence. The convergent-era tool produces machine-readable verdicts that agents and pipelines act on.
Good enough is the state your toolstack is in right now. It works. It detects things. It alerts people. It has worked for years.
It's indistinguishable from failure that is just delayed. The delay makes it invisible. The convergence makes it inevitable.
Built for the convergent era with invariants that compose (not rules that accumulate), transitions evaluated before deployment (not states scanned after), bounded mitigation (not runtime mutation), additive adoption (not rip-and-replace), open catalog as convergence substrate, step-wise verifiable claims. Stave is an open-source Risk Reasoner. The convergence is coming. This is the product built for after it arrives. Try it: bash examples/demo-ai-security/run.sh
Top comments (0)