arrow_back Index

Appendix

Reference material compiled by the Heuristic Order. Intended for use during active dungeon construction and retrospective audits. Not required for enjoyment of the main volume; essential for survival in the field.

account_tree I. The Classification System

The Heuristic Order spent eleven sessions debating the classification framework before agreeing on the current system. Two factions remain dissatisfied. This is considered a success.

Action-Class Creatures whose primary function is to trigger an event. They do not display information; they initiate consequence. The Button is the canonical example. These creatures are defined by their affordance: they must look pressable, feel pressable, and be pressable by all input methods.
Auxiliary-Class Supplementary creatures that extend or annotate other elements without claiming independent territory. They serve the element they accompany; they do not replace it. The Tooltip is the canonical example. An Auxiliary creature that carries essential information has been misdeployed.
Containment-Class Creatures that manage content volume through progressive or segmented disclosure. They do not hide content permanently; they organise content spatially and reveal it on demand. The Accordion is the canonical example. A Containment creature used to hide content the user always needs has become an obstacle.
Display-Class Creatures whose primary function is the structured presentation of data. They do not trigger actions (though they may contain creatures that do); they make information legible and traversable. The Data Table is the canonical example and the class's most dangerous resident.
Liminal-Class Creatures that occupy transitional states — they exist between one condition and another and are not meant to persist. They are threshold guardians by nature. The Skeleton Loader is the canonical example. A Liminal creature that outstays its threshold has become a different kind of problem.
Notification-Class Creatures that communicate system status to the user without requiring a response. They are informational by nature. The Toast is the canonical example. A Notification creature that demands user action has confused its purpose with that of an Obstruction creature.
Obstruction-Class Creatures that deliberately interrupt the user's current task to demand focus. This is not inherently malicious; there are situations that genuinely require full attention. The Modal is the canonical example. An Obstruction creature deployed without sufficient cause is the source of most dungeon complaints.
Selection-Class Creatures that facilitate choice from a defined set of options. They must communicate the full option set, the current selection, and the mechanics of changing it. The Dropdown is the canonical example. A Selection creature with a poorly ordered, poorly filtered, or excessively large option set has created a test, not a tool.

swords II. Challenge Rating Methodology

Challenge Rating represents the combined implementation and maintenance burden of a creature in a production dungeon. It is not a measure of the creature's value — a CR ¼ Button is more consequential than a CR 8 Data Table in most dungeons — only its complexity.

Ratings are calculated across four axes, each scored 0–2, for a maximum of 8:

Axis 1Implementation complexity — how much custom code is required beyond the native element. A native <button> scores 0. A full virtual-scroll data grid scores 2.
Axis 2Accessibility debt — how much ARIA, keyboard handling, and focus management must be manually implemented. A Modal requiring focus trap, return focus, and live region announcements scores higher than a Toast requiring only role="status".
Axis 3Likelihood of misuse — how frequently the creature is deployed in contexts for which it was not designed. The Tooltip and the Modal both score highly here, for different reasons.
Axis 4Edge case density — how many documented failure modes exist, and how frequently they are encountered in real dungeons. The Dropdown's country selector problem. The Modal's scroll lock regression. The Data Table's indeterminate checkbox.
CR Rating Typical Specimen Notes
CR ¼1–2 / 8The ButtonNative element handles most complexity. Primary failure mode is impersonation by a div.
CR ½2–3 / 8The Tooltip, The Skeleton LoaderSimple in concept; accessibility requires attention. Both are frequently deployed incorrectly.
CR 13 / 8The ToastNon-trivial animation and live region handling. Error variant frequently misused.
CR 23–4 / 8The AccordionAccessible animation presents genuine technical challenge. Exclusive mode adds complexity.
CR 34–5 / 8The DropdownCustom implementations require significant ARIA. Browser autonomy creates design tension.
CR 45–6 / 8The ModalFocus trap, return focus, scroll lock, and overlay all require correct implementation simultaneously.
CR 87–8 / 8The Data TableMaximum observed score. Requirements expand over time; no known ceiling has been documented.

masks III. Known Imposters

The following creatures present as legitimate interface components but lack the semantic properties that make the genuine article functional for all users. They are distinguishable from their authentic counterparts only by testing with a keyboard or screen reader — a test that is not performed often enough.

The Div-Button A <div> or <span> styled to resemble a button. Has an onClick handler. Does not respond to Space or Enter. Does not receive focus without tabindex="0". Does not announce itself to screen readers without role="button". Cannot be disabled without additional logic. Encountered in approximately 34% of audited dungeons. The Heuristic Order considers this figure conservative.
The Div-Link A <div> that navigates on click but is not an <a> element. Does not open in a new tab via middle-click. Does not appear in the browser's link list. Cannot be copied as a URL. Screen readers do not identify it as a navigational element. Often found cohabiting with The Div-Button in dungeons whose summoners discovered JavaScript before they discovered HTML.
The Table-Layout A <table> used for visual grid layout rather than tabular data. Predates CSS Grid and Flexbox. Announces its row and column structure to screen readers, which is deeply confusing when the structure has no semantic meaning. Considered extinct in new construction; still encountered in dungeons built before 2010 and never migrated. Treat as a heritage specimen.
The Placeholder-Label A form field whose only label is its placeholder text. The placeholder vanishes the moment the user begins typing, leaving them unable to verify what the field expects. Screen readers do not consistently announce placeholder text as a label. Encountered constantly. Defended with the argument that it "looks cleaner." The Order does not recognise this defence.
The Hover-Only Menu A navigation menu that opens on :hover with no keyboard or touch equivalent. Inaccessible by definition on touch devices and to keyboard users. Frequently combines with The Div-Button as the menu items. A common finding in dungeons whose navigation was designed in 2008 and considered "good enough" ever since. It is not good enough.
The Title-Attribute Tooltip Uses the HTML title attribute as a Tooltip. Browser-rendered, inconsistently styled, inaccessible on touch, not keyboard-triggerable, and visually indistinguishable from a browser UI element. The genuine Tooltip's oldest and most persistent ancestor. Still found on icon buttons across the entire Codebase. The Order has issued a formal notice of concern. Nobody has read it.

accessibility IV. The Accessibility Codex

The ARIA incantations required across the volume, consolidated for reference. To speak these words incorrectly is to speak them to no one. The native element is always preferred; ARIA is the remedy when native is not possible.

Roles

RoleApplied ToEffectAppears In
role="button"Non-button interactive elementsAnnounces as a button to screen readers. Does not grant keyboard activation — that requires JavaScript.Div-Button imposter
role="dialog"Modal containerAnnounces as a dialog. Screen readers shift into forms mode. Requires aria-labelledby pointing to the dialog heading.The Modal
role="tooltip"Tooltip containerIdentifies the element as a tooltip. Must be referenced from the trigger via aria-describedby.The Tooltip
role="listbox"Custom dropdown listMarks the option container. Must contain elements with role="option". Required only for custom implementations.The Dropdown
role="option"Each item in a listboxMarks individual selectable items. The selected option receives aria-selected="true".The Dropdown
role="status"Toast container (non-urgent)Announces content politely — after current speech finishes. For success and informational messages.The Toast
role="alert"Toast container (urgent)Announces content immediately, interrupting current speech. For error messages only. Do not overuse.The Toast
role="region"Accordion panelMarks expandable content as a landmark region. Requires aria-labelledby pointing to the header.The Accordion
role="grid"Custom data tableRequired when table includes interactive cells. Use role="row", role="columnheader", role="gridcell" throughout.The Data Table

States & Properties

AttributeValuesUseAppears In
aria-expandedtrue / falseCommunicates open/closed state of a trigger controlling a collapsible region.Modal trigger, Accordion header, Dropdown trigger
aria-controlsID of controlled elementAssociates a trigger with the element it shows/hides.Accordion header, Dropdown trigger
aria-labelledbyID of labelling elementAssociates a region or dialog with its visible heading.Modal, Accordion panel
aria-describedbyID of describing elementAssociates an element with supplementary description, such as a Tooltip.Tooltip target, form fields
aria-haspopuplistbox / dialog / menuAnnounces that activating an element will open a popup of a specific type.Dropdown trigger, Modal trigger
aria-activedescendantID of focused optionTracks the visually focused option in a listbox when DOM focus stays on the container.The Dropdown (custom)
aria-sortascending / descending / noneCommunicates current sort state on a column header.The Data Table
aria-checkedtrue / false / mixed"mixed" is the indeterminate state for the select-all checkbox when some but not all rows are selected.The Data Table
aria-hiddentrueRemoves an element from the accessibility tree entirely. Use on Skeleton Loaders and decorative elements.The Skeleton Loader
aria-livepolite / assertiveMarks a region whose content updates should be announced. "polite" waits; "assertive" interrupts.The Toast, The Skeleton Loader replacement region
aria-busytrue / falseSignals that a region is in the process of loading. Set to true during skeleton state; remove when content arrives.The Skeleton Loader
aria-modaltrueInforms assistive technologies that content outside the dialog is inert. Supplements, does not replace, DOM inertness.The Modal

dictionary V. Glossary

Terms used throughout this volume, defined on the Order's own terms. The definitions are not universally agreed upon. They are the definitions this volume uses.

The Codebase

The entirety of software from which interface creatures emerge. Not a physical place. Experienced differently by those who navigate it and those who build it.

The Dungeon

A specific interface — a page, an application, a screen. A dungeon may contain many creatures. Its quality is determined by the care of its construction and the wisdom of its summoners.

The Summoner

A designer or engineer who instantiates a component. Responsible for the creature's correct implementation and any harm it causes. "The component was in the design system" is not a defence.

The Heuristic Order

The scholarly body that compiled this volume. Membership is unverified. Positions are strongly held. The Order meets quarterly, argues constantly, and reaches consensus occasionally.

Native Element

An HTML element provided by the browser — <button>, <select>, <dialog>, etc. — that carries built-in behaviour and accessibility properties. Preferred over all custom implementations.

Focus Trap

A technique that confines keyboard navigation within a bounded region — typically a Modal — for the duration of that region's presence. Correctly implemented: an accessibility feature. Incorrectly implemented: a cage.

Challenge Rating (CR)

A composite score reflecting the implementation complexity, accessibility burden, misuse likelihood, and edge case density of a creature. See Section II. Not a measure of value.

The Imposter

A non-semantic element styled to resemble a legitimate component. Indistinguishable visually; detectable immediately by keyboard or screen reader. See Section III.

Perceived Performance

The subjective impression of an interface's speed, which may differ significantly from measured performance. The Skeleton Loader manages perceived performance. The Spinner does not.

The Pest Variant

A subspecies that appears uninvited, in contexts that do not justify it, and provides negative value to the user. The Newsletter Modal is the type specimen. Pest variants exist in most creature families.

Live Region

A DOM region marked with aria-live whose content changes are announced by screen readers. The mechanism by which Toasts, loading completions, and dynamic updates reach users who cannot see them.

Semantic Contract

The implicit agreement between an HTML element and the user: a <button> performs an action; an <a> navigates; a <table> presents tabular data. Violating this contract has consequences only for the user.