diff --git a/docs/diagrams/START-HERE.md b/docs/diagrams/START-HERE.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/diagrams/archicratie-web-edition-blue-green-runbook-verbatim-v2.svg b/docs/diagrams/archicratie-web-edition-blue-green-runbook-verbatim-v2.svg
new file mode 100644
index 0000000..6d12de1
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-blue-green-runbook-verbatim-v2.svg
@@ -0,0 +1,427 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-blue-green-runbook-verbatim.svg b/docs/diagrams/archicratie-web-edition-blue-green-runbook-verbatim.svg
new file mode 100644
index 0000000..d918b6a
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-blue-green-runbook-verbatim.svg
@@ -0,0 +1,551 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-edge-routing-verbatim-v2.svg b/docs/diagrams/archicratie-web-edition-edge-routing-verbatim-v2.svg
new file mode 100644
index 0000000..8271368
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-edge-routing-verbatim-v2.svg
@@ -0,0 +1,437 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-edge-routing-verbatim.svg b/docs/diagrams/archicratie-web-edition-edge-routing-verbatim.svg
new file mode 100644
index 0000000..b545add
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-edge-routing-verbatim.svg
@@ -0,0 +1,324 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-git-ci-workflow-v1.svg b/docs/diagrams/archicratie-web-edition-git-ci-workflow-v1.svg
new file mode 100644
index 0000000..90d696a
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-git-ci-workflow-v1.svg
@@ -0,0 +1,870 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-global-verbatim-v2.svg b/docs/diagrams/archicratie-web-edition-global-verbatim-v2.svg
new file mode 100644
index 0000000..5be4cb5
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-global-verbatim-v2.svg
@@ -0,0 +1,537 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-global-verbatim.svg b/docs/diagrams/archicratie-web-edition-global-verbatim.svg
new file mode 100644
index 0000000..a603ae9
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-global-verbatim.svg
@@ -0,0 +1,828 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-machine-editoriale-v2.svg b/docs/diagrams/archicratie-web-edition-machine-editoriale-v2.svg
new file mode 100644
index 0000000..cb51eed
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-machine-editoriale-v2.svg
@@ -0,0 +1,409 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-machine-editoriale-v3.svg b/docs/diagrams/archicratie-web-edition-machine-editoriale-v3.svg
new file mode 100644
index 0000000..28d2f83
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-machine-editoriale-v3.svg
@@ -0,0 +1,596 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim-v2.svg b/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim-v2.svg
new file mode 100644
index 0000000..84494ec
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim-v2.svg
@@ -0,0 +1,510 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim-v3.svg b/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim-v3.svg
new file mode 100644
index 0000000..00e51d9
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim-v3.svg
@@ -0,0 +1,613 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim.svg b/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim.svg
new file mode 100644
index 0000000..3952e9f
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-machine-editoriale-verbatim.svg
@@ -0,0 +1,634 @@
+
+
diff --git a/docs/diagrams/archicratie-web-edition-machine-editoriale.svg b/docs/diagrams/archicratie-web-edition-machine-editoriale.svg
new file mode 100644
index 0000000..845c930
--- /dev/null
+++ b/docs/diagrams/archicratie-web-edition-machine-editoriale.svg
@@ -0,0 +1,631 @@
+
+
diff --git a/docs/diagrams/diagram.svg b/docs/diagrams/diagram.svg
new file mode 100644
index 0000000..a91c386
--- /dev/null
+++ b/docs/diagrams/diagram.svg
@@ -0,0 +1,618 @@
+
+
diff --git a/scripts/build-para-index.mjs b/scripts/build-para-index.mjs
new file mode 100644
index 0000000..08dfa5f
--- /dev/null
+++ b/scripts/build-para-index.mjs
@@ -0,0 +1,148 @@
+// scripts/build-para-index.mjs
+import fs from "node:fs/promises";
+import path from "node:path";
+
+function parseArgs(argv) {
+ const out = { inDir: "dist", outFile: "dist/para-index.json" };
+
+ for (let i = 0; i < argv.length; i++) {
+ const a = argv[i];
+
+ if (a === "--in" && argv[i + 1]) {
+ out.inDir = argv[++i];
+ continue;
+ }
+ if (a.startsWith("--in=")) {
+ out.inDir = a.slice("--in=".length);
+ continue;
+ }
+
+ if (a === "--out" && argv[i + 1]) {
+ out.outFile = argv[++i];
+ continue;
+ }
+ if (a.startsWith("--out=")) {
+ out.outFile = a.slice("--out=".length);
+ continue;
+ }
+ }
+
+ return out;
+}
+
+async function exists(p) {
+ try {
+ await fs.access(p);
+ return true;
+ } catch {
+ return false;
+ }
+}
+
+async function walk(dir) {
+ const out = [];
+ const ents = await fs.readdir(dir, { withFileTypes: true });
+ for (const e of ents) {
+ const p = path.join(dir, e.name);
+ if (e.isDirectory()) out.push(...(await walk(p)));
+ else out.push(p);
+ }
+ return out;
+}
+
+function stripTags(html) {
+ return String(html || "")
+ .replace(/