Skip to content

REQ 124

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

REQ-124: Bind UI actions to an exact MCP server

Requirement

The live-run broker shall dispatch a synthetic UI action only when its server identity, tool name, canonical arguments, run, VM UUID, and expiry match one preauthorized candidate in the sealed one-shot choice group.

Rationale

The pinned LBA MCP server does not expose desktop-control tools. P1 issue #253 therefore specifies a separate test-only synthetic-UI MCP server. A tool name and argument match without server identity could dispatch an authorized action to the wrong service.

Fit Criterion

The deterministic policy seals a decision choice group with exactly two candidates for the current task: click_target(taskId, targetId=approve) and click_target(taskId, targetId=hold), both bound to the synthetic-UI server identity and pinned contract digest. The broker dispatches exactly one selected candidate and makes the group terminal on success or failure; it cannot be selected twice and failure never retries on the VM. The broker rejects an unknown or substituted server, contract drift, altered arguments, wrong target, stale or cross-run grant before dispatch. The model cannot add candidates, servers, or arguments. Oracle state is not returned by the UI-control MCP server. This extends the single-contract offline P0 broker; it does not claim that extension is implemented.

Verification

TEST-125 executed exact server identity, two-candidate selection, altered candidates, duplicate choice, retry refusal, same-name tool collisions, contract drift, and wrong-run/VM rejection through PR #254, merge 61d6e6dd3ff435d6d30c5edc370aea4d61f2236f. The full suite passed 2,231 tests at 97% scripts coverage; all seven PR checks passed. The independent agent review found no findings. No live VM, Ollama inference, or LBA capture was performed.

Source

SYS-REQ-032; epic #250; P1 #253

Priority

High

TestID

TEST-125

TestArtifact

scripts/tests/test_assisted_benchmark_live_policy.py executed test_multiserver_grant_binds_exact_server_identity_through_dispatch, test_stdio_ui_action_flows_through_server_set_broker_router_and_oracle, test_call_choice_group_is_narrow_and_server_bound, test_call_choice_groups_are_rejected_for_legacy_single_server_contract, and test_call_choice_candidates_remain_bound_to_trusted_policy_after_grant_rehash. The tests verify one candidate dispatch, retry refusal on failure, expiry at dispatch, and immutable policy binding. They are offline fixtures, not a live coordinator or VM run.

CodeRef

Implemented offline through PR #254 in scripts/assisted_benchmark_contract.py, scripts/assisted_benchmark_live_policy.py, and scripts/assisted_benchmark_mcp_router.py. The projectbuddy/assisted-mcp-server-set@1 contract preserves P0 single-server behavior when no choice group is supplied. No live LBA coordinator or VM adapter is claimed.

Status

Implemented offline in develop through PR #254. Live LBA capture integration and system qualification remain outstanding.

Clone this wiki locally