Repository navigation
REQ 134
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.
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.
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.
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.
SYS-REQ-035; REQ-133; SYS-REQ-034; epic #250
High
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.
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.
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.