Skip to contentWolf-Rayet

Decision records

ADR-0013 Stacking contexts replace elevation

Accepted2026-08-27Phase 2

#Context

Elevation in mainstream systems is luminance-coded: shadows below, brightened surfaces above. Under ADR-004 the budget measures absolute deviation from the substrate in either direction, so shadow and glow are both emission spend — an elevation ramp is a standing tax on every raised surface, paid whether or not anything demands attention. The Phase 1 ceiling derivation also proved the failure mode of cheap elevation: a surface at L 0.952 on a 0.950 page was nearly free and entirely invisible. The system needs stacking order without a luminance vocabulary, and it must read in field-night, where the ceiling is lowest and hue carries nothing.

#Decision

Elevation is replaced by an enumerated set of stacking contexts — base, raised, overlay — encoded structurally, not luminously. base is the substrate plane. raised is bounded: a full perimeter border from the border token set, at the substrate-adjacent lightness steps the theme's ramps already price near zero. overlay is occluding: it interposes a scrim over what it covers, and the scrim is chrome, counted against the overlay's Scope per ADR-009. Stacking is a property a Scope declares, never a per-component effect; the token surface is a stacking context token, not a shadow ramp. Any luminance a boundary spends is ordinary chrome inside the budget — stacking gets no exemption and no dedicated ramp. Three contexts, closed set; a fourth is a superseding ADR.

#Rejected options

Shadow ramps, dimmed for dark themes. The familiar vocabulary. Rejected because a shadow is negative deviation the budget prices like any other emission, so every raised card pays rent forever; because shadows collapse toward invisibility on dark substrates precisely where field-night needs structure most; and because a graded ramp implies unbounded stacking depth, which the layer model already forbids — Scopes nest at most two deep.

Borderless luminance offsets. The minimalist reading: raised surfaces sit a step lighter. Rejected on the derivation's own evidence — the interior-light rows at 0.002 deviation were invisible, and making offsets visible makes them expensive. An encoding that is either illegible or costly at every point on its range is not an encoding.

Hue-shifted surfaces. Cheap in lightness terms. Rejected outright: hue carries zero information in field-night by ADR-0006, and an encoding invalid in the theme designed first is invalid as the system's stacking vocabulary.

A free-standing z-token ramp (numeric elevation levels). Maximum generality. Rejected because unbounded levels reintroduce the ambiguity the layer model removed — stacking above two Scope depths has no defined budget resolution — and because a numeric ramp invites exactly the per-component creep the Scope-declared model forbids.

#Consequences

Border tokens gain the stacking duty, which Phase 2's remaining primitive work sizes: border width steps join the spatial scale's receipt discipline. The scrim is a chrome overlay under ADR-009 and is counted; a must-fail fixture eventually shows an overlay whose scrim blows its Scope's ceiling. The composition contracts gain a rule in Phase 3: stacking context is declared at Scope level and children cannot override it, mirroring density coherence. field-day's no-hairline mandate applies to the raised border, which therefore references the spatial border steps, not a fixed width. Touches the Emission load row; adds no new check kind.