Diagram
View lifecycle and trust
How exact View bytes are admitted, authorized, contained, bridged, confirmed, and revoked.
Question answered
How can Superbee run bundle-owned or agent-authored HTML without giving that code ambient bundle access, and how does a host prove each request still comes from the exact bytes, capability, and launch the human trusted?
A View is executable HTML admitted into an immutable, process-local launch. An opaque-origin script sandbox contains the code, but containment is only defense in depth. Exact-source and exact-access authorization decide whether the View can see bundle data. A separate trusted-shell confirmation decides whether one narrow proposed mutation may run. This page describes the pinned current-main and npm-next architecture; the current release page remains the installed stable authority.
Registered and transient sources
| Registered Views | Transient Views |
|---|---|
A durable type: View registry document names an entry blob, access level, and optional exact entry_version. The registry and blob are discoverable by ID. | An MCP caller supplies HTML for one process-local launch. It is not cataloged; omitted access defaults to bundle-read, while explicit none may be bundleless. |
| A launch rereads the registry and blob, admits the current bytes, and captures registry version, entry, access, content type, and content hash. | A launch admits the supplied bytes into the same runtime and captures their hash, access, and the exact bundle identity when data access is possible. |
| A CLI host may persist approval outside the bundle for the identical registered subject. The launch itself is still bounded and process-local. | Approval is session/process-local and never aliases durable registered approval. Local browser UI does not launch transient Views today. |
| Any registry or entry change makes the old launch stale. Prior approval stops matching when the registered identity, admitted bytes or type, access, or policy changes; a metadata-only change to the same authorization subject may reuse it for a fresh launch. | Closing, expiry, navigation, workspace change, or replacement HTML revokes the launch. |
Registration is fail-closed: the
View grammar
resolves absent or unknown access to none, and
parsePageRegistration
checks safe registry and entry identities plus an optional canonical entry digest. Every launch still
hashes and pins the admitted bytes even when registration omits that digest.
Saving a transient View does not accept replacement HTML. It persists the server-owned exact approved bytes in create-only order, with the blob before registration, and creates a new registered identity. Launching that registered identity requires its own authorization; transient trust is never silently promoted.
One launch-and-trust pipeline
The compact flow appears inline. Read it from top to bottom; use Expand when its labels need more room on a narrow screen. The numbered lifecycle below and the source table above are its complete readable equivalent.
The complete nonvisual lifecycle is:
Resolve the registered document and blob, or accept transient HTML plus its explicit bundle/access context.
Admit bounded UTF-8
text/htmlbytes (at most 512 KiB) and copy them into an immutable launch source. Theauthorization subjectbinds source identity, exact content version and type, capability, execution state, and policy.Mint a process-local launch with bounded lifetime and registry capacity. The
launch registryowns expiry and revocation; a web-host nonce is only a short-lived page-byte credential, never a bundle-data credential or universal MCP mechanism.Re-read the registered source or transient bundle identity and byte hash before use. The shared
currentness checkandmint pathsmake registered and transient sources converge on one runtime.For
bundle-readorbundle-propose, require approval of the exact launch subject and revalidate it.noneproceeds without data approval because it receives no bundle-data access; the bridge permits only capability-independent page navigation.Mount only the admitted bytes in an opaque-origin iframe with scripts but no same-origin privilege, credentials, or ambient bundle object. The local web host serves immutable bytes through a
nonce and CSP boundary; MCP uses a fixed trusted App shell and blob-backed child.Around every bounded bridge request, resolve launch currentness and authorization before work and again before replying. The
bridge fencerevokes stale work before data can cross a changed authorization scope.Return a bounded read result, or pass a narrow proposal to the trusted shell. A proposal mutates nothing until the shell displays it, receives a separate one-shot human confirmation, rechecks launch and expected document version, validates edition and Kind conformance, and delegates to core mutation policy.
Access levels and write control
nonereceives no bundle-data access and needs no data authorization. It retains only the capability-independentopen-pagenavigation request. Registered local UI Views may use it. MCP supportsnoneonly for explicit transient Views, including bundleless launches; registered MCP Views must requestbundle-readorbundle-propose.bundle-readrequires exact-byte/access approval, then permits only bounded read, query, render, edge, subscription, and View-opening operations. The protocol union and limits are defined by thebounded bridge contract.bundle-proposeincludes reads and may propose one versioneddocument.set-fieldaction. View code never writes directly. Thetrusted action gaterequires separate confirmation and version checks; trusted writes are local-bundle behavior, not a claim about remote web UI mutation.
Revocation and host boundaries
The local UI launches registered Views only. Its authenticated shell mints one nonce, serves
immutable launch bytes with no-store/CSP/nosniff/no-referrer headers, and mounts an iframe with
sandbox="allow-scripts" but not same-origin. The server's
immutable serve and authorization payload
and the UI's
source and frame-generation fences
independently reject stale delivery. Registry or blob changes revoke browser state and require a
fresh launch.
MCP show_view supports registered and transient sources. Its
launch and approval flow
keeps bundle-capable transient Views bound to the selected workspace. The fixed App shell constrains
the child with
CSP and sandbox policy
and validates child source, epoch, visibility, and server-owned freshness through the
active-child fences.
Close, navigation, expiry, delivery discontinuity, changed source/access, or lost authorization all
deny, revoke, reload, or require a replacement launch. A stale persistent approval record may remain
on disk, but its exact subject no longer matches and therefore grants nothing.
This active-code lifecycle is distinct from the inert Markdown document reader and the immutable public publication boundary. For surrounding product actors see the system context; for confirmed writes see the document mutation lifecycle.