# T04 — Views per audience, and projections regenerated from a shipped prompt

> Rendered from .claude/briefs/T04-views-and-projections.md in the repository. The text below is that file.
> Source: https://riskmandate.ai/admin/work/T04/ · noindex · written by scripts/site/build-admin.mjs

**From:** the graph brief §1 items 5–6, §3, §4 item 6. **Size:** several days; do it after
T01–T03. **Touches:** `scripts/site/build-abp-vault.mjs`, `site/vaults/*/data/views/`,
`site/vaults/*/prompts/`, `site/vaults/*/projections/`, `site/vaults/_app/index.html`.

## The task
**Amended 16 September** (`direction__consequences-assets-and-the-vault-as-a-website.md` §4): the
reading app gains **Who are you?** directly under *Start here* — executive, technical, risk and
governance, buyer, the agent itself — and the first four views ship with the MVP vault rather
than after it. Each view also decides which consequences (T11) that audience is shown.

Eight audiences: CEO, CFO, CTO, investor, buyer, operator, engineer, project manager. Each is a
**view**: an authored filter over the graph saying which behaviours, which counts, which evidence
it shows, and what it hides and why. Each has a **prompt** (`prompts/<audience>.md`) that turns
the graph and the evidence into that audience's prose, and a **projection**
(`projections/<audience>.md`) generated by `prompts/build.sh`, dated, with the prompt's hash in
its footer. The build refuses to write a projection whose prompt hash does not match the prompt
beside it, the same discipline the delta has. Shipping the prompt and the script is a selling
point: the customer can regenerate it.

## Constraints
- Views and prompts are authored; everything else is derived. Say which in every file's header.
- The projection is text a stakeholder reads, so every rule of the site applies to it: no score,
  no verdict, no conformity language, the ABP never called *the policy*. The prompt must say so.
- The build must run without a model credential (it verifies hashes and refuses stale
  projections); generating a projection is a separate, explicit step that records model, version
  and date in the projection's footer.
- Start with two audiences (operator and buyer, because the vault app already speaks to them)
  and one vault; generalise only when the shape holds.
- No model identifiers in anything committed other than the projection footers, which record
  what produced them as data.

## Done means
- Two views, two prompts, two projections in one vault; the build refuses a stale one; the
  renderer shows *for the operator* / *for the buyer* as tabs or a picker.
- An implementation brief in `docs/briefs/` saying what held and what did not.
