Six domains, seven conditions each. For every one: the paved road that removes it, the guardrail that holds it, and the state it converges on. None of the forty-two is a policy failure — each persists because the compliant option is harder than the alternative.
The worked example, carried in full: identity is what every other domain depends on.
Why each condition persists, what removes it, and the number that proves it is gone.
| Condition today | Why it persists | Proof it is gone |
|---|---|---|
| Too many identitiesPhase 1–2 | Applications were onboarded with their own local account stores; nothing ever required federation. | Distinct identity stores; % of applications federated; orphaned local accounts. |
| Long-lived credentialsPhase 2–3 | Static keys are the only thing that works reliably in pipelines, because no broker exists. | Median credential lifetime; static keys over 90 days; secrets found in repositories. |
| Inconsistent MFAPhase 1–2 | MFA was applied per application, and legacy protocols bypass whatever was configured. | % phishing-resistant authentications; legacy auth attempts; applications outside the baseline. |
| Standing privilegesPhase 2–3 | Elevation is slow when it is needed, so temporary admin was granted and never revisited. | Standing privileged accounts; median elevation duration; break-glass reviews. |
| Manual provisioning and deprovisioningPhase 2–3 | No authoritative feed from the system of record: access is granted by ticket, removed from memory. | Termination-to-revocation time; dormant accounts; recertification rate. |
| Weak workload identityPhase 2–3 | Services use shared secrets because no attested workload identity exists to use instead. | % workloads on federated identity; shared service accounts; median token lifetime. |
| Limited access visibilityPhase 3–4 | Entitlements live inside each system, so answering who can reach what takes days. | % entitlements in the inventory; time to answer; over-permissive findings. |
Not one of these seven is solved by writing a stronger policy, and several have almost certainly had a policy written about them already. Each persists because the compliant option is harder than the non-compliant one — no broker, no elevation workflow, no attested workload identity, no inventory. That is precisely what the paved road layer exists to fix, which is why identity gets the first two roads in Phase 1 rather than the first two guardrails.
Where a condition has survived a policy, it is a supply problem. Build the road, then close the gate behind it.
Everyone knows the flat segment exists. It survives because closing it breaks traffic that has no other path.
Read the middle column as a work queue.
| Condition today | Why it persists | Proof it is gone |
|---|---|---|
| Flat internal networksPhase 1–3 | Segmentation was inherited rather than designed, and no module places a workload correctly. | Legacy segments remaining; % workloads in a defined segment; denied east-west attempts. |
| VPN as the access pathPhase 1–3 | The VPN works for everything, so nothing pushes an application onto a better path. | % applications behind ZTNA; concurrent VPN sessions; apps still needing full network access. |
| Uncontrolled egressPhase 2–3 | Open egress is the cloud default, and closing it breaks builds until a proxy path exists. | % workloads through the proxy; unauthorised egress attempts; destinations off the allow-list. |
| Firewall rules by ticketPhase 2–3 | Change outruns the review queue, so rules accumulate and nobody removes them. | % rules managed as code; rule age and unused rules; time to complete a change. |
| Unknown internet exposurePhase 1–2 | Exposure is created faster than it is inventoried, and findings arrive without an owner. | Exposed assets with an owner; exposure-to-detection time; unexpected exposures per month. |
| OT, clinical and lab estates unsegmentedPhase 3–4 | These estates carry devices that cannot be patched, so the network was left alone. | % estates inside an enclave; brokered versus direct flows; unmanaged devices per enclave. |
| Third-party site-to-site tunnelsPhase 3 | Each partner tunnel was built at speed and outlived the project that justified it. | Tunnels with an owner and expiry; partner sessions brokered; tunnels retired per quarter. |
The domain where the paved-road argument is easiest to win: the console was simply faster than the platform.
Note how many resolve at account creation rather than at deployment. That is where the leverage is.
| Condition today | Why it persists | Proof it is gone |
|---|---|---|
| Ungoverned accounts and subscriptionsPhase 1–2 | Teams needed environments faster than governance could supply them. | % accounts through vending; unmanaged accounts; time to a governed environment. |
| Click-built infrastructurePhase 2–3 | The console is the fastest route to something working, and no module fit the need. | % resources from approved modules; console writes in production; adoption per team. |
| Configuration drift goes unnoticedPhase 2–3 | State is compared only when something breaks or an audit asks. | Drift mean time to repair; resources diverged from intent; auto-reverted versus manual. |
| Inconsistent loggingPhase 1–2 | Logging is configured per project, at the end, on the team's own budget. | Log coverage against the inventory; accounts with gaps; attempts to disable logging. |
| Public exposure by defaultPhase 2–3 | Provider defaults favour reachability, and the demonstration became production. | Publicly reachable resources; policy denials per week; creation-to-detection time. |
| Unowned and untagged resourcesPhase 1–2 | Tags are a convention, and whoever created the resource has moved on. | % resources fully tagged; unowned spend; orphaned resources. |
| Inconsistent key managementPhase 2–3 | Encryption is decided per service, with no default pattern for custody or rotation. | % stores on approved key patterns; rotation compliance; resources on default keys. |
One root cause: security was applied to the artefact after it was built rather than designed into how it gets built.
The section that carries the most external weight in a regulated product estate.
| Condition today | Why it persists | Proof it is gone |
|---|---|---|
| Every team has its own pipelinePhase 1–2 | Pipelines grew with each team, and no shared one was ever worth migrating to. | % builds on golden pipelines; pipeline variants in use; time to first deploy. |
| Unknown third-party componentsPhase 1–2 | Dependency inventory was collected by hand for an audit and went stale immediately. | % releases with a current SBOM; time to answer an exposure question; unknown components. |
| Unsigned artefacts in productionPhase 2–3 | Signing needs key custody and a deploy-time check; neither existed. | % artefacts verified at deploy; failed verifications; unsigned base images. |
| Secrets in sourcePhase 1–2 | A secret in a file is the only thing that works the same on a laptop and in production. | Secrets per thousand commits; time to rotate a leaked secret; repositories with history. |
| Threat modelling done ad hocPhase 2–3 | Threat modelling needed a security person in the room, so it happened only on request. | % new services with a model; findings at design versus test; effort per service. |
| Vulnerability backlog without an SLAPhase 2–3 | Every scanner reports into one queue with no owner. | Mean time to remediate by severity; backlog age; findings with an owner. |
| No disclosure pathPhase 2–3 | Reports arrive wherever a researcher can reach, with no clock, owner or advisory route. | Report to acknowledgement and to advisory; reports via the published channel; advisories on time. |
Most policy written, least changed — because classification without a mechanism is a document.
Unusually honest middle column: several of these persist because the non-compliant option solves a real problem.
| Condition today | Why it persists | Proof it is gone |
|---|---|---|
| Unknown sensitive data locationsPhase 1–2 | The inventory was built from what teams declared, not from what exists. | % stores classified; shadow stores found per quarter; unclassified stores. |
| Classification exists on paper onlyPhase 2–3 | The scheme was published without a mechanism to apply it. | % stores whose controls match their class; open exceptions; misclassified stores. |
| Production copies in lower environmentsPhase 2–3 | Realistic test data is a real need, and copying production is what has always worked. | Non-production stores holding production data; % test data from the service; copies detected. |
| Keys managed inconsistentlyPhase 2–3 | Key decisions were made per service; rotation needs coordination nobody scheduled. | Rotation compliance; stores on required key types; keys past rotation age. |
| Over-permissive data accessPhase 2–3 | Broad access unblocked analytics, and there is no easy way to ask for less. | Over-permissive findings by age; % grants scoped to a role; recertification rate. |
| No retention or deletionPhase 3 | Deleting feels riskier than keeping, and nobody owns the cost of keeping. | % stores with enforced retention; data held past its period; deletions executed. |
| Residency handled per projectPhase 3–4 | Residency arrives as a contract clause late, and is solved once, by hand. | % regulated data in permitted regions; cross-border transfers; open exceptions. |
The youngest domain, and the only one where the gap is still opening faster than it closes.
Every condition here has an analogue in identity or AppSec. That is the argument for treating AI as a domain, not a novelty.
| Condition today | Why it persists | Proof it is gone |
|---|---|---|
| Shadow AI usePhase 1–2 | The tools are useful and one tab away. Blocking without a sanctioned path moves usage off-network. | % AI traffic through the gateway; direct provider calls blocked; sanctioned adoption. |
| No inventory of models and agentsPhase 1–2 | Models sit inside applications, so nothing in the delivery process asks about them. | Registered versus discovered; time to answer which systems use a model; blocked deployments. |
| Agents share human credentialsPhase 2–3 | Borrowing a token was the fastest way to make an agent work. | % agents with their own identity; actions on human credentials; revocation time. |
| Unbounded tool accessPhase 2–3 | Broad permissions granted during development are what ships. | Median permissions per agent; entitlements past expiry; approvals required versus automatic. |
| Sensitive data reaching context windowsPhase 2–3 | Indexes were built for usefulness first, with permissions resolved later. | Retrieval denials by classification; indexes with tenant isolation; sensitive data in prompt logs. |
| Release without evaluationPhase 2–3 | No agreed definition of good enough, so release rests on a demonstration. | % releases with evaluation evidence; regressions caught pre-release; red-team findings closed. |
| Agent actions not auditablePhase 3–4 | Logging was designed for requests, not for chains of reasoning and tool calls. | % actions with a replayable trace; time to reconstruct an incident; audit gaps. |