A cosmos of cinema you travel by thread. Every connection you pull on — even an interpretive one — is a sourced, cited, traversable edge, not a fact a model made up. The spine is one rule: everything deterministic — the graph, the safety gate, the lineage trace — is pure code and authoritative. Claude is reserved for the two things code can't do: turning a question into a precise query, and turning a cited payload into prose. These five diagrams trace exactly where that line falls.
When you ask Yarns something, Claude turns the question into a precise graph query — and that's the last word it gets until the end. The query passes a read-only gate, the graph executes it and returns a cited payload, and only then does Claude write the prose from that payload. The facts come from the graph; the model never sources them itself. Most of the time there's no model at all — film cards are pre-written and served straight from disk.
The model touches the loop at exactly two points — question → query and payload → prose — and the read-only gate sits between them and the database so a proposed query can never write. Everything in the middle is deterministic graph work. Open a film card and usually there's no model at all: the words were written once and stored.
Claude proposes a query; it does not get to execute one. Every proposed query runs a gauntlet of pure-Python checks first — blank the string literals, catch smuggled comments, scan for any write token, reject multiple statements, verify every label against the real schema. Pass all five and it runs read-only. Fail any one and it's refused before it touches the database. The adversarial battery that proves it is CI-blocking and must pass 100%.
This is the line between "an AI with database access" and a safe one. The model can propose anything; the gate is pure Python, deterministic, and the only thing that can hand a query to the engine — and only ever a read. The battery of attacks it must block lives in CI and is green or the build fails.
Two kinds of connection live in the graph. A fact edge — shared actor, sequel-of, same director — is structural and checkable. An interpretation edge — a shared archetype, an echoed arc — is the interesting kind, and the one a model loves to fabricate. So every interpretation edge must carry a rationale, a confidence, and a citation, and the card shows it as "a reading · 82%" — never as fact. No source, no edge.
This is the whole moat. A model asked for parallels will produce confident fiction; Yarns only lets an interpretation into the graph if it can point at a source, and it always wears the "a reading" label so it's never confused with a structural fact. No source, no edge.
Every synopsis, saga, crucial scene, fun fact, actor bio, and character card is generated once, offline, grounded in the committed corpus — then stored as compressed bundles right in the repo. At serve time the app just reads them from disk: a film card opens with zero network calls and zero token spend. The deployed app needs no model at runtime. The only place a model lights up live is the optional natural-language ask — and only with a key, capped at three asks per visitor a day.
Determinism here isn't only reliability — it's economics and speed. Because the voice content is generated once and stored, the live cosmos is free to run and instant to open, and the only live model call is an opt-in ask behind a hard per-visitor cap.
Underneath the spinning poster-globes is a single embedded graph: universes, films, series, actors, characters, and archetypes as first-class nodes, wired by fact and interpretation edges. It's built from human-editable seed YAML at boot and opened read-only to serve. So "click an actor for every face they've worn" or "click a character for their thread" is a graph traversal, not a guess — and the rabbit holes go deep: 3,280 actors and 3,958 characters are nodes you can fall into, 1,385 of them in the MCU alone.
The graph is the source of truth and the reason the connections are real: a face, a thread, a shared archetype is a traversal over typed nodes, not a sentence a model improvised. Edit the cosmos by editing YAML and rebuilding — version-controlled, reviewable, sourced.