diff --git a/docs/diagrams/a0-session-replication.svg b/docs/diagrams/a0-session-replication.svg
new file mode 100644
index 0000000..d23d854
--- /dev/null
+++ b/docs/diagrams/a0-session-replication.svg
@@ -0,0 +1,48 @@
+
diff --git a/docs/diagrams/a1-transport-block.svg b/docs/diagrams/a1-transport-block.svg
new file mode 100644
index 0000000..1fafc3a
--- /dev/null
+++ b/docs/diagrams/a1-transport-block.svg
@@ -0,0 +1,47 @@
+
diff --git a/docs/diagrams/a3-database-crash.svg b/docs/diagrams/a3-database-crash.svg
new file mode 100644
index 0000000..02a4a16
--- /dev/null
+++ b/docs/diagrams/a3-database-crash.svg
@@ -0,0 +1,55 @@
+
diff --git a/docs/diagrams/a4-node-loss.svg b/docs/diagrams/a4-node-loss.svg
new file mode 100644
index 0000000..2ac5824
--- /dev/null
+++ b/docs/diagrams/a4-node-loss.svg
@@ -0,0 +1,52 @@
+
diff --git a/docs/diagrams/a5-asymmetric-partition.svg b/docs/diagrams/a5-asymmetric-partition.svg
new file mode 100644
index 0000000..1cf0ab9
--- /dev/null
+++ b/docs/diagrams/a5-asymmetric-partition.svg
@@ -0,0 +1,49 @@
+
diff --git a/docs/diagrams/a6-latency-injection.svg b/docs/diagrams/a6-latency-injection.svg
new file mode 100644
index 0000000..7ab072f
--- /dev/null
+++ b/docs/diagrams/a6-latency-injection.svg
@@ -0,0 +1,51 @@
+
diff --git a/docs/diagrams/a8-rolling-restart.svg b/docs/diagrams/a8-rolling-restart.svg
new file mode 100644
index 0000000..c464454
--- /dev/null
+++ b/docs/diagrams/a8-rolling-restart.svg
@@ -0,0 +1,47 @@
+
diff --git a/docs/diagrams/b0-autoconfiguration.svg b/docs/diagrams/b0-autoconfiguration.svg
new file mode 100644
index 0000000..88e2363
--- /dev/null
+++ b/docs/diagrams/b0-autoconfiguration.svg
@@ -0,0 +1,45 @@
+
diff --git a/docs/diagrams/b2-store-split-consequences.svg b/docs/diagrams/b2-store-split-consequences.svg
new file mode 100644
index 0000000..9cff794
--- /dev/null
+++ b/docs/diagrams/b2-store-split-consequences.svg
@@ -0,0 +1,55 @@
+
diff --git a/docs/diagrams/b7-cookie-secret.svg b/docs/diagrams/b7-cookie-secret.svg
new file mode 100644
index 0000000..0f6f6c5
--- /dev/null
+++ b/docs/diagrams/b7-cookie-secret.svg
@@ -0,0 +1,52 @@
+
diff --git a/docs/diagrams/c2-backchannel-logout.svg b/docs/diagrams/c2-backchannel-logout.svg
new file mode 100644
index 0000000..7c012d0
--- /dev/null
+++ b/docs/diagrams/c2-backchannel-logout.svg
@@ -0,0 +1,44 @@
+
diff --git a/docs/diagrams/d2-version-upgrade.svg b/docs/diagrams/d2-version-upgrade.svg
new file mode 100644
index 0000000..aedec0c
--- /dev/null
+++ b/docs/diagrams/d2-version-upgrade.svg
@@ -0,0 +1,48 @@
+
diff --git a/docs/experiment-00-session-replication.md b/docs/experiment-00-session-replication.md
index 1435976..5a0717a 100644
--- a/docs/experiment-00-session-replication.md
+++ b/docs/experiment-00-session-replication.md
@@ -16,6 +16,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| 물음 | 답 |
diff --git a/docs/experiment-a1-jgroups-transport-block.md b/docs/experiment-a1-jgroups-transport-block.md
index 837193d..7a218c6 100644
--- a/docs/experiment-a1-jgroups-transport-block.md
+++ b/docs/experiment-a1-jgroups-transport-block.md
@@ -9,6 +9,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| 예측 | 결과 |
diff --git a/docs/experiment-a3-database-crash.md b/docs/experiment-a3-database-crash.md
index f6a6ca4..5b2687f 100644
--- a/docs/experiment-a3-database-crash.md
+++ b/docs/experiment-a3-database-crash.md
@@ -9,6 +9,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
```
diff --git a/docs/experiment-a4-node-loss.md b/docs/experiment-a4-node-loss.md
index b1b5b1c..fd132d6 100644
--- a/docs/experiment-a4-node-loss.md
+++ b/docs/experiment-a4-node-loss.md
@@ -17,6 +17,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| | 4a 워커 상실 | 4b 컨트롤 플레인 상실 |
diff --git a/docs/experiment-a5-asymmetric-partition.md b/docs/experiment-a5-asymmetric-partition.md
index 826ff17..335eb83 100644
--- a/docs/experiment-a5-asymmetric-partition.md
+++ b/docs/experiment-a5-asymmetric-partition.md
@@ -12,6 +12,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| 물음 | 답 |
diff --git a/docs/experiment-a6-latency-injection.md b/docs/experiment-a6-latency-injection.md
index 2b3aa43..6d00339 100644
--- a/docs/experiment-a6-latency-injection.md
+++ b/docs/experiment-a6-latency-injection.md
@@ -9,6 +9,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| 측정 | 값 |
diff --git a/docs/experiment-a8-rolling-restart.md b/docs/experiment-a8-rolling-restart.md
index 0904799..1d30d58 100644
--- a/docs/experiment-a8-rolling-restart.md
+++ b/docs/experiment-a8-rolling-restart.md
@@ -9,6 +9,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| 확인 | 결과 |
diff --git a/docs/experiment-b0-bff-redis-deploy.md b/docs/experiment-b0-bff-redis-deploy.md
index 1dc5550..7488d5f 100644
--- a/docs/experiment-b0-bff-redis-deploy.md
+++ b/docs/experiment-b0-bff-redis-deploy.md
@@ -11,6 +11,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
```
diff --git a/docs/experiment-b2-multi-instance-session.md b/docs/experiment-b2-multi-instance-session.md
index a6f61df..ab10136 100644
--- a/docs/experiment-b2-multi-instance-session.md
+++ b/docs/experiment-b2-multi-instance-session.md
@@ -10,6 +10,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
B-1 이 남긴 문제(세션만 공유되고 토큰은 안 됨)를 **JDBC 로 옮겨 해결했다.**
diff --git a/docs/experiment-b7-cookie-secret-rotation.md b/docs/experiment-b7-cookie-secret-rotation.md
index fe0ef71..266d5e3 100644
--- a/docs/experiment-b7-cookie-secret-rotation.md
+++ b/docs/experiment-b7-cookie-secret-rotation.md
@@ -12,6 +12,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| 물음 | 답 |
diff --git a/docs/experiment-c2-backchannel-logout.md b/docs/experiment-c2-backchannel-logout.md
index 067b27c..6985b2d 100644
--- a/docs/experiment-c2-backchannel-logout.md
+++ b/docs/experiment-c2-backchannel-logout.md
@@ -8,6 +8,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| 확인 | 결과 |
diff --git a/docs/experiment-d2-version-upgrade.md b/docs/experiment-d2-version-upgrade.md
index 25f8782..caf89f5 100644
--- a/docs/experiment-d2-version-upgrade.md
+++ b/docs/experiment-d2-version-upgrade.md
@@ -23,6 +23,15 @@
---
+## 구조
+
+
+
+> 다이어그램 규약은 [`diagrams/_style.md`](diagrams/_style.md).
+> 실험대 전체 구조는 [`diagrams/lab-topology.svg`](diagrams/lab-topology.svg).
+
+---
+
## 0. 결론부터
| 확인 | 결과 |
diff --git a/docs/experiment-followup-untested-items.md b/docs/experiment-followup-untested-items.md
index bdc5555..1c348c1 100644
--- a/docs/experiment-followup-untested-items.md
+++ b/docs/experiment-followup-untested-items.md
@@ -10,6 +10,18 @@
---
+## 구조
+
+이 문서는 세 실험의 후속이므로 각자의 구조도를 참조한다.
+
+| 항목 | 구조도 |
+|---|---|
+| D-2 정방향 업그레이드 | [`d2-version-upgrade.svg`](diagrams/d2-version-upgrade.svg) |
+| B-4 ③ role 반영 | [`b4-header-forgery.svg`](diagrams/b4-header-forgery.svg) |
+| D-4 강제 갱신 | [`d4-renewal-gap.svg`](diagrams/d4-renewal-gap.svg) · [`d4a-hook-timeline.svg`](diagrams/d4a-hook-timeline.svg) |
+
+---
+
## 0. 결론부터
| 항목 | 결과 |
diff --git a/docs/experiment-index.md b/docs/experiment-index.md
index bfd38a7..0295a95 100644
--- a/docs/experiment-index.md
+++ b/docs/experiment-index.md
@@ -41,7 +41,14 @@
| `diagrams/*.svg` | 실험별 구조도 12개 |
| `evidence/*/*.png` | Grafana · 브라우저 스크린샷 |
-**스크린샷이 없는 실험은 11개다** — `A-3 A-7 B-3 B-4 B-5 B-6 C-2 D-1 D-3 D-4 후속`.
+**스크린샷이 없는 실험은 14개다** — `A-3 A-7 A-7a B-3 B-4 B-5 B-6 C-2 D-1 D-3 D-4 D-4a 후속 멀티노드`.
+없는 이유는 **관측 대상에 그 지표가 없기 때문**이지 안 찍어서가 아니다 —
+Prometheus 는 keycloak·kubelet·node-exporter·prometheus 만 긁는다
+([`followup/04-observability-gap.txt`](evidence/followup/04-observability-gap.txt)).
+터미널·DB·로그로 측정한 실험은 브라우저에 띄울 화면 자체가 없다.
+
+**구조도(SVG)는 28개이고, 실험 문서 29개 중 28개가 하나 이상을 싣는다.**
+싣지 않는 하나는 후속 요약 문서이며, 세 실험의 구조도를 표로 참조한다.
그중 B층은 **Prometheus 가 Redis·BFF·PostgreSQL 을 긁지 않아** 만들 수가 없다 —
[`followup/04-observability-gap.txt`](evidence/followup/04-observability-gap.txt) 에 측정해 두었다.