Skip to content

REQ 134

sergio velderrain edited this page Nov 12, 2026 · 2 revisions

REQ-134: Open a grant-bound VS Code guest console

Requirement

The native-trial console manager shall open one VS Code-integrated console panel connected only to the exact active Windows VM. The panel shall replace Remmina and the separate shared-browser mirror, accept keyboard and mouse input only during the setup phase, and enforce read-only behavior before capture begins.

Rationale

A single VS Code surface lets the operator authenticate and prepare the guest while preserving a strict boundary between setup input and benchmark authority. A dynamic per-run RDP port must not be confused with another registered VM, and panel input must not contaminate the model's decision phase.

Fit Criterion

Validate a fresh grant for the exact running VM and one loopback TCP RDP rule to guest port 3389; refuse ambiguity. The loopback gateway uses a run-bound capability and accepts only viewport keyboard/mouse events during SETUP; clipboard, file transfer, host shortcuts, and generic action routes are prohibited. The pinned RDP component and log/credential controls are defined in the architecture record. Credentials are interactive, never persisted, and absent from arguments, URLs, environment, logs, receipts, and evidence. The controller enforces SETUP -> LOCKING -> READ_ONLY -> CAPTURING -> REVIEWING -> ACTION -> CLOSED; it blocks new input, drains and acknowledges the bounded queue, commits the server lock, then starts Capture Desktop. Failure refuses capture and setup never reopens. Setup input defines the baseline. During capture/review the panel is read-only; one model-selected synthetic choice runs through authorized MCP with no retry. A run-bound receipt identifies grant digest, run/VM, server/tool, candidate, event ID, and outcome; panel input cannot issue or repeat it. Opening the panel starts no capture, inference, or action; taskId and panel metadata match the grant. The app persists no raw frames/input payloads and clears buffers and private scratch on close/expiry/teardown; orphan cleanup validates run binding. OS swap/crash dumps are outside the app guarantee. Identity, lock, privacy, or lifecycle failures refuse without another VM or public listener.

Verification

TEST-135 covers grant/UUID/port/panel binding, loopback-only transport, guest-frame identity, setup-only input, server-side phase locking, credential privacy, exact one-action separation, refusal paths, and close/expiry cleanup.

Source

SYS-REQ-035; REQ-133; SYS-REQ-034; epic #250

Priority

High

TestID

TEST-135

TestArtifact

The existing local candidate tests in scripts/tests/test_assisted_benchmark_console.py cover selected fake-VM, fake-Remmina, frame-buffer, and loopback HTTP cases; they do not implement or establish this revised requirement. Verification must include offline transition-barrier and input-abuse tests, an instrumented MCP action receipt/count, credential/log scans, and app-owned storage cleanup. The live test must inject an input while the lock transition is in progress and prove that any accepted setup event is drained before Capture Desktop starts, while concurrent/post-lock events are refused. Record redacted panel/guest identity, state transitions, model/action receipt, and cleanup only. Do not retain or publish screenshots, credentials, raw frames, or event payloads.

CodeRef

Proposed architecture Native-Qualification-Console-Panel-Design. The uncommitted local candidate scripts/assisted_benchmark_console.py and tests scripts/tests/test_assisted_benchmark_console.py on feature/issue-255-native-windows-trial are Remmina-based and do not implement this requirement.

Status

Planned; the local Remmina candidate does not satisfy the revised VS Code panel behavior, and its live launch failed closed before capture. The VS Code panel, input phase lock, complete privacy controls, and full TEST-135 coverage remain unimplemented; no live console or benchmark qualification is claimed.

Clone this wiki locally