Machine Passport

Read-only evidence → normalized passport → deterministic role readiness → staged proposal.
WebMCP tools and the human page share the exact same app state.

MACHINE MUTATION = NONE

Machines (synthetic fixtures; imports are clearly labeled)

Selected passport / evidence

Role readiness — deterministic assessment engine (no LLM scores)

Compare — evidence-backed tradeoff for the selected role

Stage & review proposals — app state only, never machine state

Agents stage proposals via the stage_change_proposal WebMCP tool (execution_state = NOT_EXECUTED). Humans Approve for Review / Reject here — that changes review_state only.

Import Machine Passport JSON — untrusted input, strictly validated, rendered as plain text

Agent activity — mutations from stage_change_proposal & human review (read-only tools inspect, never mutate)