Skip to content

Badge vocabularies

The enumerated vocabularies review UIs badge on, generated from their one source in the code (Flag, LintCheck, and the producer's SEVERITY table). Growing a vocabulary is additive; renaming a member is a schema-version event.

Report flags

Serialized as <flag> or <flag>:<detail> in report.json's per-area and module-scope flags arrays.

flag meaning
geometry_synthesized the area's grid geometry was synthesized from the connection graph, not the map
monster_unresolved an encounter name resolved to no catalog template and no usable stat block was found (detail: the name, or name → stand-in under the best-effort fallback)
monster_custom an encounter carries an emitted custom template mapped from the module's printed stat block (detail: the name; the report's monsters summary records the derived fields)
low_confidence extraction self-assessed low confidence, or a module-scope field was defaulted
connection_ambiguous an extracted connection could not be realized (detail: the reason)
transition_guessed a level-targeted link's landing was guessed (detail: the chosen far end)
treasure_unparsed a treasure string the grammar could not place (detail: the string)
page_unreadable a page render was blanked via blank_page_renders (detail: the page)
resolution_suspect a surviving non-exact monster pick whose printed stat block disagrees on a non-vetoing axis — an HD-modifier-only difference, an AC mismatch, or a derived-complement AC disagreement (detail: both readings, name → template, printed HD 2+1 vs 2)
survey_disputed the survey census disagreed with the survey — a site in one answer and not the other, differing level counts, or a printed key range against the survey's keyed extremes (detail: the disagreement; module-scope)
map_disputed the map reading and the prose disagreed, a map fact filled a prose absence, or a proposal was dropped — every adoption, disagreement, and dropped proposal carries one (detail: both readings; edge disputes on the survey-order-first endpoint, the entrance dispute on the selected entrance area, dropped proposals module-scope with the level address)

Lint findings

Emitted by check() into report.json's findings array; the severity column is the producer's pinned table.

id severity meaning
edge_invalid error an edge-map key osrlib would silently ignore — malformed, non-canonical, or out of bounds
area_unreachable error no path from any entrance reaches the area (doors of any state count as passable)
orphan_cell warning a non-area cell that renders as corridor but no path reaches it
secret_only_access warning every path into the area passes through a secret door
transition_unpaired warning stairs whose target cell has no transition back (trapdoors and chutes are exempt)
delve_blocked error the smoke delve's static model and the engine disagree on a step
delve_incomplete warning the delve ended early — battle opened or a budget ran out