Fix relay URL race in inventory (Finding 2):
- get_owned_agent_inventory now derives api_base_url from scope.relay_url_override
(same pattern as scoped_archive_operation) — never re-reads state.relay_url_override
after epoch capture
- load_archive_snapshot accepts api_base_url: &str; uses query_relay_at +
inline NIP-11 fetch at the scoped URL instead of fetch_relay_self(state)
which read state independently
- Removes relay_ws_url_with_override from inventory imports
Add e2e bridge + Playwright spec (Finding 8):
- e2eBridge.ts: case 'get_owned_agent_inventory' returns mock inventory
- bridge.ts: MockBridgeOptions.ownedAgentInventory typed field
- InstancesSheet.tsx: data-testid='instances-sheet' on SheetContent
- agent-instances-sheet.spec.ts: 5 supplementary UI coverage tests
- start-control safeguard opens Sheet on active relay instances
- Sheet shows both relay instances when seeded
- Archive button present for Verified instances with trusted state
- Archive/Unarchive suppressed when archive state not trusted
- No-third-mint: start intercepted when inventory is untrusted
Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>