Canonical Vocabulary¶
The terms StoryTangl uses, what they mean, and where they live in the code.
This glossary maps between narratological concepts, engineering metaphors, and implementation names. When design docs, docstrings, or commit messages use these terms, they mean exactly what’s defined here.
Core Graph Primitives¶
Term |
Metaphor |
Definition |
Implementation |
|---|---|---|---|
Entity |
managed object |
Base data structure with identity, labels, tags, and comparison semantics |
|
Registry |
collection |
Indexed collection of entities with criteria-based search |
|
Node |
vertex |
Graph member; may carry state, children, and handler registrations |
|
Edge |
constraint |
Directed link between nodes; carries predicate and effect semantics |
|
Subgraph |
scope boundary |
Named partition of related nodes with source/sink entry points |
|
Graph |
program |
Registry of nodes, edges, and subgraphs with membership and ancestry |
|
Narrative Architecture¶
Term |
Metaphor |
Definition |
Implementation |
|---|---|---|---|
Fabula |
possibility space |
The complete graph of events, characters, and relationships — all possible stories |
|
Episodic process |
execution |
Cursor-driven traversal that collapses fabula into a specific story |
|
Syuzhet |
output trace |
The linear journal of content fragments as experienced by the reader |
|
Block |
instruction |
Traversable structural node that generates content when visited |
|
Scene |
function |
Structural subgraph containing blocks, with local roles and settings |
|
Action |
branch |
Traversable edge representing a player choice between blocks |
|
Actor |
resource |
Non-traversable concept node representing a character |
|
Location |
resource |
Non-traversable concept node representing a place |
|
Role |
dependency slot |
Named placeholder linking a structural node to a required actor |
|
Setting |
dependency slot |
Named placeholder linking a structural node to a required location |
|
Execution Model¶
Term |
Metaphor |
Definition |
Implementation |
|---|---|---|---|
Frame |
stack frame |
Runtime context for a single traversal step: cursor, namespace, phase state |
|
Phase |
compiler pass |
One stage of the resolution pipeline; pure contract on inputs/outputs |
|
Cursor |
program counter |
Current position in the structural graph |
|
Frontier |
enabled set |
Available outgoing edges from the current cursor position |
Computed by |
Namespace |
symbol table |
Scoped mapping of identifiers, layered local → ancestor → domain → global |
|
Ledger |
event log |
Append-only record of patches (state changes) per story instance |
|
Patch |
diff hunk |
Single atomic state change: |
Ledger entries |
Snapshot |
checkpoint |
Serialized graph state at a point in time; replayable with patch log |
|
Provisioning¶
Term |
Metaphor |
Definition |
Implementation |
|---|---|---|---|
Requirement |
package.json line |
Declarative specification of what a dependency edge needs |
|
Offer |
candidate package |
A proposed binding that could satisfy a requirement |
|
Resolver |
package manager |
Walks open dependencies, gathers offers, selects bindings by policy |
|
Provisioner |
provider strategy |
Concrete strategy for generating offers (find, create, template, clone) |
|
Scope group |
search radius |
Set of registries to search for offer candidates, ordered by proximity |
Resolver constructor args |
Binding |
lock-file entry |
Committed assignment of a specific resource to a dependency edge |
Resolved edge with destination |
Narrative debt |
technical debt |
Provisioned concept not yet introduced to the reader via journal |
Bound dependency with no journal coverage |
Narrative credit |
foreshadowing |
Concept introduced in journal before any structural need requires it |
Namespace-published, no dependency yet |
Dispatch and Behavior¶
Term |
Metaphor |
Definition |
Implementation |
|---|---|---|---|
Behavior |
plugin |
Callable registered for a specific task at a specific priority |
|
Task |
hook point |
Named extension point in the pipeline (e.g., |
Task name string |
Priority |
ordering |
Execution order within a task: EARLY → NORMAL → LATE |
|
Layer |
override scope |
Dispatch tier: SYSTEM < APPLICATION < DOMAIN < INSTANCE |
|
Aggregation mode |
fold strategy |
How multiple handler results combine: |
|
Receipt |
audit record |
Record of what a handler did: blame_id, result, timing |
|
on_ / do_** |
event / handler |
Hook pair: |
|
Content and Presentation¶
Term |
Metaphor |
Definition |
Implementation |
|---|---|---|---|
Fragment |
log record |
Atomic unit of journal output: content, type, source reference, metadata |
|
Content fragment |
prose block |
Text content rendered from a structural node |
|
Choice fragment |
menu item |
Available action with caption, availability status, and blocker diagnostics |
|
Media fragment |
asset reference |
Pointer to media content (image, audio) with staging hints |
|
Journal |
narrative log |
Ordered sequence of fragments constituting the syuzhet so far |
|
RIT |
inventory tag |
Resource Inventory Tag — content-addressed reference to a media asset |
|
Render profile |
Accept header |
Client capability declaration guiding fragment → presentation transformation |
Service-layer configuration |
Staging hints |
CSS-like metadata |
Rendering suggestions (orientation, placement, z-index) for media fragments |
|
Templates and Compilation¶
Term |
Metaphor |
Definition |
Implementation |
|---|---|---|---|
World |
source distribution |
Singleton factory holding scripts, templates, and handlers for a story domain |
|
Script |
source code |
YAML (or other format) defining structural and conceptual content |
Authored |
Compiler |
front-end |
Transforms scripts into a world bundle (graph template + registries) |
|
Materializer |
linker |
Instantiates a live story graph from a compiled world bundle |
|
Template |
class definition |
Prototype data for creating new node instances during provisioning |
Template registries |
Vocabulary bank |
word list |
Themed word/phrase collections for procedural prose generation |
Namespace contributors |
Cross-Cutting Concerns¶
Term |
Metaphor |
Definition |
Implementation |
|---|---|---|---|
Singleton |
immutable constant |
Named, immutable entity serializable by reference |
|
Token |
wrapped constant |
Graph-attachable wrapper adding mutable instance state to a singleton |
|
Domain |
library / plugin |
Named scope contributing variables, handlers, and templates |
|
Scope layer |
stack frame |
Local |
Namespace assembly during |
Source / Sink |
entry / exit |
Dominator and post-dominator nodes of a subgraph scope |
Subgraph structural properties |
Metaphor Families¶
The vocabulary above draws on several metaphor families. When explaining the system, prefer the metaphor that fits the audience:
For software engineers: compiler pipeline, package resolution, event sourcing, stack frames. “The resolver is a dependency solver; the ledger is an event log; phases are compiler passes.”
For narratologists: fabula/syuzhet, kernels/satellites, focalization, morphological functions. “The graph is the fabula; the journal is the syuzhet; dependency edges are Chatman’s kernels.”
For game designers: possibility space, state collapse, choice consequences, character casting. “The story starts wide open and narrows through play; roles are cast at runtime; choices close off branches.”
For the philosophically inclined: Platonic forms casting shadows, Kantian noumenal/phenomenal distinction, quantum superposition collapsing through observation. Use sparingly. These are analogies, not implementations. The engine does not do quantum mechanics.