Skip to content

test(uvai): add browser-boundary verification for the hybrid workspace #2202

Open

Description

@groupthinking

Source artifact

Merged PR #2184 / commit b4728bf introduced the UVAI hybrid workspace prototype.

The final implementation repaired the reviewed credential, sandbox, escaping, branding, terminal-input, and ticket-copy defects. However, the current-head review still identified an uncovered browser/DOM execution surface, and the repository only runs logic.test.mjs for pure helpers.

Why this remains material

This surface accepts editable HTML, CSS, JavaScript, Markdown, terminal commands, and assistant prompts, then renders into both a sandboxed preview and parent-page chat. Unit-only helper coverage does not prove that the actual DOM boundary, model updates, sandbox flags, and visible actions behave as claimed.

The prototype is also a sibling surface while /studio remains canonical. That is acceptable only if it stays explicitly prototype-only until an integration or redirect decision is made.

Fixture-only acceptance criteria

  • Add deterministic browser/DOM tests for Embed, Summarize, Extract, Escalate, free-form Ask, and terminal command input.
  • Prove edited Monaco models update the preview and summary from current content rather than starter constants.
  • Prove lesson/editor markup is escaped before entering parent-page innerHTML.
  • Prove the preview retains sandbox="allow-scripts" without allow-same-origin, top navigation, popups, downloads, or parent credential access.
  • Cover closing-script sequences, reordered asset attributes, missing virtual assets, and repeated edits.
  • Prove no gateway key or production credential is read from or written to window, preview storage, query strings, or receipts.
  • Record whether this directory remains a prototype, redirects into /studio, or is integrated as a canonical studio pane.
  • Add a machine-readable test receipt tied to the exact head and keep production Gateway calls disabled.

Boundary

No deployment, live provider invocation, public compatibility claim, or production activation is required. Keep this fixture/browser-test only until the canonical-surface decision is reviewed.

Activity

  1. linear-code commented on Sep 21, 2026

    @linear-code
    Contributor
  2. github-actions commented on Sep 21, 2026

    @github-actions
    Contributor

    👋 Thanks for opening this issue! It has been automatically labeled for triage.

  3. kk-agent commented on Sep 28, 2026

    @kk-agent
    Collaborator

    Max-aggressive cleanup 2026-09-28: EventRelay/UVAI product work is PARKED. Closing this stale/open item. Reopen if Hayden unparks the cut.

  4. groupthinking commented on Oct 8, 2026

    @groupthinking
    OwnerAuthor

    Reopened and advanced in PR #2378. Unmodified helper test failed at module import due invalid regex flags; repaired helpers now pass plus hostile asset/escaping fixtures. Browser harness and isolated workflow cover actual app DOM with declared editor/terminal adapters and no external service traffic. Browser execution is NOT RUN locally because Chromium executable absent and download invalid archive; CI must prove it before merge. Prototype remains subordinate to /studio; full criteria not yet complete.

  5. groupthinking commented on Oct 8, 2026

    @groupthinking
    OwnerAuthor

    Browser blocker advanced: CI Chromium job113404580835 passed at exact head b5e80fdeccde42d39580ddb437a0814491aaa70a in PR2378 and emitted an exact-head VERIFIED JSON receipt. Actual app DOM + sandbox checks cover edited summary, extract, Ask escaping, terminal fresh-ticket delta, sandbox parent access denial and credential trap with external services disabled. Local download failure is superseded for this runner only; live CDN editor integration and remaining full matrix remain excluded. A prior terminal assertion false-positive was fixed and recorded in Neon contradiction/review231; it is not silently treated as independent proof.

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

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions