Deep-Dive: SDD-B01 — OWASP Agentic AI Top 10: Offensive Expansion Diagram count: 5 Tool: Mermaid (primary). Each diagram validated in Mermaid Live Editor.
Type: Cluster map Purpose: The single orientation diagram. Shows the 10 ASI risks grouped by the five attack-surface boundaries, but annotated with the attacker's reading — the evasion each row produces. This is the offensive complement to B9's defense-cluster map. Reading the diagram: Five clusters, ten risks. Each risk's annotation names the evasion the offensive expansion exploits, not the control B9 built. The footer is the thesis: B9 reads these as controls; SDD-B01 reads them as attack procedures.
flowchart TB
subgraph INPUT["INPUT BOUNDARY — semantic, MEASURED residuals"]
ASI01["ASI01 GOAL HIJACKING\nevasion: drift via trusted\ntool output; bypasses taint gate"]
ASI02["ASI02 PROMPT LEAKAGE\nevasion: multi-turn rapport;\nparaphrased, canary-free disclosure"]
end
subgraph PERM["PERMISSION BOUNDARY — structural, class beneath vector"]
ASI03["ASI03 EXCESSIVE AGENCY\nevasion: over-scoped credential\nthat survived minimization"]
ASI10["ASI10 BROKEN ACCESS CONTROL\nevasion: inter-agent trust\nescalation; binding holds"]
end
subgraph STATE["STATE BOUNDARY — semantic + structural"]
ASI04["ASI04 MEMORY POISONING\nevasion: taint-laundering via\nlegitimate trusted write tool"]
ASI06["ASI06 CASCADING HALLUCINATION\nevasion: unverified-claim\npropagation; verifier misses it"]
end
subgraph TOOL["TOOL BOUNDARY — structural, class beneath vector"]
ASI05["ASI05 TOOL/SKILL ABUSE\nevasion: semantic path confusion\nin the selection layer"]
ASI08["ASI08 SUPPLY CHAIN\nevasion: signed-but-malicious;\nsignature verifies publisher not benignity"]
end
subgraph OUT["OUTPUT/RESOURCE BOUNDARY"]
ASI07["ASI07 INSECURE OUTPUT HANDLING\nevasion: output-as-input to a\ndownstream agent; no NL escape"]
ASI09["ASI09 RESOURCE EXHAUSTION\nevasion: under-threshold loop;\nper-call breaker never trips"]
end
THESIS["B9 reads these as CONTROLS (one test each).\nSDD-B01 reads them as ATTACK PROCEDURES (one evasion + chain each).\nThe gap between the two readings is the engagement."]
OUT --> THESIS
style INPUT fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style PERM fill:#14141f,stroke:rgba(240,168,104,0.5),color:#e4e4e8
style STATE fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style TOOL fill:#14141f,stroke:rgba(240,168,104,0.5),color:#e4e4e8
style OUT fill:#14141f,stroke:rgba(240,128,128,0.5),color:#e4e4e8
style ASI01 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style ASI02 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style ASI03 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style ASI10 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style ASI04 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style ASI06 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style ASI05 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style ASI08 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style ASI07 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style ASI09 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style THESIS fill:#08080c,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
Type: Two-track comparison with a gap Purpose: The load-bearing diagram of the deep-dive. Shows why a control that PASSes its B9 test in isolation does not survive an adversary. The test verifies the direct surface; the attacker arrives on the indirect surface the test never exercised. The gap between them is the residual. Reading the diagram: Top = the B9 test (taint gate verified on direct injection). Bottom = the offensive procedure (injection arrives on the trusted-tool-output channel the gate does not inspect). The annotation names the gap as the engagement's deliverable.
flowchart LR
subgraph TEST["B9 PER-ROW TEST — verifies the DIRECT surface"]
T1["Test input:\ndirect injection payload"]
T2["Control:\ntaint gate tags + blocks"]
T3["Result: PASS\n(direct vector closed)"]
T1 --> T2 --> T3
end
subgraph OFFENSE["SDD-B01 PROCEDURE — arrives on the INDIRECT surface"]
O1["Attacker input:\ninjection inside a\ntool output marked TRUSTED"]
O2["Control:\ntaint gate does not\ninspect trusted outputs"]
O3["Result: bypass\n(indirect class open)"]
O1 --> O2 --> O3
end
GAP["THE GAP = the residual.\nB9 closed the vector the test names.\nThe attacker arrives on the class beneath.\nThis gap is what a B12 engagement characterizes."]
TEST --> GAP
OFFENSE --> GAP
style TEST fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style OFFENSE fill:#14141f,stroke:rgba(240,128,128,0.5),color:#e4e4e8
style T1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style T2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style T3 fill:#08080c,stroke:rgba(130,224,170,0.4),color:#82e0aa
style O1 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style O2 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style O3 fill:#08080c,stroke:rgba(240,128,128,0.4),color:#f08080
style GAP fill:#08080c,stroke:#f0a868,stroke-width:1.5px,color:#f0a868
Type: Three parallel chain flows Purpose: The centerpiece offensive diagram. Shows the three recurring chains that turn individually-defensible row-findings into compound impact. Each link in each chain PASSes its B9 control; the chain is the finding. Reading the diagram: Three horizontal chains. Each node is an ASI row; each arrow is the step that passes the row's control but advances the compound. The right-hand annotation names each chain's impact class.
flowchart LR
subgraph C1["CHAIN 1 — the exfiltration chain"]
direction LR
C1A["ASI07\noutput-as-input"] --> C1B["ASI01\ngoal drift"]
C1B --> C1C["ASI05\ntool dispatched"]
C1C --> C1D["ASI03\nover-scoped cap exercised"]
end
subgraph C2["CHAIN 2 — persistence & propagation"]
direction LR
C2A["ASI02\ncapability disclosed"] --> C2B["ASI04\nmemory poisoned via trusted write"]
C2B --> C2C["ASI06\npoisoned entry propagates as unverified fact"]
end
subgraph C3["CHAIN 3 — supply chain to escalation"]
direction LR
C3A["ASI08\nsigned-but-malicious MCP"] --> C3B["ASI05\ndispatch via description collision"]
C3B --> C3C["ASI10\naction executes under orchestrator trust"]
end
IMPACT1["IMPACT:\ndata exfiltration /\nlateral movement"]
IMPACT2["IMPACT:\npersistent backdoor\nsurvives session restart"]
IMPACT3["IMPACT:\nprivileged action\nunder forged authority"]
C1D --> IMPACT1
C2C --> IMPACT2
C3C --> IMPACT3
NOTE["Every link PASSed its B9 control.\nThe COMPOUND is the finding —\ninvisible to any per-row test."]
IMPACT2 --> NOTE
style C1 fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style C2 fill:#14141f,stroke:rgba(240,168,104,0.5),color:#e4e4e8
style C3 fill:#14141f,stroke:rgba(240,128,128,0.5),color:#e4e4e8
style C1A fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style C1B fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style C1C fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style C1D fill:#08080c,stroke:rgba(94,234,212,0.4),color:#5eead4
style C2A fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style C2B fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style C2C fill:#08080c,stroke:rgba(240,168,104,0.4),color:#f0a868
style C3A fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style C3B fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style C3C fill:#08080c,stroke:rgba(240,128,128,0.4),color:#f08080
style IMPACT1 fill:#08080c,stroke:#f08080,stroke-width:1.5px,color:#f08080
style IMPACT2 fill:#08080c,stroke:#f08080,stroke-width:1.5px,color:#f08080
style IMPACT3 fill:#08080c,stroke:#f08080,stroke-width:1.5px,color:#f08080
style NOTE fill:#08080c,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
Type: Annotated column comparison Purpose: Resolves the misconception that the eight PASS/FAIL rows are fully closed. Shows that the two MEASURED rows are merely where the standard admits the residual — every row has one, and the offense team's opening is the residual the PASS/FAIL result cannot express. Reading the diagram: Left column = the two MEASURED rows (admitted residual). Right column = the eight PASS/FAIL rows, each with the residual the deterministic test closed off but the class beneath remains open. The footer is the principle.
flowchart TB
subgraph MEAS["2 MEASURED rows — the standard ADMITS the residual"]
M1["ASI01 — detector + model compliance\nhave a bypass rate"]
M2["ASI06 — hallucination detection\nhas a miss rate"]
end
subgraph PF["8 PASS/FAIL rows — closed at the VECTOR, open at the CLASS"]
P1["ASI02 — canary match closes verbatim leak;\nparaphrased multi-turn disclosure open"]
P2["ASI03 — enumeration closes extra tools;\nover-scoped credential open"]
P3["ASI04 — managed writes close direct path;\ntaint-laundering via trusted sink open"]
P4["ASI05 — normalization closes ../ ;\nselection-layer confusion open"]
P5["ASI07 — sanitizer closes HTML/shell;\noutput-as-input to agent open"]
P6["ASI08 — signature closes unsigned;\nsigned-but-malicious open"]
P7["ASI09 — breaker closes over-threshold;\nunder-threshold loop open"]
P8["ASI10 — binding closes forged principal;\ninter-agent trust assumption open"]
end
PRINCIPLE["Every row has a residual.\nThe 2 MEASURED rows are where the standard admits it.\nThe 8 PASS/FAIL rows are where it does not —\nand that silence is the offense team's first opening."]
MEAS --> PRINCIPLE
PF --> PRINCIPLE
style MEAS fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style PF fill:#14141f,stroke:rgba(240,168,104,0.6),color:#e4e4e8
style M1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style M2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style P1 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P2 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P3 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P4 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P5 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P6 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P7 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P8 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style PRINCIPLE fill:#08080c,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
Type: Two-phase pipeline Purpose: Shows how the two artifacts compose in an engagement. B9 verifies the controls are present and passing (per-row, isolated). SDD-B01 runs the offensive procedures against a system that PASSed B9 and finds the residuals the deterministic tests cannot express. The gap is the B12 deliverable. Reading the diagram: Left phase = B9 (builder, per-row test, scored report). Right phase = SDD-B01 (attacker, per-row procedure + cross-row chain, reproduced finding). The arrow between them is the load-bearing transition: a system that PASSed the left and FAILed the right is not a contradiction.
flowchart LR
subgraph B9["PHASE 1 — B9 (read as BUILDER)"]
B1["Per-row test\n(one risk, one control)"]
B2["Isolated execution\n(each row tested alone)"]
B3["Scored report\n8 PASS/FAIL + 2 MEASURED"]
B1 --> B2 --> B3
end
subgraph SDD["PHASE 2 — SDD-B01 (read as ATTACKER)"]
S1["Per-row offensive procedure\n(attack + evasion + chain)"]
S2["Chained execution\n(rows composed into compounds)"]
S3["Reproduced findings\nresiduals the test cannot express"]
S1 --> S2 --> S3
end
TRANSITION["THE TRANSITION:\na row that PASSed B9 and FAILed\nthe offensive expansion is NOT a contradiction —\nit is the definition of a residual the\ndeterministic test cannot express."]
B9 --> TRANSITION --> SDD
DELIVERABLE["B12 packages BOTH:\nthe scored report (B9) + the chains (SDD-B01).\nNeither alone is sufficient."]
SDD --> DELIVERABLE
style B9 fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style SDD fill:#14141f,stroke:rgba(240,128,128,0.5),color:#e4e4e8
style B1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style B2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style B3 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style S1 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style S2 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style S3 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style TRANSITION fill:#08080c,stroke:#f0a868,stroke-width:1.5px,color:#f0a868
style DELIVERABLE fill:#08080c,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
#14141f panel fill, #08080c deep background for nested nodes, #5eead4 teal accent for input/state surfaces and principle nodes, #f0a868 warn for the permission/tool surfaces and the gap/transitions, #f08080 danger for the output/resource surfaces and impact nodes. #e4e4e8 / #9494a0 for text.flowchart TB/LR, subgraph) supported in current Mermaid (v10.4+).# Diagrams — Deep-Dive SDD-B01: OWASP Agentic AI Top 10 — Offensive Expansion
**Deep-Dive**: SDD-B01 — OWASP Agentic AI Top 10: Offensive Expansion
**Diagram count**: 5
**Tool**: Mermaid (primary). Each diagram validated in [Mermaid Live Editor](https://mermaid.live).
---
## Diagram 1 — The 10 Risks as Offensive Surface (attacker view, 5 boundary clusters)
**Type**: Cluster map
**Purpose**: The single orientation diagram. Shows the 10 ASI risks grouped by the five attack-surface boundaries, but annotated with the *attacker's* reading — the evasion each row produces. This is the offensive complement to B9's defense-cluster map.
**Reading the diagram**: Five clusters, ten risks. Each risk's annotation names the evasion the offensive expansion exploits, not the control B9 built. The footer is the thesis: B9 reads these as controls; SDD-B01 reads them as attack procedures.
```mermaid
flowchart TB
subgraph INPUT["INPUT BOUNDARY — semantic, MEASURED residuals"]
ASI01["ASI01 GOAL HIJACKING\nevasion: drift via trusted\ntool output; bypasses taint gate"]
ASI02["ASI02 PROMPT LEAKAGE\nevasion: multi-turn rapport;\nparaphrased, canary-free disclosure"]
end
subgraph PERM["PERMISSION BOUNDARY — structural, class beneath vector"]
ASI03["ASI03 EXCESSIVE AGENCY\nevasion: over-scoped credential\nthat survived minimization"]
ASI10["ASI10 BROKEN ACCESS CONTROL\nevasion: inter-agent trust\nescalation; binding holds"]
end
subgraph STATE["STATE BOUNDARY — semantic + structural"]
ASI04["ASI04 MEMORY POISONING\nevasion: taint-laundering via\nlegitimate trusted write tool"]
ASI06["ASI06 CASCADING HALLUCINATION\nevasion: unverified-claim\npropagation; verifier misses it"]
end
subgraph TOOL["TOOL BOUNDARY — structural, class beneath vector"]
ASI05["ASI05 TOOL/SKILL ABUSE\nevasion: semantic path confusion\nin the selection layer"]
ASI08["ASI08 SUPPLY CHAIN\nevasion: signed-but-malicious;\nsignature verifies publisher not benignity"]
end
subgraph OUT["OUTPUT/RESOURCE BOUNDARY"]
ASI07["ASI07 INSECURE OUTPUT HANDLING\nevasion: output-as-input to a\ndownstream agent; no NL escape"]
ASI09["ASI09 RESOURCE EXHAUSTION\nevasion: under-threshold loop;\nper-call breaker never trips"]
end
THESIS["B9 reads these as CONTROLS (one test each).\nSDD-B01 reads them as ATTACK PROCEDURES (one evasion + chain each).\nThe gap between the two readings is the engagement."]
OUT --> THESIS
style INPUT fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style PERM fill:#14141f,stroke:rgba(240,168,104,0.5),color:#e4e4e8
style STATE fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style TOOL fill:#14141f,stroke:rgba(240,168,104,0.5),color:#e4e4e8
style OUT fill:#14141f,stroke:rgba(240,128,128,0.5),color:#e4e4e8
style ASI01 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style ASI02 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style ASI03 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style ASI10 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style ASI04 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style ASI06 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style ASI05 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style ASI08 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style ASI07 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style ASI09 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style THESIS fill:#08080c,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
```
---
## Diagram 2 — The Evasion Pattern (test-verified direct surface vs attacker-arrived indirect surface)
**Type**: Two-track comparison with a gap
**Purpose**: The load-bearing diagram of the deep-dive. Shows why a control that PASSes its B9 test in isolation does not survive an adversary. The test verifies the *direct* surface; the attacker arrives on the *indirect* surface the test never exercised. The gap between them is the residual.
**Reading the diagram**: Top = the B9 test (taint gate verified on direct injection). Bottom = the offensive procedure (injection arrives on the trusted-tool-output channel the gate does not inspect). The annotation names the gap as the engagement's deliverable.
```mermaid
flowchart LR
subgraph TEST["B9 PER-ROW TEST — verifies the DIRECT surface"]
T1["Test input:\ndirect injection payload"]
T2["Control:\ntaint gate tags + blocks"]
T3["Result: PASS\n(direct vector closed)"]
T1 --> T2 --> T3
end
subgraph OFFENSE["SDD-B01 PROCEDURE — arrives on the INDIRECT surface"]
O1["Attacker input:\ninjection inside a\ntool output marked TRUSTED"]
O2["Control:\ntaint gate does not\ninspect trusted outputs"]
O3["Result: bypass\n(indirect class open)"]
O1 --> O2 --> O3
end
GAP["THE GAP = the residual.\nB9 closed the vector the test names.\nThe attacker arrives on the class beneath.\nThis gap is what a B12 engagement characterizes."]
TEST --> GAP
OFFENSE --> GAP
style TEST fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style OFFENSE fill:#14141f,stroke:rgba(240,128,128,0.5),color:#e4e4e8
style T1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style T2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style T3 fill:#08080c,stroke:rgba(130,224,170,0.4),color:#82e0aa
style O1 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style O2 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style O3 fill:#08080c,stroke:rgba(240,128,128,0.4),color:#f08080
style GAP fill:#08080c,stroke:#f0a868,stroke-width:1.5px,color:#f0a868
```
---
## Diagram 3 — The Three Cross-Row Chains (the compound is the finding)
**Type**: Three parallel chain flows
**Purpose**: The centerpiece offensive diagram. Shows the three recurring chains that turn individually-defensible row-findings into compound impact. Each link in each chain PASSes its B9 control; the chain is the finding.
**Reading the diagram**: Three horizontal chains. Each node is an ASI row; each arrow is the step that passes the row's control but advances the compound. The right-hand annotation names each chain's impact class.
```mermaid
flowchart LR
subgraph C1["CHAIN 1 — the exfiltration chain"]
direction LR
C1A["ASI07\noutput-as-input"] --> C1B["ASI01\ngoal drift"]
C1B --> C1C["ASI05\ntool dispatched"]
C1C --> C1D["ASI03\nover-scoped cap exercised"]
end
subgraph C2["CHAIN 2 — persistence & propagation"]
direction LR
C2A["ASI02\ncapability disclosed"] --> C2B["ASI04\nmemory poisoned via trusted write"]
C2B --> C2C["ASI06\npoisoned entry propagates as unverified fact"]
end
subgraph C3["CHAIN 3 — supply chain to escalation"]
direction LR
C3A["ASI08\nsigned-but-malicious MCP"] --> C3B["ASI05\ndispatch via description collision"]
C3B --> C3C["ASI10\naction executes under orchestrator trust"]
end
IMPACT1["IMPACT:\ndata exfiltration /\nlateral movement"]
IMPACT2["IMPACT:\npersistent backdoor\nsurvives session restart"]
IMPACT3["IMPACT:\nprivileged action\nunder forged authority"]
C1D --> IMPACT1
C2C --> IMPACT2
C3C --> IMPACT3
NOTE["Every link PASSed its B9 control.\nThe COMPOUND is the finding —\ninvisible to any per-row test."]
IMPACT2 --> NOTE
style C1 fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style C2 fill:#14141f,stroke:rgba(240,168,104,0.5),color:#e4e4e8
style C3 fill:#14141f,stroke:rgba(240,128,128,0.5),color:#e4e4e8
style C1A fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style C1B fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style C1C fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style C1D fill:#08080c,stroke:rgba(94,234,212,0.4),color:#5eead4
style C2A fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style C2B fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
style C2C fill:#08080c,stroke:rgba(240,168,104,0.4),color:#f0a868
style C3A fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style C3B fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style C3C fill:#08080c,stroke:rgba(240,128,128,0.4),color:#f08080
style IMPACT1 fill:#08080c,stroke:#f08080,stroke-width:1.5px,color:#f08080
style IMPACT2 fill:#08080c,stroke:#f08080,stroke-width:1.5px,color:#f08080
style IMPACT3 fill:#08080c,stroke:#f08080,stroke-width:1.5px,color:#f08080
style NOTE fill:#08080c,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
```
---
## Diagram 4 — MEASURED honesty vs PASS/FAIL illusion (every row has a residual)
**Type**: Annotated column comparison
**Purpose**: Resolves the misconception that the eight PASS/FAIL rows are fully closed. Shows that the two MEASURED rows are merely where the standard *admits* the residual — every row has one, and the offense team's opening is the residual the PASS/FAIL result cannot express.
**Reading the diagram**: Left column = the two MEASURED rows (admitted residual). Right column = the eight PASS/FAIL rows, each with the residual the deterministic test closed off but the class beneath remains open. The footer is the principle.
```mermaid
flowchart TB
subgraph MEAS["2 MEASURED rows — the standard ADMITS the residual"]
M1["ASI01 — detector + model compliance\nhave a bypass rate"]
M2["ASI06 — hallucination detection\nhas a miss rate"]
end
subgraph PF["8 PASS/FAIL rows — closed at the VECTOR, open at the CLASS"]
P1["ASI02 — canary match closes verbatim leak;\nparaphrased multi-turn disclosure open"]
P2["ASI03 — enumeration closes extra tools;\nover-scoped credential open"]
P3["ASI04 — managed writes close direct path;\ntaint-laundering via trusted sink open"]
P4["ASI05 — normalization closes ../ ;\nselection-layer confusion open"]
P5["ASI07 — sanitizer closes HTML/shell;\noutput-as-input to agent open"]
P6["ASI08 — signature closes unsigned;\nsigned-but-malicious open"]
P7["ASI09 — breaker closes over-threshold;\nunder-threshold loop open"]
P8["ASI10 — binding closes forged principal;\ninter-agent trust assumption open"]
end
PRINCIPLE["Every row has a residual.\nThe 2 MEASURED rows are where the standard admits it.\nThe 8 PASS/FAIL rows are where it does not —\nand that silence is the offense team's first opening."]
MEAS --> PRINCIPLE
PF --> PRINCIPLE
style MEAS fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style PF fill:#14141f,stroke:rgba(240,168,104,0.6),color:#e4e4e8
style M1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style M2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style P1 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P2 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P3 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P4 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P5 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P6 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P7 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style P8 fill:#08080c,stroke:rgba(240,168,104,0.25),color:#f0a868
style PRINCIPLE fill:#08080c,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
```
---
## Diagram 5 — The B9-then-SDD-B01 Reading Order (test vs adversary)
**Type**: Two-phase pipeline
**Purpose**: Shows how the two artifacts compose in an engagement. B9 verifies the controls are present and passing (per-row, isolated). SDD-B01 runs the offensive procedures against a system that PASSed B9 and finds the residuals the deterministic tests cannot express. The gap is the B12 deliverable.
**Reading the diagram**: Left phase = B9 (builder, per-row test, scored report). Right phase = SDD-B01 (attacker, per-row procedure + cross-row chain, reproduced finding). The arrow between them is the load-bearing transition: a system that PASSed the left and FAILed the right is not a contradiction.
```mermaid
flowchart LR
subgraph B9["PHASE 1 — B9 (read as BUILDER)"]
B1["Per-row test\n(one risk, one control)"]
B2["Isolated execution\n(each row tested alone)"]
B3["Scored report\n8 PASS/FAIL + 2 MEASURED"]
B1 --> B2 --> B3
end
subgraph SDD["PHASE 2 — SDD-B01 (read as ATTACKER)"]
S1["Per-row offensive procedure\n(attack + evasion + chain)"]
S2["Chained execution\n(rows composed into compounds)"]
S3["Reproduced findings\nresiduals the test cannot express"]
S1 --> S2 --> S3
end
TRANSITION["THE TRANSITION:\na row that PASSed B9 and FAILed\nthe offensive expansion is NOT a contradiction —\nit is the definition of a residual the\ndeterministic test cannot express."]
B9 --> TRANSITION --> SDD
DELIVERABLE["B12 packages BOTH:\nthe scored report (B9) + the chains (SDD-B01).\nNeither alone is sufficient."]
SDD --> DELIVERABLE
style B9 fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style SDD fill:#14141f,stroke:rgba(240,128,128,0.5),color:#e4e4e8
style B1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style B2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style B3 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#5eead4
style S1 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style S2 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style S3 fill:#08080c,stroke:rgba(240,128,128,0.3),color:#f08080
style TRANSITION fill:#08080c,stroke:#f0a868,stroke-width:1.5px,color:#f0a868
style DELIVERABLE fill:#08080c,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
```
---
## Validation notes
- All five diagrams use the course design system colors: `#14141f` panel fill, `#08080c` deep background for nested nodes, `#5eead4` teal accent for input/state surfaces and principle nodes, `#f0a868` warn for the permission/tool surfaces and the gap/transitions, `#f08080` danger for the output/resource surfaces and impact nodes. `#e4e4e8` / `#9494a0` for text.
- Paste each into [Mermaid Live Editor](https://mermaid.live) to render. All use stable Mermaid syntax (`flowchart TB/LR`, `subgraph`) supported in current Mermaid (v10.4+).
- For the slide deck (artifact 03), these are rendered as static captures from Mermaid Live, inlined into reveal.js.
- The teal/warn/danger color coding is consistent across diagrams: teal = the input/state semantic surface and the thesis/principle nodes; warn (orange) = the permission/tool structural surface and the gap/transitions; danger (red) = the output/resource surface and impact. This mapping is load-bearing — it lets the reader track which boundary a node belongs to across all five diagrams.