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 |