# The Chain Room: The RiskMandate Workflow As A Playable Simulation — Simulate First, Then Support

**version** v0.33.66
**date** 27 August 2026
**from** Human (project lead)
**to** Engineering, Architecture, the PKI/registry team, **the RiskMandate team**

**type** Dev brief — the room this time, and why the last brief's refusal is reversed

*The third 27 August brief, and the course-correction of [v0.33.65](v0.33.65__dev-brief__the-doors-page-a-computed-state-map-where-the-build-breaks-when-a-door-opens.md), which ported the newsroom's state map and declined its room. The project lead's response: the refusal missed the key requirement. **The point is not to publish this estate's state — it is to create the core elements for the RiskMandate.ai workflows**, and for that the room and the game-like environment are not decoration, they are the deliverable: "it is the workflows and multiple states / actions that we want to simulate (first) then support." The doors page stands — it answers a different question — and this brief builds what was actually asked for.*

---

## What This Is

**One playable room at `/room/`, simulating the full RiskMandate workflow end to end** — `reality → twin → facts → finding ┃ risks → decisions → monitoring` — with the product boundary drawn on the floor, a work item that travels the chain, and every word derived at build time from the same files the pipeline runs on. The left half of the room is **real**: this estate's measured library entries, its signed mandate, its computed excess-authority row. The right half is **synthetic and says so on every surface**: an illustrative accepted-risk instance in the shape of RiskMandate's own positioning card — title, risk band, owner, blast radius, expiry, reviewer, and accepted conditions each carrying an observed status — marked per this estate's simulation rules, which put the marker *in the filename, the headers and beside every quote, because export is where markers die*. **Simulate first, then support**: the room is built against fixtures so the workflow's states and actions exist as walkable, explainable things before any live instance does — which is how this estate built its register (ten fixtures taught the shape; one real record made the flag evidence) and is the same move at the workflow layer. Two audiences, in the project lead's words: *"a great way to explain what we do to new users/customers"* and *"visual representations of what the agents are doing."* The gates from v0.33.65 carry over and gain two: the route drawn through the stations must equal the declared chain or the build fails, and **the instance fixture must store references, never copies** — the GM3 rule, enforced structurally on the demo itself, because a demo that violates the architecture it demonstrates teaches the violation.

## 1 · What Changed Since v0.33.65, Stated Honestly

v0.33.65 declined the room on the argument that a room over an estate where nothing has passed its own gates would make it look more finished than it is. That argument was correct **for the question it was answering** — *how should pki.sgit.ai publish its own state* — and wrong about the assignment. The assignment, restated from the memo:

> *"You are still missing the key requirement and idea which is to create the core elements for making the RiskMandate.ai workflows… the room and visual representation (in a game like UX and visual environment) is absolutely critical here, since it is the workflows and multiple states / actions that we want to simulate (first) then support."*

Two different artefacts, then, and both stand:

| | The doors page (v0.33.65) | The chain room (this brief) |
|---|---|---|
| Question | What has this estate passed? | What does the workflow **look like**, end to end? |
| Audience | This estate, and its reviewers | **New users and customers**, and anyone watching agents work |
| Honesty posture | Bleak on purpose | Aspirational on purpose — and labelled: the right half is simulation |
| Data | All real, all computed | Left half real, right half a marked fixture |

*Site-agent note:* the resolution of the two postures is the estate's own fixture discipline. The register was not delayed until it was trustworthy; it shipped as ten labelled fixtures and one real record, and the labelling is what made it honest. The room does the same at the workflow layer: **the simulation is not a compromise on the way to the product — it is how the product's shape gets taught, tested and criticised before it exists.**

## 2 · The Workflow, Read Off The Positioning

RiskMandate's own card (riskmandate.ai, front page, marked *illustrative* — their fixture discipline matches ours) is the end state, and every field on it resolves to a primitive this estate already holds:

| On the card | Is | From (v0.33.64 primitives) |
|---|---|---|
| *Payments agent production access* | The subject: an agent, in an environment | agent identity + environment identity |
| *RISK 64 · MEDIUM* | The upward interpretation, at an altitude, in its language | derived from the **finding**; RiskMandate's half |
| *OWNER: VP, AI Platform* | **The named acceptor** — the field that is `null` on every excess row this side of the line | decision |
| *BLAST RADIUS: $1.4M / quarter* | The finding priced at the business altitude | finding, translated |
| *EXPIRES: 29 days* | **The interval** — without one it is a grant under another name | decision |
| *REVIEWER: Security + Legal* | Second-party recognition — a policy decision, not a computation | decision |
| *ACCEPTED CONDITIONS · observed, 4/4 holding* | **Mandate constraints, each monitored by evidence** | mandate + facts/evidence, continuing after the decision |

The last row is the deep one and the reason this workflow needs the registry at all. *Observed, 4/4 holding* is a claim that somebody keeps checking — each condition is a mandate-shaped constraint whose compliance is a **fact backed by evidence with an `as_of`**. The card is not a certificate; it is a *live join* between a decision and a stream of measurements. That is the two products composing: the decision and its price live on their side; the constraints, the measurements and the deltas live on ours; and the reference — never a copy — is what crosses.

## 3 · The Room

Eight stations, laid boustrophedon, with **the boundary drawn on the floor** between station 5 and station 6 — the GM3 line, as architecture a visitor walks past rather than a diagram beside the text.

```
  1 REALITY          the environment as installed — enters the room, is not a desk
  2 THE MEASURER     runs measure.py inside the twin; floor not census, on its face
  3 THE COUNTER      the registry: registers, holds statements, HAS NO OPINION
  4 THE ISSUER       authors the mandate: allow-list stored, prohibitions rendered
  5 THE DELTA DESK   computes excess/shortfall on approach — A DESK WITH NO DRAWERS,
                     because a delta is computed, never stored
  ━━━━━━━━━━━━━━━ THE BOUNDARY — references cross; copies bounce; ━━━━━━━━━━━━━━━
  ━━━━━━━━━━━━━━━ personal data never crosses left                ━━━━━━━━━━━━━━━
  6 THE RISK DESK    derives risk at the business altitude, in its language   [synthetic]
  7 THE ACCEPTANCE   the card: owner, blast radius, expiry, reviewer          [synthetic]
  8 THE MONITOR      conditions observed and holding; the clock runs to expiry [synthetic]
                     └── expiry loops the item back to the delta desk: re-measure
```

**Game details that are rules, not decoration.** Each is an estate rule made walkable, which is the test for whether a detail earns its place:

- **The delta desk has no drawers.** Ask it what it holds: *"Nothing. I compute when you arrive."* (Computed, never stored.)
- **The counter answers every question with documents.** Ask it whether the agent should be trusted: *"I have no opinion. Here are 23 statements; the context is yours."* (v0.33.64 §1.)
- **The boundary bounces copies.** The play-through shows a reference crossing; a copy visibly fails to. (GM3, animated.)
- **The acceptor's name appears only right of the line.** Left of it, the excess row renders `acceptor: none` — the handover in one image.
- **The monitor's clock is real arithmetic**: days-to-expiry computed from the fixture's interval against build `as_of`, never typed.

**Four verbs**, ours, named after the four questions a reader of *this* system has: **LOOK** (what is this station) · **ASK** (what are you holding right now) · **DOOR** (what must be true before work moves past you) · **NEVER** (what you refuse even under pressure — the boundary's NEVER is *personal data into the library, ever*).

**The play-through.** One button walks the token through the eight stations. At each stop: a derived caption, and a link to the raw artefact it came from — the real library entry, the real signed mandate, the real excess row, then the marked fixture. Reduced-motion gets a stepper; no-JS gets the full transcript inline. The worked item is the estate's own case (the agent, its container, mandate v2, the 41/1/40 row) flowing into a synthetic acceptance modelled on the positioning card's *shape* — its fields, not its numbers copied.

## 4 · The Fixture, And Its Markers

`packs/grant-and-mandate/instance-fixture.synthetic.json` — the marker in the filename per the simulation rules. It is the **instance** of chapter 12's contract, built to be structurally checkable:

- `synthetic: true` and an `_illustrative` header, echoed beside every rendered value.
- **References, never copies**: it points at the library entry and mandate by identifier; it embeds no grant nodes. **The gate parses it and fails the build if a copy appears.**
- **A named acceptor** (a role title, as the positioning card uses) **and an interval** — the two fields the pack's standard requires of a decision.
- Conditions each carrying `observed_as_of` — so *n/n holding* is computed from evidence dates, never typed.

## 5 · The Gates

All of v0.33.65's, plus:

1. **The route gate** (the newsroom's check 13, transplanted): the station order drawn in the SVG must equal the declared chain `reality → twin → facts → finding → risks → decisions → monitoring`, or the build fails — the room may not draw a route through a workflow that does not exist.
2. **The boundary gate**: the instance fixture stores references only. A copied node anywhere in it fails the build, with GM3 cited in the error.
3. **The decision gate**: the fixture's acceptance carries a named acceptor and an interval, or the build fails — a decision missing either is the thing the pack says is not a decision.
4. **The marker gate**: every synthetic value rendered into the room carries its marker in the adjacent markup; the generator greps its own output.
5. **No literal counts** in the template, as everywhere since v0.1.37.

## 6 · Simulate First, Then Support

The sequence, so the room is a roadmap and not only an explainer:

| Phase | The right half of the room is | The join is |
|---|---|---|
| **1 — now** | The marked fixture | Static: fixture references real library ids |
| **2** | A second fixture, generated by replaying a real session's actions against the conditions | Computed: *n/n holding* from real evidence, synthetic decision |
| **3 — support** | A live instance, when RiskMandate has one | The reference crossing the boundary is a fetch, and the monitor's evidence is the registry's |

Phase 2 is the *"visual representations of what the agents are doing"* half of the memo, and it needs nothing from RiskMandate: this estate already logs enough to replay a session against four conditions. Phase 3 is theirs to switch on, and the room's contract — references only, markers on everything synthetic — is written so that the switch changes data, not architecture.

## 7 · What This Does Not Claim

- **The right half is invented, and labelled.** No risk has been derived, priced, accepted or monitored by anybody. The room teaches the shape; it is not evidence the shape works.
- **The genre rule holds** — grammar, not work: original figures, this site's palette, our verbs, no game's art or wording.
- **The inherited bets stay bets**: one implementation of the genre exists, unread by users, untested with screen readers. The room adds a second data point, not a validation.
- **The doors page is not superseded.** Nine of twelve doors are still shut; the room does not open any of them. It makes one of them — *nobody has ever accepted an exposure* — explainable to the person who might.

---

## Honest Tensions

| Tension | Note |
|---|---|
| A brief reversing a day-old brief | On a changed requirement, not a changed mind — and recorded as such rather than rewritten. The doors page answers its question; this answers the assignment |
| An aspirational surface on an estate that just shipped a bleak one | Resolved by labelling, which is the estate's whole method: fixtures taught the register; a marked simulation teaches the workflow |
| The card's shape is another product's positioning | The shape is the contract the two products share (ch 12); the numbers are not copied, and the fixture is ours |
| A game-like surface can overclaim by charm | The gates bound what it can say; the markers bound what it can imply. What remains is §7's residue: a room this legible will still *feel* more real than a fixture is |

---

*CC BY 4.0. Sources: the project lead's memo of 27 August 2026 and riskmandate.ai's front-page positioning card (marked illustrative); newsroom.sgit.ai brief 10 for the genre mechanics, CC BY 4.0 with attribution; this repository at v0.1.41.*
