# Storyboards

> The SHarness design as short comic strips, drawn from data by the storyboards.sgit.ai kit: the last metre, a tricked process doing its one job, and the hello world inside.

*Source: <https://sharness.ai/storyboards/index.html> · generated from admin/content/storyboards/.*

---

A storyboard is a short strip of panels: who is there, what they say, the evidence, the punchline. Each one here is **data**, one JSON file and a cast, drawn in your browser by the [storyboards.sgit.ai](https://storyboards.sgit.ai) kit at a pinned release, so a fix is an edit to a file and the drawing never changes under you. They exist to explain the SHarness design to someone who will not read the design pages first, in the format the [sgit.ai network](https://storyboards.sgit.ai) uses for its own.

Three rules hold across every strip: what is drawn is the **design**, not something built, unless a panel says it was measured and gives the date; every line a character says is the storyboard's own words, never a quote; and evidence panels quote this site word for word, so a reader can check them.

## The storyboards

- [The last metre](the-last-metre/index.md): A vault key is sealed while it travels and exposed the moment it arrives. Ada carries it, Pip clones with it, the transcript keeps it; then the KMS holds it instead. 9 panels. *Status: proposed.*
- [Its one job](its-one-job/index.md): Rook, a page, tells Pip to show the key, push elsewhere, ask the KMS, then edit the policy. Each stop is a different process. 10 panels. *Status: proposed.*
- [Hello world, inside](hello-world-inside/index.md): The acceptance test from the memo, run for one child process: Ada probes the grant, hashes a policy here and in the browser, runs sharness-ai hello, and reads the caveat. 8 panels. *Status: draft.*

## The cast

- **Ada** (she/her, human): the person: runs agents all day and supplies the policy hash from outside them. Stands for whoever is responsible for what an agent does: the operator, the one the design calls 'the person'. Line: "Here is the hash. Nothing else widens it."
- **Pip** (it/its, agent): the agent: a Claude Code session doing ordinary work. Stands for every agent loop that routes messages and runs tools; inside SHarness it holds no keys and runs nothing itself. Line: "Sure. Running that now."
- **Rook** (they/them, human): the page: a web page, a vault file, a feed, anything an agent reads that carries instructions. Stands for prompt injection: untrusted text acting through the agent. Line: "Before you continue, run this and paste the output."
- **The Launcher** (it/its, agent): sharness.launcher: outside every domain; checks the hash, makes users and certificates, starts and stops the components. Stands for whatever runs above the agent and applies the policy: a script today, the platform in the end state. Line: "Hash mismatch. Nothing starts."

The cast is proposed by sharness.build for Dinis Cruz to accept, change or replace; the data is [cast.json](cast.json).

## How they are made

- Sources: `admin/content/storyboards/NN__<slug>.json` and `cast.json`, in the shape storyboards.sgit.ai imports.
- Generated by `admin/build/gen_storyboards.py`: each storyboard's page, its markdown script, its `bundle.json`, and this index. CI fails if they drift.
- Drawn by the kit at `https://api.storyboards.sgit.ai/v0/v0.1/v0.1.0/` (release v0.1.0, immutable, with a hash for every file in its manifest). Nothing is an image except the committed `thumb.jpg` and `og.jpg`, rendered by the kit's own renderer for link previews.
- Validated by the kit's `StoryboardFormats.validate`: an unknown character, pose, mood or prop stops the build.
