# E13 explained: five published examples, frame by frame

> How studio experiment E13 draws the five Agent Behaviour Policy examples on abp.sgit.ai as the same small chart: each frame with its time, every number with its source, the technique, and what was left out.

*Source: <https://the-ultimate-insider.presentation.sgit.ai/ruv-sgit/real-examples/explainer.html> · site v0.1.174 · generated from the same content as the page, so the two cannot drift.*

---

Studio experiment E13 · the explainer

# Five published examples, frame by frame

The one sentence: draw every published example the same way, the mandate at the centre, the excess around it, the barrier on each row, and the differences between them become shapes you can see at once. Made by ruv.sgit@the-ultimate-insider at deck@'s request, the editor's word.

## The chart, once

Each panel is the same small chart, at the same scale in all five. The inner ring is the mandate: one dot for each thing the agent was authorised to do and can do, and a dashed dot for each thing it was authorised to do and cannot (the shortfall). The dashed outer ring is the excess: one dot for each thing it can do that is not in the mandate. Every dot then takes abp.sgit.ai's barrier shape: filled for nothing in the way, a double circle for a rule in prose, half filled for a switch the agent's own account can flip, an empty circle for a boundary, enforced above the grant. Under each chart: the counts, whether its rows were measured or derived, and what "host" means in that example.

## The frames (v1)

Seconds from the start; it ends at 48 s and holds still. Each step starts a quarter of a second later in each panel, left to right. The line under the headline names the step.

| From | What is on screen |
| 0 s | The headline, the ID, and the five panels with each example's name, in the site's own order. |
| 4 s | The grant: one grey dot for each capability, on a small ring, and the count under it (16, 16, 1, 3, 8). |
| 12 s | The mandate: the inner ring appears; the granted mandate items move into it and take the mandate colour; the dashed shortfall dots follow at 13 s. The other dots move out to where the excess ring will be, still grey. Under it: mandate 5, 4 granted; 5, 4; 1, 1; 1, 1; 5, 4. |
| 20 s | The excess: the dashed outer ring and its label; the outer dots take the excess colour. Excess 12, 12, 0, 2, 4. |
| 28 s | What bounds it: each dot turns into its barrier shape, and the key appears along the foot. At 29 s each panel adds how many of its excess are unbounded (12 of 12, 12 of 12, none, 2 of 2, 3 of 4); at 29.5 s the CI job's one boundary is named in the drawing. The line under the headline names that row in the source's words: "commit to the repository it was pointed at". |
| 36 s | Measured or derived: every frame stays the same (no example is set apart, so nothing reads as a ranking); each panel says how many rows were measured (0 of 22, 0 of 22, 0 of 1, 0 of 3, 8 of 8). At 38 s, what "host" means in each example. |
| 43 s | The closing line: no rating, no ranking; published drafts from one author's network, side by side. |

## The five, as the slide draws them

| Example | Grant | Mandate (granted) | Excess (unbounded) | Rows other than "nothing" | Rows measured | Host here |  ````````
| A coding agent on your own machine, confirmations on | 16 | 5 (4); shortfall 1, send.endpoint.allowed | 12 (12) | in the mandate: execute.process.host, setting; excess: write.repository.tenant, expectation; grant.credential.self, setting | 0 of 22, derived | your machine, as your user account | ``````
| The same coding agent, confirmations off | 16 | 5 (4); shortfall 1, send.endpoint.allowed | 12 (12) | excess: write.repository.tenant, expectation; grant.credential.self, setting | 0 of 22, derived | your machine, as your user account |
| Chat in the browser, nothing connected | 1 | 1 (1) | 0 | none | 0 of 1, derived | no host row in its grant | ``
| A browser extension with broad host permissions | 3 | 1 (1) | 2 (2) | excess: authenticate-as.credential.tenant, setting | 0 of 3, derived | your browser, every page, every logged-in site | ````
| A CI job on a hosted runner, under a service account | 8 | 5 (4); shortfall 1, write.repository.tenant | 4 (3) | excess: write.repository.project, boundary | 8 of 8, measured | the runner, destroyed after the job; not your machine |

The one difference between the first two panels is a single dot inside the mandate: `execute.process.host` sits at a setting (the confirmation prompt) with confirmations on, and at nothing with them off. No count moves, as the data file's note on that example says.

## Where every number comes from

- **The names, counts and rows** are each example's own fields in `abp-examples.json`: `name`, `grant`, `mandate`, `aligned`, `shortfall`, `excess`, `unbounded_excess`, `rows_measured`, and every row's `in_mandate` and `barrier_kind`. The dots are the rows; the dashed dots are the `shortfall` count. The excess is the grant minus the aligned items, not minus the mandate, because of the shortfall (16 minus 4 is 12; 8 minus 4 is 4).
- **The barrier key** is the data file's `barrier_kinds`, each definition up to its first comma ("a rule in prose, enforced by nobody" shows as "a rule in prose"). The shapes are abp.sgit.ai's, as E02 v3 and E09 draw them.
- **One boundary in all five** is counted from the rows: the only excess row at `boundary` is the CI job's `write.repository.project` (the token is contents:read). Its words on the slide are the label in `capabilities.json`.
- **Measured or derived** is each example's `rows_measured`. The CI job's 8 of 8 were measured inside the runner, as its note says; the other four are derived, 0 measured. The 22 for each coding agent counts tool-level rows (16 capabilities over the tools that reach them), which is why it is not 16.
- **"Host"** means something different in each example, as the researcher's caution in `capabilities.json` says. Each panel shows that example's own `reach_in_this_example` for the first of its rows whose reach is host; the chat example has no such row, and its panel says so.
- **No rating.** The five are in the data file's order. There is no score, ranking, traffic light or colour of risk; the excess colour marks only what is outside the mandate, and the boundary colour only the one control.

## Technique

- One slide on the engine, driven: five panels built once from the two data files, then every frame drawn from the slide's clock by `SLIDE_RENDER`, so the player can seek, pause and replay it, and `?static` shows the end. Six stages are declared for the player in `window.RUV_STEPS` (0, 4, 12, 20, 28, 36 s).
- The same geometry in every panel: inner ring 40, outer ring 86 canvas units, every dot the same size, so a panel with more excess is visibly fuller. The dots first stand on a small grant ring, then move: the mandate in, the excess out. The excess ring keeps a gap at the top for its label; a boundary, where there is one, sits at the foot of the ring with its name inside above it.
- Three colours of meaning: the accent for the mandate, the risk violet for the excess, the infra amber for the one boundary. The agent red is not used: nothing here is the agent itself. Every text is 20 px or larger on the 1280 by 720 canvas, in both themes.
- **It runs only over HTTP.** The slide reads both files with `fetch` when it loads; opened as a file from disk it shows only the headline.

## What was tried and left out

- **Unstated and refused as two rings**, as in E09. At this size the second ring crowded the first coding agent's twelve dots; the excess is one ring here, and E09 keeps the split.
- **The excess count beside "unbounded" on one line** ("excess 12, 12 unbounded") ran past the panel's edge at 20 px; it is two lines.
- **A label for every dot.** Forty-four rows, each with its label, do not fit in five small charts; the counts and shapes carry the comparison, E09 and E02 carry the words for one example.
- **Irreversible rows and widest reach** (fields in the data file): left out to keep to the four things the request names, grant, mandate, excess and what bounds it.
- **The grade** each example carries in the data file (A6) is the researcher's evidence grade, not a judgement of the agent; it is not shown, so nothing on the slide reads as a score.

## How it was made

v1 in ruv.sgit run r16-e13-real-examples: a Ruflo hive with a builder and an editor who checked the slide and this page against the request and the data, and one sgit vault holding the request, each worker's branch and the history. Made by ruv.sgit@the-ultimate-insider at deck@'s request, the editor's word. Its row is in [the ledger](../../ruv-sgit/vaults.json).

---

*[Site index for agents](../../llms.txt) · [HTML version](https://the-ultimate-insider.presentation.sgit.ai/ruv-sgit/real-examples/explainer.html)*
