# Attribution

This work includes material from the System Reference Document 5.1 ('SRD 5.1') and the System Reference Document 5.2.1 ('SRD 5.2.1') by Wizards of the Coast LLC, available at https://www.dndbeyond.com/srd. The SRD 5.1 and SRD 5.2.1 are licensed under the Creative Commons Attribution 4.0 International License, available at https://creativecommons.org/licenses/by/4.0/legalcode.

**The SRD 5.1 material used here has been MODIFIED.** CC-BY 4.0 requires that
to be stated, and it is true throughout rather than in places: values are
re-derived rather than transcribed where the derivation is ours, rules are
encoded as engine primitives that do not map one-to-one onto the printed text,
and prose is paraphrased. The itemised list below is not required by the licence
— the paragraph above satisfies it — but it is how this project keeps the
boundary between transcribed SRD material and original work legible,
and each entry says which side of that line it falls on.

Material used: the six ability scores (Strength, Dexterity, Constitution,
Intelligence, Wisdom, Charisma), the ability modifier formula, the d20
ability-check convention, and the 4d6-drop-lowest score generation method
(engine/src/stats.rs); and the EXHAUSTION mechanic — the six-level penalty
track and its per-level effects (disadvantage on ability checks; speed halved;
disadvantage on attack rolls and saving throws; hit point maximum halved; speed
0; death) with long-rest recovery of one level (SRD 5.1 Appendix Conditions, the
Exhaustion table; engine/src/exhaustion.rs); and the REACTION economy
— one reaction per round refreshed at the start of your turn, the opportunity
attack as a reaction, the Ready action (an action held for a trigger, spent as a
reaction when it fires), and the Rogue's Uncanny Dodge (a reaction halving one
attack's damage) (SRD 5.1 "Combat" — Reactions / Opportunity Attacks / Ready, and
"Rogue" — Uncanny Dodge; engine/src/combat_bubble.rs); and the MELEE
TOOLKIT (SRD 5.1 "Equipment" — the Reach weapon property; "Combat" — Two-Weapon
Fighting, and the Grapple and Shove special melee attacks, with their Strength
(Athletics) vs Strength (Athletics)/Dexterity (Acrobatics) contest and the
grappled/prone conditions they inflict; and "Feats" — the Grappler feat's
advantage-against-the-grappled and pin-to-restrain benefits): a reach weapon's
10-ft melee reach for the strike and the opportunity attack, the bonus-action
off-hand attack (its damage-modifier rule and the Two-Weapon Fighting style that
adds it), and the grapple/shove/escape/pin actions
(engine/src/combat_bubble.rs, engine/src/combat_melee.rs,; the Reach
property formerly sat in the 5.1 weapon table on the glaive, halberd,
pike, lance, and whip); and the VARIANT ENCUMBRANCE rule (SRD 5.1 "Using Ability
Scores" — Strength, "Variant: Encumbrance"): the carrying-capacity cap of
Strength score × 15, and the encumbrance bands — carried weight over STR×5 is
encumbered (speed −10 ft), over STR×10 is heavily encumbered (speed −20 ft and
disadvantage on ability checks, attack rolls, and saving throws that use
Strength, Dexterity, or Constitution) (engine/src/encumbrance.rs);
and the TRAPS rules (SRD 5.1 "Traps" — the trap mechanics: detecting a trap with
a Wisdom (Perception) or Intelligence (Investigation) check against a DC,
disarming it with a Dexterity check using thieves' tools against a DC, and its
effect resolving as a saving throw (half damage on a success) or an attack roll,
dealing damage and/or inflicting a condition) (engine/src/traps.rs);
and the DISEASES rules (SRD 5.1 "Diseases": a disease is contracted by failing a
saving throw against exposure, incubates for a period, imposes effects while it
holds — including levels of exhaustion, a condition, and penalties to ability
checks — and is cured by succeeding on a run of Constitution saving throws at the
end of long rests) (engine/src/disease.rs).
Further SRD material
(skills, conditions, equipment, monsters) will be attributed here as it is
adopted.

## Trademarks

The Creative Commons licence above grants COPYRIGHT permissions only. Its
section 2(b)(2) is explicit that no trademark rights travel with it, and none
are claimed here: the SRD 5.1 material is used under the copyright grant and
nothing else.

Dungeons & Dragons, D&D, and Wizards of the Coast are trademarks of Wizards of
the Coast LLC in the United States and other countries. Kinbarrow is not
affiliated with, endorsed by, sponsored by, or approved by Wizards of the
Coast. Where those marks appear in this project's pages or copy, they appear
to identify the ruleset the game is built on — a statement of fact about the
SRD material attributed above, not a claim of any relationship.

## data/ SRD-derived files

This work includes material taken from the System Reference Document 5.1
("SRD 5.1") by Wizards of the Coast LLC and available at
https://dnd.wizards.com/resources/systems-reference-document. The SRD 5.1
is licensed under the Creative Commons Attribution 4.0 International
License available at https://creativecommons.org/licenses/by/4.0/legalcode.

Material used, extracted from the official SRD 5.1 CC PDF
(SRD_CC_v5.1.pdf, fetched 2026-07-19) into the `*.srd.ron` files under
`data/` — the suffix marks SRD derivation; see `data/README.md` for the
layout contract. The derived-from-SRD material is:

- the eighteen skills and their governing abilities
 (`data/tables/skills.srd.ron`);
- the core races and their SRD subraces: ability score increases, age,
 size, speed, and alignment-tendency prose (the numeric
 `alignment_bias` pairs are our own distillation of that prose, not
 SRD values — see `data/README.md`) (`data/races/`);
- the Character Advancement table — the cumulative experience points per
 level 1..20 (`data/tables/advancement.srd.ron`,; the table's
 Proficiency Bonus column is not transcribed — it derives from level);
- the Commoner, Guard, and Bandit stat blocks from Appendix MM-B
 (`data/creatures/humanoids/`, stored as primitives; the same blocks'
 printed composite values in `data/expected/npc_blocks.srd.ron` as a
 verification corpus);
- fourteen monster stat blocks from the SRD 5.1 "Monsters" chapter, one per
 non-humanoid creature type, stored as PRIMITIVES only — abilities,
 hit-dice level, size, natural armor, speed, the natural-attack dice + kind,
 multiattack count, and the damage/condition immunities, resistances, and
 vulnerabilities the block prints; AC, HP, to-hit, and XP DERIVE (their printed
 values verified in `data/expected/npc_blocks.srd.ron`). The blocks:
 Wolf (beast), Skeleton & Zombie (undead), Black Dragon Wyrmling (dragon),
 Dretch (fiend), Magma Mephit (elemental), Ogre (giant), Gray Ooze (ooze),
 Animated Armor (construct), Worg (monstrosity), Satyr (fey), Pegasus
 (celestial), Gibbering Mouther (aberration), Awakened Shrub (plant)
 (`data/creatures/`). Breath weapons, legendary/lair actions, innate
 spellcasting, regeneration, and monster-specific traits are NOT transcribed —
 they are tracked in Linear until a consumer exists (`docs/linear/README.md`);
- the monster-statistics rules used as derivation formulas — Hit Dice
 by Size, Proficiency Bonus by Challenge Rating, and the skill/passive
 bonus rules (SRD 5.1 pp. 254-257), documented in `data/README.md`;
- the racial traits with engine substrate: Dwarven
 Resilience, Lucky, Relentless Endurance, Savage Attacks, Menacing,
 Keen Senses, Skill Versatility, Gnome Cunning, Hellish Resistance —
 as trait ids and damage resistances on the race files (`data/races/`);
- the Multiclassing rules (SRD 5.1 "Multiclassing") — the ability-score
 PREREQUISITES to take each class in a multiclass (Barbarian Str 13,
 Fighter Str 13 or Dex 13, Monk Dex 13 and Wis 13, …), the REDUCED
 proficiencies a multiclassed class grants (a subset of the initial set,
 with no saving-throw proficiencies), and the Multiclass Spellcaster slot
 table (combined caster level = full-caster levels + half of half-caster
 levels, read off the full-caster grid; Pact Magic kept separate) — as the
 `multiclass_prereq`/`multiclass_proficiencies` fields on the class files
 and the combined-caster-level derivation
 (`data/classes/`, `crates/engine/src/classes.rs`);
- the full-caster Spell Slots per Spell Level grid from the cleric and
 wizard class tables (`data/tables/spell_slots.srd.ron`), the half-caster
 Spell Slots grid from the paladin and ranger class tables
 (`data/tables/spell_slots_half.srd.ron`), and the warlock's Pact
 Magic Spell Slots / Slot Level grid
 (`data/tables/pact_magic.srd.ron`);
- seventy-six spells from the Spell Descriptions chapter — names, levels,
 schools, casting times, ranges, damage/healing dice, save abilities,
 area sizes, light radii, and "At Higher Levels" scaling — each on the CLASS
 LIST the SRD's own Spell Lists section (pp. 105-110) gives it
 (`data/spells/*.srd.ron`,; the effect/area/upcast ENCODINGS are
 our interpretation, per `data/README.md`). Every shipped spell file is SRD
 5.1: the one that was not — a Thorn Whip whose `source: Srd51` claim that
 document does not support ( §4), renamed rather than removed — left the
 tree entirely at, since every mechanical field in it was still the
 book's;
- the SRD 5.1 "Backgrounds" chapter's ONE background — **Acolyte** (its name,
 its two skill proficiencies (Insight, Religion), and its starting funds, our
 silver purse's rendering of the printed 15 gp) — as
 `data/backgrounds/acolyte.srd.ron`.
 The SRD 5.1 prints exactly this one background; its Shelter of the Faithful
 feature is NOT transcribed (pulled at and tracked in Linear, `docs/linear/README.md`).
 The other eleven files in `data/backgrounds/` are ours (`source: Original`);
- the SRD 5.1 "Feats" chapter's ONE feat — **Grappler** (its name,
 Strength-13 prerequisite, and rules text: advantage on attack rolls against a
 creature you are grappling, and the action to pin a grappled creature so both
 are restrained) — as `data/feats/grappler.srd.ron`. The SRD 5.1
 contains exactly this one feat; its grapple-dependent benefits are LEDGERED
 until the grapple action lands (`docs/linear/README.md`), so only its
 prerequisite is live substrate. No non-SRD feat is transcribed — the feat
 catalog is a mod surface;
- four items from the SRD 5.1 "Magic Items" chapter — their names,
 rarities, attunement requirements, and the mechanical primitives their entries
 print: the "Weapon, +1/+2/+3" bonus (+1 attack & damage) applied to the
 longsword (`data/magic_items/plus_one_longsword.srd.ron`), the Ring of Protection and Cloak of Protection
 (+1 AC and +1 saving throws, attunement — `ring_of_protection.srd.ron`,
 `cloak_of_protection.srd.ron`), and the Wand of Magic Missiles (7 charges, "1
 or more charges" to cast, "regains … charges daily at dawn" —
 `wand_of_magic_missiles.srd.ron`). PRIMITIVES ONLY: the bonuses/rarity/charges
 are transcribed; item WORTH is NOT (it DERIVES — a rarity factor over our
 craft worth, never the DMG's gp values, which lie outside the CC-BY
 SRD corpus — the CR/object-statistics precedent). The wand's spell EFFECT and
 the daily "1d4 + 1" recharge die are tracked in Linear (`docs/linear/README.md`); the
 charge accounting and a full-refill-at-dawn cadence are the live substrate. The
 base set is fifteen files (the four-file starter set, the +1 chain shirt and the
 ten Ring of Resistance gem rows); the rest of the chapter is a mod surface;
- SIX further stat blocks from the SRD 5.1 "Monsters" chapter,
 on the same PRIMITIVES-ONLY terms as the bestiary above: the goblin,
 orc, kobold, hobgoblin and bugbear (`data/creatures/humanoids/`) and the earth
 elemental (`data/creatures/elementals/`). Their per-block ledgered traits
 (Nimble Escape, Aggressive, Pack Tactics, Sunlight Sensitivity, Martial
 Advantage, Brute, Earth Glide, Siege Monster) are NOT transcribed, each noted
 in its own file — and the bugbear's Surprise Attack IS now transcribed, as a
 per-hit rider of 2d6 on a creature that hasn't yet taken a turn;
- four further spells from the Spell Descriptions chapter — conjure
 celestial, conjure elemental, conjure fey and conjure minor elementals: names,
 levels, school, concentration and duration, each on the CLASS LIST the SRD's
 own Spell Lists section gives it. Their 1-MINUTE casting times and their
 higher-level CR scaling are NOT transcribed (LEDGERED — no shape carries
 either) — and their higher-level CR scaling IS now transcribed
: conjure elemental's and conjure fey's "+1 per slot level" and
 conjure celestial's single step at a 9th-level slot. A seventh stat block joins
 the six above, the invisible stalker (`data/creatures/elementals/`), on the same
 PRIMITIVES-ONLY terms — its permanent Invisibility and Faultless Tracker are
 NOT transcribed. EIGHT further blocks join them on the same terms, the mid-CR
 wave the challenge-rating budgets needed: the green hag (`fey/`), couatl and
 unicorn (`celestials/`), owlbear and minotaur (`monstrosities/`), mummy
 (`undead/`), ettin (`giants/`) and otyugh (`aberrations/`). Their per-block
 ledgered traits are noted in their own files — among them every innate
 spellcasting list, which is OMITTED rather than faked, the mummy's necrotic
 rider and Mummy Rot, and the otyugh's disease. EIGHT more join them, the CR 5-9
 band: the shambling mound and treant (`plants/`), flesh golem and shield
 guardian (`constructs/`), vrock (`fiends/`), stone giant (`giants/`), giant ape
 (`beasts/`) and chimera (`monstrosities/`) — the chimera's Fire Breath wired as
 the recharge action, every other named trait ledgered in its own file;
- the spellcasting formulas used as derivations: spell attack bonus,
 spell save DC, prepared-spell counts, and the cantrip damage steps at
 character levels 5/11/17 (`crates/engine/src/spells.rs`,
 `crates/engine/src/classes.rs`);
- the damage-multiplier rule (SRD 5.1 "Damage and Healing" p. 97):
 resistance halves damage (round down), immunity reduces it to zero, and
 vulnerability doubles it, with resistance applied before vulnerability
 (`crates/engine/src/combat_bubble.rs::apply_damage`). The
 damage-kind lists a race or creature carries are data-side interpretation
 (no SRD race carries one; the monster blocks carry the resistances,
 immunities, and vulnerabilities their SRD stat blocks print);
- the Cover rule (SRD 5.1 "Cover", "The Environment"): the three degrees of
 cover and their effects — half cover grants +2 to AC and Dexterity saving
 throws, three-quarters cover grants +5, and total cover makes a target
 impossible to target directly by an attack or a spell — and the optional
 rule that a creature can grant half cover
 (`crates/engine/src/combat_board.rs::Cover`/`cover_between`,
 `crates/engine/src/combat_bubble.rs`). The corner-trace that grades
 the degree from the board's blocked squares is our SIMPLIFIED interpretation
 of the SRD's corner-to-corner method (documented in the ADR), not an SRD
 transcription;
- the fourteen creature types and their gloss (SRD 5.1 "Monsters" / Monster
 Statistics, the Type line, pp. 250-251): aberration, beast, celestial,
 construct, dragon, elemental, fey, fiend, giant, humanoid, monstrosity,
 ooze, plant, undead (`data/tables/creature_types.srd.ron`) —
 and hold person's "one humanoid" targeting clause it gates
 (`data/spells/hold_person.srd.ron`). The note prose paraphrases the SRD's
 own examples; which soul reads which type is data-side (every SRD playable
 race is a humanoid);
- the special senses (SRD 5.1 "Monsters" / Monster Statistics, the Senses
 line, and "The Environment": blindsight, darkvision, tremorsense,
 truesight) — carried as the radius fields on the race/creature blocks and
 the monster Senses lines transcribed onto `data/creatures/`;
 darkvision keeps its field. Which combat reads a sense negates
 (the unseen-attacker/darkness disadvantage) is our interpretation of the
 SRD text, documented in the ADR;
- the sixteen languages (SRD 5.1 "Languages", the Standard and Exotic
 tables, p. 63): Common, Dwarvish, Elvish, Giant, Gnomish, Goblin,
 Halfling, Orc; Abyssal, Celestial, Deep Speech, Draconic, Infernal,
 Primordial, Sylvan, Undercommon (`data/tables/languages.srd.ron`,
) — and the monster stat-block Languages lines transcribed onto
 `data/creatures/`. The "Typical Speakers" gloss paraphrases the SRD; which
 soul knows which tongue is data-side (ABSENT means Common).
- three sample traps from the SRD 5.1 "Traps" chapter (Sample Traps) —
 their names, detection and disarm DCs, and effects: the Poison Needle
 (Investigation DC 20 to detect, DC 15 thieves' tools to disarm, a DC 15
 Constitution save or take 2d10 poison and become poisoned —
 `data/traps/poison_needle.srd.ron`), Poison Darts (Perception DC 15, disarm DC
 15, a DC 15 Dexterity save for half of 2d10 poison —
 `poison_darts.srd.ron`), and the Fire-Breathing Statue (Investigation DC 15,
 disarm DC 15, a DC 13 Dexterity save for half of 4d10 fire —
 `fire_breathing_statue.srd.ron`). PRIMITIVES ONLY: the DCs and dice are
 transcribed; the poison needle's 1 piercing damage and the "poisoned for 1
 hour" duration are tracked in Linear (`docs/linear/README.md`). The
 three device samples are all the shipped catalog; the rest of the chapter
 (pits, collapsing roofs, and the attack-roll traps) is a mod surface.
- three sample diseases from the SRD 5.1 "Diseases" chapter (Sample Diseases,
) — their names, contraction/recovery DCs, incubation, and effects:
 Sewer Plague (a DC 11 Constitution save to resist, ~1d4 days to incubate, one
 level of exhaustion, a DC 11 Constitution recovery save —
 `data/diseases/sewer_plague.srd.ron`), Sight Rot (a DC 15 Constitution save,
 1 day to incubate, a sight penalty culminating in the blinded condition, a DC
 15 Constitution recovery save — `sight_rot.srd.ron`), and Cackle Fever (a DC 13
 Constitution save, hours to incubate, one level of exhaustion, a DC 13
 Constitution recovery save — `cackle_fever.srd.ron`). PRIMITIVES ONLY: the DCs,
 dice, and save cadences are transcribed; the SRD nuances without an existing
 consumer — Sewer Plague's rest-healing riders, Sight Rot's −1→−5 escalation and
 its Eyebright/lesser-restoration cures, Cackle Fever's shrieking combat rider
 and gnome immunity — are tracked in Linear (`docs/linear/README.md`). The three samples
 are the shipped catalog; the rest of the chapter is a mod surface.

Original additions (ours, NOT SRD material, marked `source: Original`
or documented as our interpretation in `data/README.md`): the
`alignment_bias` distillations noted above; the `data/goods/` material
files and ALL crafting recipes embedded in the weapon and armor tables
(stations, tiers, input quantities, hours, material prices) — the SRD
contains no material recipes; its downtime crafting is gp-rates only.
Also original: `data/professions/` (background skill proficiencies,
trade tools, workplaces; the profession set mirrors the engine's own
library), `data/buildings/` (building types, production rates, build
costs), `data/tables/quality_profiles.ron` (the seven-tier quality
system and its per-class effects), the vocabulary registries
(`data/tables/material_classes.ron`, `data/tables/terrain_tags.ron`),
and the constructive-material metadata on goods (classes, factors,
work difficulties, quality biases, durability properties, rarities).
The object-durability numbers (hardness, integrity) are original
derivations, NOT the DMG's object statistics — that chapter is outside
the CC-BY SRD corpus and nothing was transcribed from it.
The WEATHER & SEASONS system (`crates/engine/src/weather.rs`
and `Time::season`) is likewise entirely original — D&D's
weather/environment HAZARD rules (extreme cold/heat/wind, precipitation,
high altitude) live in the Dungeon Master's Guide, which is OUTSIDE the
CC-BY SRD 5.1, so NOTHING was transcribed: the weather-state set
(clear/overcast/rain/fog/storm/snow/heat), the obscurement mapping, every
season-weighted probability, and the season lengths are our own work.
The HARD-ROAD EXHAUSTION toll (`crates/engine/src/exhaustion.rs`
`weather_toll` / `weather::is_severe` / `weather::severe_crossing`) is
likewise our OWN design: the SRD's exhaustion CONDITION/track it drives is
SRD material (attributed above), but the SOURCE — that a SEVERE
sky (storm/snow) forces a Constitution save per crossing at a DC of 12, a
failure adding one exhaustion level — is entirely original. Nothing is
transcribed from the DMG's environment/forced-march rules (Con DC 10
escalating per hour), which lie OUTSIDE the CC-BY SRD 5.1: our severity set,
the per-severe-crossing cadence, the DC, and the +1-per-crossing cap are all
`source: Original` (the "DMG numbers are never transcribed — ours
derive" doctrine).
The SQUALOR DISEASE-EXPOSURE vector (
`crates/engine/src/disease.rs` `squalor_exposure`) is likewise our OWN
design: the DISEASE it triggers is the SRD Sewer Plague (SRD material,
attributed above via — its DC 11 contraction save and long-rest
recovery are the SRD's), but the SOURCE — that a pauper (net worth below the
poverty line) dwelling in a neglected, high-unrest ward (the rising
bar) rolls a low-rate periodic exposure (roughly monthly, a name-salt
lottery) — is entirely original. The squalor unrest bar, the poverty line,
and the exposure rate/denominator are all `source: Original`; the SRD's own
"sewer plague incubates in filth" flavour is why squalor is the faithful
vector, but no number is transcribed.
SRD-aligned exceptions inside `data/goods/`, noted per file: the seven
tool/kit WEIGHTS (smith's, leatherworker's, carpenter's, weaver's,
brewer's supplies, cook's utensils, fishing tackle) and ale's mug price
(4 cp), from the SRD equipment table. The seven tool/kit VALUES were
formerly SRD-aligned too, but (labour-rate calibration) replaced
them with worth DERIVED from recipe + labour — a smith's kit is now
45 cp, not the SRD's 20 gp transcription — so those values are no longer
SRD material; only the weights remain. (Ale's 4 cp both stays SRD-aligned
and round-trips the derivation.) The material name "mithral" uses the
SRD 5.1 spelling.

## data/ SRD 5.2.1-derived files

This section is the licence statement and itemised list for the SECOND document
the corpus draws on. It
was placed here BEFORE the first `*.srd52.ron` file landed, so that attribution
could never trail the content it covers; the material below arrived after it.
SRD 5.2.1 supplies the 2024 rules chassis; where both documents print a
conflicting rule or record, the 5.2.1 definition is authoritative.

This work includes material taken from the System Reference Document 5.2.1
("SRD 5.2.1") by Wizards of the Coast LLC and available at
https://www.dndbeyond.com/srd. The SRD 5.2.1 is licensed under the Creative
Commons Attribution 4.0 International License available at
https://creativecommons.org/licenses/by/4.0/legalcode.

**Any SRD 5.2.1 material used here is MODIFIED**, on the same terms and for the
same reasons as the SRD 5.1 material above: values are re-derived rather than
transcribed where the derivation is ours, rules are encoded as engine primitives
that do not map one-to-one onto the printed text, and prose is paraphrased.

The two documents are separately licensed grants of the same kind, and this file
keeps them separately stated: SRD 5.1 material is attributed to SRD 5.1 and
SRD 5.2.1 material to SRD 5.2.1, never merged into one claim. The `.srd.ron` and
`.srd52.ron` suffixes carry that split into the tree, and
`data_lock::the_suffix_and_the_source_field_agree` holds each file's path and its
`source` field to the same answer, so this document's index into `data/` cannot
silently go wrong. The trademark disclaimer above applies unchanged: the CC
licence grants copyright permissions only, for both documents.

Material used, extracted from the official SRD 5.2.1 CC PDF
(`SRD_CC_v5.2.1.pdf`, fetched 2026-08-23 from
https://media.dndbeyond.com/compendium-images/srd/5.2/SRD_CC_v5.2.1.pdf) into
the `*.srd52.ron` files under `data/`:

- the "XP Budget per Character" table (levels 1–20, Low/Moderate/High)
 in `data/tables/encounter_xp_budgets.srd52.ron`, and the "Experience
 Points by Challenge Rating" table in `data/tables/cr_xp.srd52.ron`.
 Battle adds each character's budget and pays for creatures at their CR's
 listed XP, with no creature-count multiplier;

- the complete SRD 5.2.1 weapons and armor tables in
 `data/tables/weapons.srd52.ron` and `data/tables/armor.srd52.ron`, including
 weapon statistics and properties, ammunition kinds, Heavy thresholds,
 armor Strength and Stealth restrictions, don/doff costs, and the shield
 training rule. The Weapon Mastery column is normalized into the companion
 `data/tables/weapon_masteries.srd52.ron` join. Net is adventuring gear rather
 than a weapon; Musket and Pistol are active weapon rows
.

- TWO of the SRD 5.2.1 "Feats" chapter's four Origin feats
 — their names, their
 category's absence of any prerequisite or ability increase, and the one benefit
 apiece the engine has a mechanism for: **Alert**'s Initiative Proficiency (the
 proficiency bonus added to the initiative roll) as
 `data/feats/alert.srd52.ron`, and **Savage Attacker**'s once-per-turn reroll of
 a weapon's damage dice as `data/feats/savage_attacker.srd52.ron`. PRIMITIVES
 ONLY, and in both cases a PART of the printed feat: Alert's Initiative Swap is
 NOT transcribed (tracked in Linear, `docs/linear/README.md` — it is a player decision
 with no prompt in the bubble), and Savage Attacker's "use either roll" is
 rendered as keeping the better, our reading of a choice the engine makes for
 itself. The chapter's other fifteen feats — the remaining Origin feats, the
 General feats, the four Fighting Style feats and the seven Epic Boons — are NOT
 transcribed: each needs substrate the engine does not have, and they are
 ledgered rather than shipped inert
 (and the audit table
 in `docs/design/substrate-opportunities.md`). Grappler, which BOTH documents
 print, stays SRD 5.1's above — the chassis rules
 ( §5).
- ONE of the SRD 5.2.1 "Feats" chapter's seven Epic Boon feats
 ( §6) — **Boon of
 Truesight**: its name, its "Level 19+" prerequisite, and its 60-foot Truesight,
 as `data/feats/boon_of_truesight.srd52.ron`. PRIMITIVES ONLY and again a PART:
 its ability score increase "to a maximum of 30" is NOT transcribed (LEDGERED —
 the engine's scores cap at 20). The other six boons are not transcribed.

- ONE stat block from the SRD 5.2.1 "Monsters" chapter
 — the **Swarm of Ravens**
 (`data/creatures/beasts/swarm_of_ravens.srd52.ron`), on the same PRIMITIVES-ONLY
 terms as the SRD 5.1 blocks above, and taken from 5.2.1 rather than 5.1 because
 only the 2024 revision gives it CACOPHONY — a Wisdom save that deafens, and the
 first monster action in this tree that inflicts a condition instead of damage.
 Its DC DERIVES (and differs from the printed 10 by one), the area is the
 archetypal cone rather than the printed single target, and Cacophony's
 disadvantage rider is NOT transcribed — all three noted in the file itself.

- All twelve SRD 5.2.1 classes — Barbarian, Bard, Cleric, Druid, Fighter, Monk,
 Paladin, Ranger, Rogue, Sorcerer, Warlock, and Wizard — as the typed
 progression, training, feature, subclass, resource, and preparation rows in
 `data/classes/*.srd52.ron`. The rows contain executable identifiers and
 primitives rather than descriptive rules prose.
- All fourteen named SRD 5.2.1 conditions as
 `data/conditions/*.srd52.ron`: Blinded, Charmed, Deafened, Frightened,
 Grappled, Incapacitated, Invisible, Paralyzed, Petrified, Poisoned, Prone,
 Restrained, Stunned, and Unconscious. The five unsuffixed class-composition
 conditions in that directory are project-authored `Original` rows, not SRD
 transcriptions.

- The SRD 5.2.1 **Sorcerer** class, public **Draconic Sorcery** subclass,
 **Summon Dragon** spell, and **Draconic Spirit** stat block are represented as
 mechanical identifiers, progression rows, typed formulas, and primitives in
 `data/classes/sorcerer.srd52.ron`, `data/spells/summon_dragon.srd52.ron`, and
 `data/creatures/dragons/draconic_spirit.srd52.ron`. No descriptive rules prose
 is reproduced.
- The SRD 5.2.1 **Warlock** class and public **Fiend Patron** subclass as
 mechanical progression identifiers in `data/classes/warlock.srd52.ron`.
 The public record contains no descriptive rules prose and no PHB-only
 subclass or invocation record.
- The SRD 5.2.1 **Wizard** class and public **Evoker** subclass as mechanical
 progression identifiers in `data/classes/wizard.srd52.ron`. Executable rules
 are modified engine code; no descriptive rules prose or PHB-only record is
 reproduced.
- The Tools table's **Poisoner's Kit** name and weight (2 lb.) on the otherwise
 `Original` good `data/goods/poisoners_kit.ron`, the kit the Rogue's Cunning
 Strike Poison option requires on the person. Its worth derives from its
 recipe like every kit's; the printed price is not transcribed.

Nothing else itemised in this work derives from SRD 5.2.1; records not named in
this section retain the provenance declared by their own source field and file
suffix.

## data/names

The race name tables in `data/names/` contain NO SRD or other licensed
material. Every name derives from public-domain historical sources
(pre-1900 editions and ancient corpora — the Dvergatal of the Poetic
Edda, Landnámabók, the Mabinogion in the Guest translation, the Bodmin
manumissions, the Cartulary of Redon, English poll-tax and subsidy
rolls, Domesday Book, pre-1900 Swiss records) or is original work
generated for this project under documented phonologies. Per-race
sources, editions, and dates are recorded in `data/names/METHOD.md`.
Public-domain sources impose no attribution requirement; this section
records provenance for diligence.

## Fonts (vendored in `crates/web/fonts/`)

- **Cinzel** by Natanael Gama — SIL Open Font License 1.1.
- **Alegreya** by Juan Pablo del Peral (Huerta Tipografica) — SIL Open Font
 License 1.1.

Both vendored as latin woff2 subsets for the web shell's display and
narrative faces.

## Methods (the tactical solver and its foundry)

The combat solver and the self-play foundry implement published algorithms.
No code, text, data or weights from any of these works is present — only the
methods, reimplemented from the papers — but the ideas are theirs and the
record belongs here (`docs/design/ubfm-solver-slices.md` S2.5).

- **"Learning to Play Two-Player Perfect-Information Games without
 Knowledge"** by Quentin Cohen-Solal — arXiv **2008.01188** (JAIR). The
 canonical source: Unbounded Best-First Minimax, **Descent** (an iteration
 runs to a terminal state, §4.1), **tree learning** / tree bootstrapping
 (§3.1), completion and resolution (§5.2), the **reinforcement heuristics**
 (§6 — the score and depth terminal evaluations), and the **ordinal action
 distribution** for self-play (§7).
- **"Minimax Strikes Back"** by Quentin Cohen-Solal and Tristan Cazenave —
 arXiv **2012.10700** (AAMAS 2023). Athénan against AlphaZero-style learners;
 the data-efficiency comparison, and the finding that tree learning can LOWER
 performance under a search that does not reach terminals (§4).
- **"Learning to Play Stochastic Two-player Perfect-Information Games without
 Knowledge"** by Quentin Cohen-Solal and Tristan Cazenave — arXiv
 **2302.04318**. Descent Expectiminimax — the chance-node treatment, which is
 this game's regime (the sim prices dice).
- **"Study and improvement of search algorithms in two-players perfect
 information games"** by Quentin Cohen-Solal and Tristan Cazenave — arXiv
 **2505.09639**. The play-time search comparison behind the decision to keep
 bounded UBFM for live play while the foundry generates with Descent.
- **"Deep Sets"** by Manzil Zaheer et al. — arXiv **1703.06114**. The
 permutation-invariant entity/set decomposition behind the evaluator boundary.
- **"Relational inductive biases, deep learning, and graph networks"** by
 Peter Battaglia et al. — arXiv **1806.01261**, and **"Relational Deep
 Reinforcement Learning"** by Vinicius Zambaldi et al. — arXiv **1806.01830**.
 The typed entity/relation and message-passing bias used by the v2 evaluator
 design for compositional combat mechanics.
- **"Set Transformer"** by Juho Lee et al. — PMLR 97 (2019). The richer
 attention-based set encoder considered for interacting combatants; the first
 fixed-point implementation deliberately starts with the smaller explicit
 relation pass.

Where this implementation knowingly departs from the papers — a per-side
value vector with max^n backup for a multi-side domain, terminal shaping kept inside a bounded
head, and a gated shipping champion beside the continuously-updated learner —
the departures and their reasons are recorded in
 and measured in
`crates/solver/RATCHET.md`.
