Declare browser profile isolation

This commit is contained in:
jwinterm
2026-07-11 09:34:28 -04:00
parent d95296da5f
commit 84d72cb2ed
5 changed files with 22 additions and 3 deletions
+1
View File
@@ -84,6 +84,7 @@ def _fixture_entry(
"checks": { "checks": {
"transport": transport, "transport": transport,
"profile": transport, "profile": transport,
"isolation": "transport-profile",
}, },
"interaction": _interaction_policy(protocol, route_policy), "interaction": _interaction_policy(protocol, route_policy),
} }
+4
View File
@@ -94,6 +94,10 @@ Daemon adapters provide a common interface:
Adapters must be conservative. They do not modify non-AMPG config without showing a Adapters must be conservative. They do not modify non-AMPG config without showing a
plan first, and managed config lives under AMPG-owned state directories. plan first, and managed config lives under AMPG-owned state directories.
Fixture manifests are the AMPG-to-AMPB boundary. They declare the published URL, expected
transport, expected profile, and transport-profile isolation result. They do not prescribe
browser process management or local daemon ownership; those decisions remain inside AMPB.
## Platform providers ## Platform providers
Platform providers decide what daemon management means on the current host. AMPG detects Platform providers decide what daemon management means on the current host. AMPG detects
+5 -1
View File
@@ -19,7 +19,7 @@ The manifest contains public route expectations only:
- enabled protocol fixtures. - enabled protocol fixtures.
- protocol renderer and relative output path. - protocol renderer and relative output path.
- route URL for AMPB checks. - route URL for AMPB checks.
- expected AMPB transport and profile. - expected AMPB transport, profile, and transport-profile isolation.
- declared interaction tier, identity adapter, payment adapter, realtime flag, and - declared interaction tier, identity adapter, payment adapter, realtime flag, and
public exposure flag. public exposure flag.
- optional route-group metadata for configured public route policies. - optional route-group metadata for configured public route policies.
@@ -27,6 +27,10 @@ The manifest contains public route expectations only:
It must not contain private host inventory, hidden-service keys, tunnel keys, credentials, It must not contain private host inventory, hidden-service keys, tunnel keys, credentials,
or deployment notes. or deployment notes.
The isolation check is a browser-facing result, not a daemon-management instruction.
AMPG declares which transport profile must consume the route; AMPB independently decides
whether to adopt or start the local transport needed to reach it.
## Commands ## Commands
```sh ```sh
+8 -1
View File
@@ -72,7 +72,14 @@ cid = "bafyexample"
self.assertEqual("placeholder", by_protocol["tor"]["address_status"]) self.assertEqual("placeholder", by_protocol["tor"]["address_status"])
self.assertEqual("gemini://example.test/", by_protocol["gemini"]["url"]) self.assertEqual("gemini://example.test/", by_protocol["gemini"]["url"])
self.assertEqual("ipfs://bafyexample", by_protocol["ipfs"]["url"]) self.assertEqual("ipfs://bafyexample", by_protocol["ipfs"]["url"])
self.assertEqual({"transport": "ipfs", "profile": "ipfs"}, by_protocol["ipfs"]["checks"]) self.assertEqual(
{
"transport": "ipfs",
"profile": "ipfs",
"isolation": "transport-profile",
},
by_protocol["ipfs"]["checks"],
)
self.assertEqual( self.assertEqual(
{ {
"identity": "none", "identity": "none",
+4 -1
View File
@@ -38,7 +38,10 @@ class PreviewTest(unittest.TestCase):
self.assertEqual("http://127.0.0.1:19101/", tor_root["url"]) self.assertEqual("http://127.0.0.1:19101/", tor_root["url"])
self.assertEqual({"transport": "clearnet", "profile": "clearnet"}, tor_root["checks"]) self.assertEqual({"transport": "clearnet", "profile": "clearnet"}, tor_root["checks"])
self.assertEqual("http://preview.onion/", tor_root["published"]["url"]) self.assertEqual("http://preview.onion/", tor_root["published"]["url"])
self.assertEqual({"transport": "tor", "profile": "tor"}, tor_root["published"]["checks"]) self.assertEqual(
{"transport": "tor", "profile": "tor", "isolation": "transport-profile"},
tor_root["published"]["checks"],
)
self.assertEqual("preview", tor_root["address_status"]) self.assertEqual("preview", tor_root["address_status"])
self.assertEqual("ready", tor_root["preview"]["status"]) self.assertEqual("ready", tor_root["preview"]["status"])