Skip to content

SYS REQ 032

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

SYS-REQ-032: Bind each synthetic UI action to its MCP server

Requirement

The live synthetic UI action system shall dispatch an action only through the exact MCP server, tool, and arguments authorized for the current run and VM.

Rationale

The pinned LBA MCP server does not expose desktop-control tools. P1 issue #253 specifies a separate test-only synthetic-UI MCP server. Binding only a tool name and arguments would allow an identically named tool on another server to receive the action.

Fit Criterion

The deterministic grant binds each action to the synthetic-UI server identity and pinned contract digest, canonical tool name and closed-schema arguments, call order, run and policy digests, host, VM UUID, and expiry. The broker rejects server substitution, contract drift, altered/reordered/duplicate actions, wrong target, stale or cross-run grant before dispatch. The model cannot add a server or change the granted call, and the UI-control server does not expose oracle state.

Verification

TEST-125 server-identity, exact-choice, no-retry, contract-drift, and wrong-run/VM fixture cases are implemented through PR #254, merge 61d6e6dd3ff435d6d30c5edc370aea4d61f2236f. The full suite passed 2,231 tests at 97% scripts coverage and all seven PR checks passed. No live UI server, LBA capture, or VM run was performed.

Source

System-Requirements-Specification; epic #250; P1 #253

Priority

High

TestID

TEST-125

TestArtifact

Offline fake clients and stdio MCP fixtures verify exact server-bound candidate routing, expiry, altered decision refusal, one-shot choice consumption on success/failure, and wrong identity/argument denial before dispatch.

CodeRef

Offline multi-server identity binding is implemented in scripts/assisted_benchmark_contract.py, scripts/assisted_benchmark_live_policy.py, and scripts/assisted_benchmark_mcp_router.py through PR #254. A live coordinator and capture-time system integration remain unimplemented.

Status

Offline server-set contract and router are implemented in develop through PR #254; system-level live integration remains unqualified.

Clone this wiki locally