Glossary
The project's terms of art, each with a stable anchor. Docstrings and guides link here; each entry links onward to the page that treats its subject in depth.
Workdir
The per-module working directory (<module>.forge/ by default) that convert
creates and every stage reads and writes — source copy, page renders, stage
caches, and the four consumer artifacts. The layout is a contract; see
the workdir and artifacts.
Pipeline stage
One step of preprocess → survey → content → monsters → assemble, each
tracked with its own status and token usage in the workdir's run.json.
geometry is tracked as a stage but has no independent run — it is
recomputed inside every assembly. See
architecture.
Stage cache
An extraction stage's validated output, written under stages/ in the
workdir (survey.json, areas.<dungeon>.<level>.json, monsters.json,
statblocks.json). Caches are what make assembly pure: the model is consulted
once per extraction stage, and everything downstream is a deterministic
function of these files. Their models live in
osrforge.contracts.stages.
Frozen stage-cache schema
The stage caches' wire formats are pinned (each cache carries a
schema_version), and downstream code must tolerate everything a pinned
schema does not forbid — an empty monster name or an empty treasure string is
handled and flagged, never crashed on, because
regenerating a cache costs model spend the consumer already paid.
Assembly purity
The core guarantee: adventure.json, report.json, and the previews are a
deterministic function of the cached stage outputs plus overrides.yaml.
Correcting a draft never re-rolls the model. Stated for consumers on
the home page; its implementation consequences run through
architecture.
The correction loop
The read-report → edit-overrides.yaml → re-assemble → check cycle that
takes a draft to publishable, entirely model-free. See
the correction loop.
Override
One entry in overrides.yaml, the human correction channel: monster remaps,
stat-block patches, per-area field replacement, geometry, and town/module
metadata, each carrying a reason. Every entry must take effect or assembly
fails — no silent no-ops in a correction file. See
the correction loop.
Flag
One entry in report.json's enumerated per-area vocabulary recording what
extraction or assembly was unsure about (low_confidence,
connection_ambiguous, monster_unresolved, …). Flags describe the built
draft: an override that replaces an input suppresses the flags that input
would have raised, while extraction facts persist. See
badge vocabularies.
Finding
One entry in the playability lint's vocabulary, produced by check and
merged into report.json — errors break the correction loop's exit code,
warnings record accepted decisions. See
badge vocabularies and
the correction loop.
Tolerate-and-flag
The pipeline's posture toward imperfect input it cannot reject: accept it, build the best draft the input supports, and record the doubt as a flag a human can act on. Crashing is reserved for programmer misuse and corrupted workdirs; module weirdness is data, not an error.
Best-effort fallback
The unresolved_fallback: best-effort setting's behavior where extraction
came up empty: flagged level-band monster stand-ins and unguarded-treasure
rolls keep the draft playable, while omit leaves the gap. See
settings and rerun.
Knob
One field of ConversionSettings —
the deterministic pipeline configuration, echoed into run.json. See
settings and rerun.
The settings echo
The copy of the run's settings stored in run.json. It is the single source
of truth every stage reads, so a workdir always knows exactly how its
artifacts were produced. See
settings and rerun.
The drift guard
The rule that rerun --set rejects a settings update whose owning stage is
upstream of the rerun stage — the settings echo is never
allowed to lie about how upstream artifacts were produced. See
settings and rerun.
Canonical slug
The id and key grammar shared by dungeon ids, area keys, and override
addresses: lowercase [a-z0-9]+ groups joined by single hyphens. The
alphabet is restrictive on purpose — no / (the address grammar uses it), no
. (cache filenames and request tags parse unambiguously), no uppercase (a
hand-edited override can't alias 4a against 4A). Enforced at the source
by CANONICAL_SLUG_PATTERN.
Request fingerprint
A model request's identity hash:
ModelRequest.fingerprint,
the sha256 of the request's tag, system text, content parts (images as their
own sha256 + size), and JSON Schema. Fixtures are stored and replayed by
fingerprint, which is why a prompt, schema, or page-render change strands
recorded fixtures. See testing.
Fixture
One recorded model exchange — request digest plus response — written by
RecordingProvider and
replayed by
FixtureProvider at zero
network and zero cost. Named <tag>.<fingerprint[:12]>.json. See
testing.
Replay-grade vs evidence-grade
A replay-grade fixture set is closed over committed assets — every byte of its requests can be rebuilt from the repository, so tests replay it forever. An evidence-grade set embeds content the repository does not commit (page images of a licensed module); it documents that a run happened and what it answered, with no replay promise. See testing.
Goldens
Committed expected outputs (stage caches, adventure.json, report.json,
previews) that pipeline tests compare byte-for-byte. Goldens are regenerated
deliberately by re-running the documented fabrication commands — never
hand-edited. See testing.
Byte-stability
The determinism discipline that makes goldens possible: sorted JSON keys, pinned iteration and placement orders, and version stamps kept out of the stage caches, so byte-identical inputs produce byte-identical artifacts on every platform.
Resolution tiers
The monsters stage's four-tier cascade over extracted encounter names, each
tier consulted only when the previous one misses: normalized exact match,
the curated alias table, stdlib fuzzy matching, and one LLM pass over the
remainder. A fully deterministic resolution makes no model call. See
osrforge.monsters.
The stat-block pass
The monsters-stage pass (under custom_monsters: emit) that transcribes the
printed stat block for each name the tiers left
unresolved, caching the raw block for assembly to map into a bundled custom
MonsterTemplate. Transcription is
the pass's whole job — every rules judgment lives in assembly, where it is
deterministic and correctable.
Truth independence
The eval discipline that ground truth is authored from the printed module, never from pipeline output — the measuring instrument must be independent of the system under test. See evals.
Asserted-empty
The truth convention that distinguishes encounters: [] — an asserted,
verified-empty area — from an omitted key, which asserts nothing. Only inside
an asserted universe is an extracted name that matches nothing provably a
hallucination, which is what the encounter-precision metric counts. See
evals.
Map reading
The mapread stage's output for one level: the adjacency pairs, doors, and
entrance the model proposed from the printed map pages alone — an
independent second opinion on the prose, cached as answered in
stages/mapread.json. A level whose map could not be read records itself
unread with the reason, and an unread level asserts nothing downstream.
Reconciliation
The deterministic merge of a level's prose edge facts with its
map reading, in osrforge.reconcile — shared by
geometry synthesis and the eval scorer so the two can never merge or pick
differently. The precedence rule: a stated prose fact survives any map
conflict, flagged; a prose absence fills from the map, flagged as adopted;
agreement is silent. Every adoption, disagreement, and dropped proposal is
a map_disputed flag.
Edge-fact seam
The single scorer function through which every extracted edge fact — connection presence, door kind, locked state — flows from the level caches into the connection and door families. Phase 11 rerouted the seam through reconciliation, swapping the fact source without touching the metric semantics. See evals.
Dungeon-scoped matching
The transition and entrance families' matching scope: extracted claims
resolve through the dungeon's level pairings to truth (level, key)
addresses, because levels are peers — a printed inter-level stair survives an
extraction that collapsed the printed levels into one. See
evals.
Offline re-score
The rescore tooling: a scoreboard entry's metrics regenerated from its
retained workdir against the current truth, with the run block carried
verbatim — no live spend. The regression rule's counterpart for PRs that
change the scorer's matching or metric semantics rather than extraction. See
evals.
BYOM
Bring-your-own-module measurement: private eval corpora over locally owned, non-redistributable modules, with only aggregate numbers ever committed. See evals.