diff --git a/docs/observatory.html b/docs/observatory.html
index b075565..7b7a9ad 100644
--- a/docs/observatory.html
+++ b/docs/observatory.html
@@ -16,7 +16,7 @@
-
+
diff --git a/tests/test_webmcp_contract.py b/tests/test_webmcp_contract.py
index 4b30011..d513d07 100644
--- a/tests/test_webmcp_contract.py
+++ b/tests/test_webmcp_contract.py
@@ -13,6 +13,7 @@
ROOT = Path(__file__).resolve().parents[1]
ADAPTER = ROOT / "docs" / "webmcp-tools.js"
+OBSERVATORY_HTML = ROOT / "docs" / "observatory.html"
TOOL_ORDER = [
"get_observatory_state",
@@ -371,3 +372,15 @@ def test_adapter_documents_late_bound_bridge_and_human_only_approval() -> None:
assert "window.GPUStackMission.invoke(toolName, validatedArgs, { signal })" in source
assert "approval remains an explicit page-only human act" in source
assert "This never approves or commits it" in source
+
+
+def test_observatory_load_order_and_cache_keys_include_the_bridge_release() -> None:
+ html = OBSERVATORY_HTML.read_text(encoding="utf-8")
+ scripts = [
+ 'observatory.js?v=20260903.1',
+ 'webmcp-tools.js?v=20260903.1',
+ 'webmcp-mission.js?v=20260903.1',
+ ]
+
+ assert all(script in html for script in scripts)
+ assert [html.index(script) for script in scripts] == sorted(html.index(script) for script in scripts)