The Eternal Fusion universe now spans a Roblox game, a card game, a match-3, a lore book, a comic, and this website — about a hundred pages of published content. Every one of them names factions, essences, realms, and heroes. Every name is a chance to be wrong.
So before anything lore-adjacent ships — an article, a card, a page — an AI agent runs a five-minute lore check. It is not glamorous. It is a checklist run against files. It catches roughly five classes of bug, repeatedly, that would otherwise ship.
What the check actually does
The workflow is boring on purpose:
1. **Open the canon sources.** The master lore documents live in one place — the faction packets, the lore bible, the faction design guide. For card mechanics, the EFURC repo has a Python oracle — a frozen set of the real names: 22 factions, 9 essences, 11 card types, 7 turn phases. The oracle does not guess. It either contains the name or it does not.
2. **Extract every canon noun in the draft.** Faction names, essence pairings, realm names, hero names, card types, ability names.
3. **Check each noun against the canon set.** Wrong = flag. Absent = flag harder — an absent name is either a typo or an invention, and inventing lore is the one thing the process exists to prevent.
4. **Check the pairings.** Each faction has a primary essence and specific secondary essences. “The Cursed channel Chaos” is a bug — they are Void and Persistence. Easy to write by feel, wrong by canon.
5. **Check the open questions last.** Some canon tensions are deliberately unresolved. The check flags any sentence that quietly resolves one.
The five bugs it keeps catching
**1. Essence drift.** A faction described with the wrong secondary essence. This is the most common one — the Cursed read like Chaos + Void, so a draft writes it. Canon says Void + Persistence. The theme is survival, not corruption.
**2. The 22/19 confusion.** There are 22 factions and 19 joinable factions. Both numbers are correct. Drafts say “all 22 playable factions” or “the 19 factions of the world” about once a month. The check knows both numbers and the difference.
**3. Invented proper nouns.** A draft names a Sylvan hero “Rootspeaker Tanne” because it sounds right. The canon hero is Archdruid Eldas. If a name is not in the oracle, it does not ship.
**4. Ability text drift.** A card preview paraphrases a hero ability and accidentally changes its trigger. Canon says Regrow returns a defeated *low-cost* unit to hand. Dropping “low-cost” is a balance change disguised as copywriting.
**5. Silent resolution of open canon.** Some questions in the faction packets are intentionally unanswered. A draft that casually states the answer — as worldbuilding garnish — retcons a decision nobody made. The check flags it for a human.
Why five minutes
The check is cheap because the canon is structured. Frozen name sets, one faction per file, a machine-readable oracle. Five minutes of lookup beats a retcon in a published lore book — or a fan in the comments asking why the website says the Cursed are Chaos-aligned.
The full check also runs as a real test suite — the canon module has its own tests, so “did the oracle itself drift” is also covered. The lore is only as trustworthy as the check is boring.
The agent writes nothing into canon. It reads, it compares, it flags. The boring version of AI tooling is the useful one.