Skip to content

TKW: dragon roster, 24 new dragons and their missing riders - #93

Merged
codebend3r merged 37 commits into
mainfrom
dragon-roster
Sep 19, 2026
Merged

codebend3r merged 37 commits into
mainfrom
dragon-roster

Conversation

@codebend3r

Copy link
Copy Markdown
Owner

Summary

Characters

  • jaenara-belaerys, aurion, serwyn-of-the-mirror-shield, grey-king, each sourced from its AWOIAF article
  • Daeron the Daring already existed as daeron-targaryen-son-of-viserys-i and is reused

Dragons

  • Main series: drogon, rhaegal, viserion
  • The Dance: meleys, tessarion, silverwing, seasmoke, dreamfyre, vermax, arrax, syrax, sheepstealer, tyraxes, moondancer, grey-ghost, stormcloud, shrykos, morghul, morning
  • Early Targaryen: quicksilver
  • Legendary and unnamed: terrax, urrax, nagga, last-dragon

Conventions

  • One AWOIAF source per entry, fetched through the Wayback CDX pipeline; last-dragon cites the Dragon article since she has no name
  • house: velaryon where every rider was a Velaryon (seasmoke, vermax, arrax, tyraxes); null for wild and Valyrian dragons
  • status: lost with died: null for Sheepstealer, whose fate is unknown
  • Windows in the source ("36 to 42 AC", "by 153 AC") stored at decade precision; unknown years stay null
  • Colors the books never state are marked as coming from an illustration or the author's note
  • Aliases written without a leading article ("Red Queen", "Blue Queen") so lowercase prose links
  • Namesake riders (three Rhaenys Targaryens, three Rhaena Targaryens) pinned through mentions, relying on TKW: link castles, battles, and events from prose bodies #91's shared-name rule

Tooling

  • lib/content.test.ts asserts the seven seeded dragons are present instead of pinning the whole roster

Verification

  • bun run check and bun run build pass; dates and prose audits clean for dragons and characters
  • Built pages link riders, castles, and the other dragons named in each body

- `EventSchema` gains `aliases` and `mentions`, both defaulting to `[]`
- `lib/content-integrity.ts` validates `events.mentions` like `battles.mentions`
- `lib/timeline.test.ts` event fixture carries the two new fields
- `buildProseLinkIndex` takes `allCastles`, `allBattles`, `allEvents` and emits `castle`, `battle`, `event` targets
- a name starting with "The" also matches without the article, so "the Twins" and "the Red Wedding" link
- self-suppression and once-per-page dedupe keyed by kind plus slug via `targetKey`
- `ProseLinkIndex.selfSlug` becomes `self: { kind, slug }`
- castles sharing a house's short name (Darry, Rosby, the Hightower) never auto-link; `mentions` cannot tell them apart
- `targetsOf` replaces the four per-kind `flatMap` blocks
- `app/battles/[slug]` and `app/events/[slug]` build a link index and pass `proseLinks` to `renderMarkdown`
- character, house, weapon, and dragon pages pass castles, battles, and events into the index
- 57 battles and 29 events list the characters their bodies name by first name only, and the houses named bare
- every slug checked against date and sentence; namesake hits (Karstarks as ancient Starks, Sept of Baelor as the king) left out
- one character per first name per entry, since the first to register takes the bare name
- `populate-entry` drops the stale "`battles.mentions` does nothing" and "battle bodies never link" rows, adds the `mentions`, alias, and house-named-castle rules, and documents `events.aliases` and `events.mentions`
- `audit-orphans.ts` passes castles, battles, and events into `buildProseLinkIndex`, counts battle and event bodies as link sources, and matches the per-kind self rule
- 50 character names are shared by two or more entries, and the first to register kept the surface form regardless of the page
- `targetsOf` now orders each kind's entries with the page's `mentions` first, so a page that names the intended entry links to it
- unmentioned collisions keep the previous first-wins order
- "Aegon I" through "Aegon V", "Aenys I", "Maegor I", "Jaehaerys I" and "II", "Viserys I" and "II", "Daeron I" and "II", "Baelor I", "Aerys I", "Maekar I" as `aliases`, so "King Aegon I" in a body links
- `aegon-i-targaryen` also gains "Aegon the Conqueror" and "Aegon the Dragon"; the existing "The Conqueror" never matched lowercase prose
- `aerys-ii-targaryen` already carried "Aerys II" and is unchanged
- Valyrian dragonrider of Terrax, explorer of Sothoryos, no house entry so `primary-house: null`
- one-paragraph body, dates unknown
- Valyrian dragonlord and self-styled Emperor of Valyria, lost with his host in the ruined peninsula
- `died` 102 BC at `decade` precision, matching "102 BC or shortly after"
- Age of Heroes slayer of the dragon Urrax, served the Gardener kings, no house so `primary-house: null`
- legendary figure, so `born` and `died` stay `null` like `brandon-the-builder`
- legendary first king of the Iron Islands, slayer of the sea dragon Nagga
- no house and no dates, matching the other Age of Heroes figures
- `loadAllDragons` round-trip asserts the seven seeded slugs are present rather than the whole list, so new dragons do not fail the suite
- first of Daenerys's three dragons; `status: extant`, `died: null`, hatched 299 AC
- two-paragraph body from the pyre to Daznak's Pit
- green dragon named for Rhaegar, never ridden, so `riders: []`
- body covers the pit beneath the Great Pyramid, Quentyn Martell's burning, and the lair on Yherizan
- cream-and-gold dragon named for Viserys, never ridden; alias "white dragon" for the prose linker
- body covers the pit, Quentyn Martell, and the lair on Uhlez
- the Red Queen, ridden by Alyssa then Rhaenys, killed at Rook's Rest in 129 AC
- `hatched` before 75 AC at `decade` precision; alias written without the article so "the Red Queen" links
- the Blue Queen, Daeron the Daring's dragon, died in the three-way fight at Second Tumbleton in 130 AC
- `hatched` by 120 AC at `decade` precision
- Alysanne's dragon, then Ulf White's in the Dance; went wild on Red Lake and died by 153 AC
- `hatched` and `died` at `decade` precision, matching the 36 to 42 and "by 153" windows
- Laenor Velaryon's dragon, later Addam of Hull's; `house: velaryon` because both riders were Velaryons
- killed by Vermithor at Second Tumbleton in 130 AC
- Rhaena's dragon and then Helaena's, killed bringing down the Dragonpit dome in 130 AC
- `hatched` at `decade` precision for "in or shortly before 32 AC"
- Jacaerys Velaryon's cradle dragon, lost in the Gullet in 130 AC; `house: velaryon` after his rider
- `hatched` 114 to 120 AC at `decade` precision
- Lucerys Velaryon's cradle dragon, killed by Vhagar above Shipbreaker Bay in 129 AC
- color from the author's note to an illustrator, as the books leave it unstated
- Rhaenyra's only dragon, killed by the mob at the Dragonpit in 130 AC after throwing Joffrey Velaryon
- `hatched` late in Jaehaerys I's reign at `decade` precision
- wild dragon of Dragonstone tamed by Nettles, last seen in the Mountains of the Moon in 134 AC
- `status: lost` with `died: null`, no house, `hatched` at `decade` precision
- Joffrey Velaryon's cradle dragon, killed in his lair at the Storming of the Dragonpit in 130 AC
- color from the author's description to an illustrator
- Baela Targaryen's young dragon, killed by Sunfyre over Dragonstone in 130 AC after crippling him
- `hatched: null`, since the source gives no year
- wild fish-eating dragon of Dragonstone, killed and part-eaten by Sunfyre in 130 AC
- never ridden, no house, `hatched: null`
- Aenys I's dragon, then Aegon the Uncrowned's, killed by Balerion beneath the Gods Eye in 43 AC
- color noted as implied rather than stated, since the books leave it undescribed
- Aegon the Younger's cradle dragon, died at Dragonstone an hour after his first flight from the Gullet in 130 AC
- color from the author's description to an illustrator
- Prince Jaehaerys's cradle dragon, never ridden, killed in the Dragonpit by Hobb the Hewer in 130 AC
- `hatched` at `decade` precision from the prince's birth year
- Princess Jaehaera's cradle dragon, never ridden, killed in the Dragonpit by the Burning Knight in 130 AC
- `hatched` at `decade` precision from the princess's birth year
- Jaenara Belaerys's dragon, explorer of Sothoryos; no color, size, or dates recorded
- legendary dragon slain by Serwyn of the Mirror Shield; no dates, house, or rider
- legendary sea dragon slain by the Grey King, whose stone ribs host the kingsmoot on Old Wyk
- no dates, house, or rider
- the stunted green she-dragon of Aegon III's reign, dead in 153 AC; sourced from the `Dragon` article since she has no name
- `hatched` at `decade` precision inside that reign
- Rhaena Targaryen's dragon, hatched from Syrax's egg in the Vale at the end of 130 AC, the last dragon the Targaryens flew
- `died` centered on the 136 to 153 window at `decade` precision
- Daenerys, Rhaenys, Rhaena, Daeron, Lucerys, and Corlys each share a full name with other entries; the intended slug now sits in `mentions` so the linker picks it
- `stormcloud.md` names its rider as the future Aegon III instead of the shared "Aegon Targaryen"
Base automatically changed from regnal-aliases to main September 19, 2026 03:22
@codebend3r
codebend3r merged commit 4a5907d into main Sep 19, 2026
1 check passed
@codebend3r
codebend3r deleted the dragon-roster branch September 19, 2026 03:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant