diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
index ff9735c..2bbf0b1 100644
--- a/ARCHITECTURE.md
+++ b/ARCHITECTURE.md
@@ -131,14 +131,16 @@ The portal is a **"command-center" design** — a light, print-like, authoritati
**Alpine under the CSP build — no inline JS (`static/js/tags.js`).** The CSP build cannot `eval`, so two rules hold: (1) **every component is registered** via `Alpine.data()` in `static/js/tags.js` (one registry, loaded *before* the Alpine `', page, re.S).group(1)
assert json.loads(raw.replace(""", '"'))[anchor] == "analyze"
+
+
+def test_analyst_rail_follows_the_intelligence_cycle(client, login):
+ login("ANALYST", email="cycle@example.com")
+ page = client.get("/").text
+ rail = page.split('class="rail-nav"', 1)[1].split("", 1)[0]
+ labels = ["Workspace", "Collect", "Produce", "Discover"]
+ positions = [rail.index(f">{label}") for label in labels]
+ assert positions == sorted(positions), "rail groups are out of cycle order"
+ # Tasking is collection, not administration.
+ collect = rail.split(">Collect", 1)[1].split(">Produce", 1)[0]
+ assert "/requirements" in collect and "/notebooks" in collect
+
+
+def test_admin_rail_collapses_the_config_consoles_behind_the_hub(client, login):
+ """Eleven admin links become four; every collapsed console is still one ⌘K
+ keystroke away, so nothing became unreachable."""
+ login("ADMIN", email="railadmin@example.com")
+ page = client.get("/").text
+ rail = page.split('class="rail-nav"', 1)[1].split("", 1)[0]
+ admin = rail.split(">Administration", 1)[1]
+ assert admin.count(" fallback), and the
+ lifecycle + render + transition all live under Publish rather than being
+ spread over a subhead and a separate tab."""
+ login("ANALYST", email="publish@example.com")
+ nb = client.post("/api/notebooks", json={"title": "Publish nb"}).json()
+ rid = client.post(
+ "/api/reports", json={"notebook_id": nb["id"], "title": "Publishable"}
+ ).json()["id"]
+
+ page = client.get(f"/reports/{rid}/edit").text
+ assert "Save draft" not in page
+ assert "All changes saved" in page
+ assert "