The full generated ability record.
The ability's id (ability_id in the raw record).
Game phases this ability acts in, unioned across its phase-mappings.
Units that list this ability in their ability_ids.
Generated plain-English approximation of this ability's effect + scope,
rendered from the DSL by the conformance-pinned describer
(translate/effect.ts). The dataset carries no rules prose; this is the
displayable stand-in.
Buff stack this ability contributes against context, with provenance
tagged via source (the caller knows whether this ability is being read
as army, detachment, unit, leader, etc.). DSL branches the buff layer
can't auto-apply are dropped here; call describeBuffs if you
also want the diagnostics. perspective defaults to "attacker"; pass
"target" to translate the ability as a defensive buff (FNP, T/Sv
stat-mods, save rerolls, incoming hit penalties).
Optionalcontext: EngineContextFull DSL→Buff translation, including the unsupported list of effect
fragments the buff layer can't model. The SPA renders these as warnings
so users see which abilities have effects that need a manual toggle.
Optionalcontext: EngineContext
An ability, linked to the phases it acts in and the units that have it.
Phases are not stored on the ability — they live in
phase-mappingsrecords.Example