Skip to content

[Browser Session/BiDi ACL] Bind current lifecycle authority to presentation command planning #314

Description

@seonghobae

Gap

PR #313 establishes the Browser Session aggregate and non-aliasing disposable isolation identity, but originweave-bidi still has no safe consuming path for its private WebDriverBidiPresentationOwnership / WebDriverBidiScreenAreaOwnership witnesses. Adding a public constructor or converting an arbitrary PresentationMutationAuthority snapshot would reopen the authority gap: a token retained across epoch advance, destruction, transport loss, or session end could be planned after it is stale.

This issue owns the narrow ACL between Browser Session domain authority and the version-pinned standard-BiDi command planner. Browser Session remains lifecycle/policy authority; WebDriver BiDi remains an adapter. It does not own browser transport, sandboxing, Keyverse, EgressWeave, contextual-orchestrator, Wardnet, or real-browser acceptance.

Required invariant

A BiDi presentation witness may be produced only from authority that the live BrowserSession aggregate has revalidated as current at the point of adapter use. The validation proof must be non-caller-constructible and lifetime-bound so the session cannot be mutably advanced/destroyed while the adapter derives command intent from it. Raw BrowserSessionId, BrowsingContextId, DisposableIsolationId, or a retained PresentationMutationAuthority alone is insufficient.

Test-first acceptance

  • RED: retain an authority token, advance the same context epoch, and prove the old token cannot be converted into a BiDi presentation witness or command plan.
  • RED: destroy the context, record transport loss, or end the session and prove no adapter witness can be derived from stale authority.
  • RED: authority from another aggregate with reused external session/context/epoch but distinct isolation must fail before any adapter command/transport path.
  • GREEN: a current authority validated by the owning aggregate can be projected through a narrow ACL into the exact browsing-context-bound BiDi presentation witness and can plan viewport/DPR/timezone commands; screen-area witness remains separate and must not imply complete Screen admission.
  • Keep Browser Session independent of WebDriver BiDi/CDP/MCP. The adapter crate may depend outward on the Browser Session proof type, not vice versa.
  • Owned production rustdoc and function/line/region/branch coverage remain 100%.

Real Chromium transport/post-condition/destruction remains later evidence under #292/#299. The OriginWeave runtime-qualified WebDriver BiDi revision remains 2026-09-03 until separate compatibility requalification; the latest-published W3C WebDriver BiDi Working Draft is dated 9 September 2026 (WD-webdriver-bidi-20260909) and is standards-freshness evidence only. Publication freshness does not silently repin the runtime-qualified protocol/browser revision.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions