# Diagrams and posters
The wiki's large process posters — what each one shows, how they are built from a declarative spec, the visual spec every poster must meet, and how to add one.
- Page:
- Updated: 2026-09-27
- From the Sri Guru Granth Sahib Ji — Knowledge Base wiki. Sri Guru Granth Sahib Ji is quoted verbatim, cited by Ang, and never altered.
---
The wiki has two kinds of diagram. **Mermaid** fences in any page render to accessible SVG at
build time in the brand palette (on GitHub, the same fence renders with GitHub's own theme).
**Posters** are large, step-by-step process pictures that the site turns into a
walkthrough: press *Next* and the picture builds up one step at a time with a caption and a link
to the page that explains it; *Full size* opens a zoomable, pannable view. Every poster is also a
plain image on GitHub.
## The posters
| # | Poster | Shows | Page |
|---|---|---|---|
| 01 | System landscape | people, the three surfaces, the API, the pinned database, the sources, and CI as the only path to production | [Architecture overview](https://docs.gurbanisoul.com/architecture/overview/) |
| 02 | Three repositories and the pins that join them | data → platform → app hand-offs by lock file, one version number | [Three repositories and pins](https://docs.gurbanisoul.com/architecture/three-repositories-and-pins/) |
| 03 | Anatomy of a line record | a PDF page → units → the 23 columns of the `lines` table; what the FTS index reads and its bm25 weights | [Anatomy of a line record](https://docs.gurbanisoul.com/data/line-record/) |
| 04 | Corpus pipeline and gates | `rebuild_all.sh` stage by stage: extraction, reconcile, golden suite, atomic installs, the database layers, the integrity gate, CI on every pull request | [Corpus pipeline and gates](https://docs.gurbanisoul.com/data/pipeline/) |
| 05 | The search waterfall | `do_search` as coded: normalise, mixed script, explicit modes, the twelve auto-mode tiers, the ranking | [Search waterfall](https://docs.gurbanisoul.com/architecture/search-waterfall/) |
| 06 | The fold in three places | the five steps of `roman_norm`, its three homes, the 24,719 golden vectors | [The Roman fold](https://docs.gurbanisoul.com/search/the-roman-fold/) |
| 07 | The verification engine | normalise, candidates, scoring, the verdict ladder with the code's thresholds, the Ang modifier | [Verification engine](https://docs.gurbanisoul.com/search/verification-engine/) |
| 08 | Request lifecycle | `GET /api/ang/712` from the browser to SQLite and back, in code order | [Request lifecycle](https://docs.gurbanisoul.com/architecture/request-lifecycle/) |
| 09 | Bounded contexts and the gateway | five contexts, module slicing, routing generated from the code, the proofs | [Bounded contexts and the gateway](https://docs.gurbanisoul.com/architecture/bounded-contexts-and-gateway/) |
| 10 | The CI gates map | every workflow and job on a pull request, what the rulesets require, the deploy chains, the schedules | [CI gates](https://docs.gurbanisoul.com/process/ci-gates/) |
| 11 | The delivery pipeline | branch → PR → staging → release PR → production → tag → the app follows; rollback; the watchers | [Branching & delivery flow](https://docs.gurbanisoul.com/process/branching/) |
| 12 | iOS release and integrity | vendor sync, one number, the archive's gates, the ledger, the launch-integrity and bookmarks ladders | [Database pair and launch integrity](https://docs.gurbanisoul.com/ios/db-pair-and-launch-integrity/) |
| 13 | The structure of the Granth | Angs 1–1430 as one bar: the opening, the thirty-one raags, the closing sections, the Vaars, the voices — every number from the pinned database | [The structure](https://docs.gurbanisoul.com/scripture/structure/) |
All thirteen posters of the plan are in place.
## How a poster is made
A poster is **generated from a small declarative spec**, not drawn by hand:
`docs-site/posters/NN-slug.mjs` lists the nodes (with a kind, a position and text), the edges,
the groups and the steps; the poster kit turns that into the SVG and the steps sidecar under
`docs/diagrams/posters/`. The kit (`docs-site/posters/kit.mjs`) draws on a 1200-px canvas for the ~630 px the page gives a
poster on a 1280-px screen, so its smallest text shows at 13 px or more, and it routes every line at
right angles around the boxes. The generated files are committed so GitHub and the
`docs_check` gate can read them; CI fails if a committed poster differs from its spec
(`node scripts/build-posters.mjs --check`).
```bash
cd docs-site
node scripts/build-posters.mjs # (re)generate every poster
node scripts/build-posters.mjs --check # what CI runs
```
Node kinds and what they mean — the legend of every poster uses the same words:
| Kind | Looks | Means |
|---|---|---|
| `box` | cream, gold border | a component in this project |
| `store` | kraft cylinder | data at rest |
| `actor` | maroon pill | a person |
| `gate` | red block | a gate: fails the build or the deploy |
| `pin` | dashed grey box | a pin: a reviewed lock file |
| `ext` | blue-bordered box | an external system |
| `good` | green block | a proven, verified state |
| `note` | plain box with a gold bar | an explanation |
| `fail` | red-bordered box | an outcome that stops here |
The legend also names the two line styles it uses: solid for a flow of data or control,
dashed for "reads, pins or derives from".
## The spec every poster meets
Enforced by `tools/docs_check.py` on every pull request:
- `viewBox="0 0 1200 H"` and `data-kit="2"` (built by the kit), `width="100%"`, no fixed
height; `role="img"` with a `
` (the alt text) and a `` of at least 40 characters.
- Colours only from `docs/brand/tokens.json`, as CSS custom properties with brand fallbacks
(correct as a plain image, dark-themed when inlined). Brand red never appears; gold is a fill,
never text. Text is at least 25 px (13 px as shown); Source Serif 4 for
the title, the system sans for labels. Every text-on-fill pair is at least 4.5:1 in
both themes, and text on a saturated fill is white by day and ink by night.
- A title block, a legend, a version stamp (`vX.Y.Z · verified YYYY-MM-DD · `) and a
footer `Source of truth: ` naming files that exist.
- Every step is a `` group, and the `.steps.json` sidecar lists the
same ids with a title, a caption and a link.
- **No scripture.** Posters carry technical tokens only (a raag's name, a section's name — never a verse).
- Every poster is referenced by at least one page, with alt text.
## Adding a poster
The steps, and what kit 2 checks before it will build a poster, are on
[Adding a poster](https://docs.gurbanisoul.com/contributing/adding-a-poster/).