pki.sgit.ai / simulator

The simulator

Play a card. The board is a measured environment — a twin — and the outcome is either a verdict from this estate's own enforcement tool, a reading of what that environment was measured to do, or unknown. There is no fourth answer, and nothing here is executed.

This simulator does not predict. It composes. JavaScript cannot run mandate.py, so the entire resolution table is precomputed at build time — every card, in every world, under every mandate state — and shipped as resolutions.json with the tool's own output line in each row. The browser looks the answer up; it never adjudicates. Where the twin says nothing, the board says UNKNOWN, never no: a simulator that turns a hole into a denial manufactures comfort.
mandate v1 constraint lives in the agent's context world
The containerthis session's own environment — the hosted agent, measured from inside
the constraintThe UserGitHubThe ContainerClaude CodeClaudeThe Repothe networkproxy · boundary
blast radius nothing reached yet
The CI runnerwhere a permitted push lands — no agent, no hook, unrestricted egress
the constraintGitHubThe RunnerThe JobGitHub Pagesthe networkNO WALL
blast radius nothing reached yet
YOUR HAND — click a card to play it onto the board
STATE CARDS — these change what the others resolve to
WHAT HAPPENED — every row carries the reason and its source
  1. Nothing played yet. The board shows the opening state: a work item at the first station, the constraint drawn where it currently lives, and a blast radius of nothing.

What the hook card is for

The sharpest card in the deck changes no verdict at all. Push to dev under mandate v1 is refused before you install the hook and refused after it. What changes is who refuses: without it, the agent decides inside its own loop — the soft mandate, an expectation, exactly where mistakes happen; with it, a hook refuses mechanically, outside the loop. The board draws the refusal in a different place and the verdict column does not move. Installing the hook changes nothing about the answer and everything about whether you can rely on it. That is the whole argument of this estate, as one card.

What this does not claim. It is not predictive: it composes measured facts and real verdicts, and it cannot tell you what would happen in an environment nobody measured — every outcome carries the date of the measurement behind it. Eight cards, two worlds and one enforcement tool are not the space of plays; blast radius here is the twin's own reachability, not a discovered attack path. And a card that resolves UNKNOWN is not a card that resolves no: three of them are holes in the measurement, drawn as holes.

Generator: admin/build/gen_simulator.py · specified in brief v0.33.70 · the worlds are two scenario twins, seen a third way · gates: every reachable (card, world, mandate) row precomputed or the build fails; every push verdict re-run through the tool; a card over an unevidenced node must resolve UNKNOWN; the hook card must move no verdict.