Claude/app database inconsistencies nj0kqk#7424
Closed
fmoraldo-mithraw wants to merge 345 commits into
Closed
Conversation
Diff-checked: Memnyr Strategist Predictive Guidance, Uthar the Destined Ancestral Fortune. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
…Greater Good Updated the shared faction-rule definitions to v1.0 (diff-checked). Aeldari 'Star Engines' and GSC 'Cult Ambush' already matched the pack. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
…ture cannon D6+6, Ork saw blades AP-2 https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Necrons (Chronomancer, Geomancer, Orikan, Plasmancer, Psychomancer, Technomancer) and Genestealer Cults (Biophagus, Clamavus, Locus, Nexos): removed Leader core ability + attachment profile, added Support. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
…acities - Night Scythe: M -> 14", removed AIRCRAFT keyword. - Transport capacity rewrites: Falcon (Aeldari), Sagitaur (Votann), Stompa (Orks). Battlewagon already matched. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
…eams - New Smoke category + SMOKE keyword on Psychophage. - Night Scythe: added Hover core ability + Invasion Beams embark clause (Deep Strike already present). (Annihilation Protocol & Hyperphasing already matched v1.0.) https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Claude/lucid feynman xu oub
… factions) New 'Force Disposition' profileType in the game system (.gst) + a Force Disposition profile on each detachment selectionEntry holding its value (Take and Hold / Purge the Foe / Disruption / Reconnaissance / Priority Assets). Covers Space Marines (+DA/BA/SW/BT/DW), Grey Knights, Orks, Aeldari, Drukhari, Tyranids, Genestealer Cults, Necrons, Votann, T'au. Boarding Actions detachments (no disposition) left untouched. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Add Force Disposition to every matched-play detachment (145 across 14…
Every enhancement added with the faction packs (SM/DA/BA/SW/BT, GK and the 8 xenos factions) is now wired to the units its rules text names, resolved by keyword conjunction (e.g. 'KROOT SHAPER model only' = units having both the KROOT and SHAPER keywords -> Kroot Flesh/Trail/War Shaper). ~60 enhancements moved out of the generic character menu into shared entries with detachment-gated entryLinks on each matching datasheet (Enhancement category kept for the army cap of 4; 'excluding' clauses and Epic Hero exclusion honoured; Legends/Crucible sheets skipped). Also: - dedupe the duplicated 'Benediction of Fury' (Wrathful Procession) - extend Fulguris SPEEDER pair to Land Speeder Vengeance, Argent Assault pair to the GK Terminator characters (squads kept), Death in the Dark to Phobos characters/Wolf Scouts/Spectrus Kill Team - fix missed T'au v1.0 texts: Experimental Prototype Cadre x3 (now BATTLESUIT model) and Admired Leader - prune the 28 menu groups left empty; faction-wide bearers (e.g. 'ADEPTUS ASTARTES model only') stay in the character menu https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Re-target all recently added enhancements to their actual bearers
…rence - Orks.cat: delete the orphaned 'Runtherd' shared model entry (11e Gretchin datasheet has no Runtherd; nothing referenced any of its 17 internal ids). - Quartermaster Cadre Squad [Legends] (Astra Militarum Library): drop the 'Infantry Squad' bullet from its Leader list - that datasheet no longer exists. The other listed units (Death Korps of Krieg, Death Korps Grenadier Squad [Legends], Krieg Combat Engineers) all exist. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Data hygiene: remove orphan Runtherd entry + dead Infantry Squad refe…
…s = non-Epic characters - Upgrade-named enhancements (36): removed army-uniqueness (roster/force max-1 constraints and self-hide modifiers) so they can be taken multiple times, bounded by the army cap of 4 (Enhancement category); still max 1 per unit via the per-datasheet link group; keyword-matched targets now include Epic Hero units when keywords match (e.g. Dead Shiny Shootas -> + Ghazghkull, Boss Snikrot, Zodgrod). - Renamed 16 unit-bearer enhancements to carry the pack 'Upgrade' suffix (Dead Shiny Shootas [pack-confirmed], Necrons x5, Votann x4, GK x4, SM x7 incl. Bellicose Weapon Spirits, Death in the Dark, Petition/Entreaty, Fervent Exemplars, Inheritors of Sigismund) with entryLink names updated. - Non-Upgrade enhancements: non-Epic CHARACTERS only - removed the Argent Assault squad links (Psychic Celerity / Vigilance of Titan now on the 4 GK Terminator characters only) and pruned emptied groups. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Final enhancement rule: 'Upgrade' = unit-attached & repeatable; other…
…elerity & Vigilance of Titan The GK central Enhancements menu referenced both via entryLinks (a menu shape the earlier prune missed), so any GK character could still take them. They are now reachable only through their 4 Terminator character datasheets (Brother-Captain, Brotherhood Chaplain, Brotherhood Librarian, Grand Master). Also pruned 4 menu groups left empty by the earlier moves (Armoured Warhost, Argent Assault, Warrior Bioform Onslaught, More Dakka!). Repo-wide sweep confirms no other attached enhancement is still menu-linked (89 checked). https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
GK Argent Assault: remove leftover character-menu links for Psychic C…
Removed every enhancement->Epic-Hero entryLink (4 total): Dead Shiny Shootas Upgrade no longer reaches Boss Snikrot / Ghazghkull / Zodgrod (added before this rule existed), and Thundercowl Turbines drops Sammael. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Nightforged Battery, Thundercowl Turbines (Dark Angels) and Fierce Example (Space Wolves) target a non-character UNIT in their rules text but lacked the 'Upgrade' name. Renamed to '... Upgrade' (entry, profile, all entryLinks), dropped army-uniqueness so they are repeatable under the cap of 4, kept their unit attachments. Full audit of all 887 enhancement entries now reports zero rule violations. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Claude/lucid feynman xu oub
… of 4 - Merged duplicated container blocks repo-wide (the Orks central group declared its constraints in two <constraints> blocks; ~22 groups had two <modifiers> blocks, 4 GK entries two <categoryLinks>) - some parsers only read the first block, hiding half the rules. - One army cap per central Enhancements menu: the legacy GW max-3 (roster/force) constraint is now THE cap at max 4 roster (keeping its id so the Boarding Actions 'set -1' modifier still works); the redundant max-4 force constraint added alongside it is removed. Per-character 'max 1 self/parent' kept unchanged. - Added the Enhancement categoryLink to the 21 central menu groups that lacked it (SM already had it): menu picks now count toward the global roster cap of 4 together with unit-attached Upgrades. - Epic Hero hide-gate verified present on all central menus. - Full rule audit: 887 enhancement entries, 0 violations. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
… Yriel The Eldritch Raiders enhancement 'Pirate Prince' names Prince Yriel (an Epic Hero) as its only bearer in its rules text; the Epic menu lock made it unusable. Per explicit decision it is now the single allowed exception to the no-Epic rule: moved out of the character menu into a shared entry and attached to the Prince Yriel datasheet via an Eldritch Raiders-gated group (unique, Enhancement category for the cap of 4). Kharseth is named by no enhancement and stays Epic-locked. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Per decision, the flagged GW-design cases are sanctioned exceptions and now use the explicit per-datasheet attachment pattern (what the app reads as bearers), since their prose targets keywords granted at muster time and the menu offered no resolvable bearer: - Aeldari Corsair Enhancements (Veterans of the Void): Alacritous Assault, Exotic Munitions, Adrenal Infusions (Eldritch Raiders) and Infamy, Webway Pathstone, Archraider, Voidstone (Corsair Coterie) attached to the Anhrathe units (incl. Legends bands and the two Epic Heroes Prince Yriel & Kharseth - named exception), det-gated; their central-menu links removed. - Astra Militarum: Steel Hammer (Battalion Commander, Titan Killer -> TITANIC; Assault Hatches -> TITANIC TRANSPORT) and Hammer of the Emperor (Indomitable Steed, Calm Under Fire, Veteran Crew, Regimental Banner) attached to the exact super-heavy set that previously linked the menu (incl. Legends); menu links removed. - Chaos Knights left as-is: War Dogs can be NAMED characters (runtime keyword grant) and CK enhancements carry no bearer prose - the menu links are the correct encoding there. All moved entries keep/gain uniqueness (max 1 roster) and the Enhancement category (army cap of 4). https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Claude/lucid feynman xu oub
Captures the workflow for future packs: tooling (editor/lib), detachment data model, the Upgrade rule (name 'Upgrade' = unit-attached + repeatable + never Epic; others = non-Epic characters only), keyword bearer resolution, the central-menu invariants, known pitfalls (selfClose, duplicated blocks, dup-id, typographic apostrophes), constants, and the mandatory validation/AskUserQuestion gates. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Root CLAUDE.md is auto-loaded at session start: points to editor/FACTION_PACK_PROMPT.md and pins the house rules (Upgrade rule, keyword bearer resolution, DP + Force Disposition, mandatory validation). editor/README.md now links the prompt up top. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
… factions) CSM, World Eaters, Emperor's Children, Death Guard, Thousand Sons, Chaos Knights, Chaos Daemons - per the v1.0 tables. The 17 new detachments will receive theirs at creation. https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Add the 3 new detachments with pack-exact rules + enhancements, DP and Force Disposition per the pack: - Brazen Engines (Rampaging Terrors / Purge the Foe / 1DP) with unit upgrades Talons of Butchery (Maulerfiend) and Murder-Forged Entity (World Eaters Vehicle). - Butchers of Khorne (Adamantine Avalanche / Disruption / 1DP) with unit upgrades Sanctified in Slaughter and Gore-Stained Veterans (Terminator Squad). - Vessels of Wrath: reconcile the pre-v1.0 stub to the pack — rewrite Wrath of Khorne, Archslaughterer and Gateways to Glory to v1.0; drop the non-pack stub enhancements Vox-Diabolus and Avenger's Crown. Unit upgrades follow the house rule: shared entries wired to bearers by keyword, Enhancement cap category, repeatable, never on an Epic Hero. Validated: xmllint, catalog.validate ok (0 error), 0 new duplicate ids.
- Contagion Engines (Warped and Rusted Animus / Purge the Foe / 1DP) with unit upgrades Parasitic Woe-Reaper (Contagion Engine units) and Lancet of the Worldsore (Helbrute / Myphitic Blight-hauler). - Paragons of Putrescence (Hypervirulent Strains / Priority Assets / 1DP) with character enhancements Rejuvenating Swarm and Host of the Hybridised Pox (Death Guard Infantry characters). - Flyblown Host: reconcile the pre-v1.0 stub to the pack — refresh Verminous Haze, rebuild Insectile Murmuration and Plagueveil as Plague Marines unit upgrades; drop the non-pack stub entries (Droning Chorus, and the mis-assigned Rejuvenating Swarm now correctly under Paragons). Validated: xmllint, catalog.validate ok (0 error), duplicate-id groups unchanged vs HEAD, Upgrade audit clean (cumulable, capped, no Epic).
Imperial Agents: price psycannon (+5) and twin multi-melta (+15)
Kravek Morne (Epic Hero, eec8-c21f-c284-a682) had no <costs> element at all; the MFM lists it at 120 pts. Add the pts cost. Found via a full MFM-vs-data base-points / size-tier / repeat-cost audit — the only genuine points gap. xmllint OK, catalog.validate 0 error. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
CSM: add missing points cost to Kravek Morne (120 pts)
…tion) Detachment DP costs vary by sub-chapter in the MFM, but the shared detachments in Space Marines.cat carried a single DP value. Add chapter-cost-style overrides (set DP modifier conditioned on primary-catalogue), keeping the base unchanged: - Stormlance Task Force (base 3 DP) -> 2 DP for Black Templars, Blood Angels, Deathwatch (Dark Angels / Space Wolves stay 3). - Bastion Task Force (base 2 DP) -> 3 DP for Black Templars (others stay 2). Same mechanism as unit chapter-cost (MARINE_CHAPTER_COST_APP_PROMPT.md), applied to the DP field. Derived from the per-chapter detachment list (5 chapters). xmllint OK, catalog.validate 0 error. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Note in MARINE_CHAPTER_COST_APP_PROMPT.md that shared detachment DP costs also vary by sub-chapter via the same primary-catalogue set-modifier (field = DP typeId), so a consuming app evaluating cost modifiers generically handles it with no special logic. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Claude/lucid feynman xu oub
Add DETACHMENT_DP_APP_PROMPT.md. Shared Space Marine detachments carry a base DP cost plus primary-catalogue-conditioned `set` modifiers on the DP cost type (0d99-4ee2-7b3c-1f5a) — same mechanism as unit chapter-cost but on the DP field. The app must evaluate DP like any cost type (apply the set when the roster's primary chapter matches), not special-case pts only. Examples: Stormlance 3->2 for BT/BA/DW, Bastion 2->3 for BT. Data is correct; app-side eval only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
…ot 2 smash)
The Boss Nob "Wargear Options" group is min=2/max=2 with Rokkit pistol {min=1,
max=2} and Smash hammer {max=1} — so 2 smash hammers is already illegal in data.
But neither option had a defaultAmount, so the app guessed the default wrong
(2 smash hammers, violating smash max=1 and rokkit min=1). Add defaultAmount=1 to
both so the default loadout is 1 rokkit pistol + 1 smash hammer, matching the
datasheet ("equipped with: rokkit pistol; smash hammer; choppa"). Replacing the
smash hammer still gives 2 rokkit pistols.
xmllint OK, catalog.validate 0 error.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Scan of all min>=2 count-based weapon groups without an explicit default found only these two (Legends Ork walkers): "Wargear Options" min=2/max=2 over Dread killsaw / Killkannon / Dread rippa klaw (all free, max=2 each), no defaultAmount, so the app guesses 2 of 3. Add defaultAmount=1 to killsaw + rippa klaw (two close-combat arms) so the default is a valid 2-weapon loadout. Best-effort default for Legends units; adjust if the official loadout differs. (The Deathwatch Fortis "Squad Members" group flagged by the scan is a model- composition group, not weapons — false positive, left as-is.) xmllint OK, catalog.validate 0 error. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Claude/lucid feynman xu oub
… groups Mandatory single-choice weapon groups (min>=1/max=1, >=2 weapon options) that had no defaultSelectionEntryId, no defaultAmount and no min-forced option -> the app had to guess which weapon to show (often nothing / wrong). Add defaultSelectionEntryId pointing to a sensible standard weapon per group, picked by a "basic weapon first" heuristic (bolt/heavy-bolt pistol, chainsword, flamer, heavy bolter...), skipping combined-loadout options. 50 groups across 13 files (SM + chapters, CSM/EC/WE, GSC, Aeldari, AM, Agents, Votann). All weapons are free, so this changes only the default shown, not points. Pure attribute additions; xmllint OK, catalog.validate 0 error, 0 gaps remaining. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Set default weapon (defaultSelectionEntryId) on 50 single-pick weapon…
…, etc.) Count-based weapon groups (min=max=N>=2) that named a default weapon via defaultSelectionEntryId but had no defaultAmount: the app knew WHICH weapon was default but not HOW MANY (N), so it showed no weapons. Add defaultAmount=N to the default option on 15 such groups, incl. Drukhari Ravager (3x Dark Lance), Wraithlord, Telemon/Achillus/Contemptor/Leviathan/Decimator dreadnoughts, Chaos Acastus Porphyrion, Hekaton Land Fortress, Warlord Titan, Grot Tank, etc. Also fixed Tankbustas Boss Nob: its defaultSelectionEntryId was dangling (pointed to a non-existent id); repoint to Rokkit pistol and set defaultAmount=1 on rokkit pistol + smash hammer (default 1+1, not 2 smash) like the Breaka Boyz Boss Nob. xmllint OK, catalog.validate 0 error. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
…ups) Add DEFAULT_LOADOUT_APP_PROMPT.md. The app failed to show a model's weapons (e.g. Ravager's 3 dark lances) because the default loadout includes count-based weapon groups (min=N) it didn't auto-fill. Document: always-on min>=1 weapons + fill each count group to N using defaultAmount (per-option counts), else defaultSelectionEntryId x min, else first option x min — never leave a min=N slot empty. Data is correct; app-side display/eval only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YbxbnBDLLS42pVZJygRgE
Claude/lucid feynman xu oub
§4 décrivait l'entrée scindée `(additional)` comme « encodage confirmé », alors qu'elle est abandonnée (CLAUDE.md règle #5) au profit du modifier de coût `increment` + marqueur `repeat-cost: threshold=N delta=Δ`. Ajout d'un bandeau de dépréciation renvoyant vers REPEAT_COST_APP_PROMPT.md ; la description de l'ancien encodage est conservée uniquement pour reconnaître d'éventuelles jumelles résiduelles. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H91iCeAmyQaQemrLgvLLyy
Matérialise les bonus offensifs de capacités/datasheet en marqueurs déclaratifs <comment>sim-mod: …</comment> (1er enfant de la selectionEntry), lus par le simulateur de dégâts de l'appli pour les proposer en bascule. - Castellan Crowe : Champion of the Order of Purifiers (+1 A à Purifying Flame en menant) + Foesight (relance touche vs Character). - Grand Master : Might of Titan (1×/bataille, +3 A & +3 S en mêlée). - Brother-Captain : Hammerhand (Lethal Hits en mêlée en menant). Documente la convention dans editor/SIM_MOD_APP_PROMPT.md + index CLAUDE.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H91iCeAmyQaQemrLgvLLyy
Met à jour SIM_MOD_APP_PROMPT.md : un effet weapon="…" ne touche que les profils correspondants via une surcouche par arme passée au moteur, et l'appli peint en vert les valeurs déplacées par un bonus actif. Remplace l'ancienne « limite connue » (repli global). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H91iCeAmyQaQemrLgvLLyy
fmoraldo-mithraw
requested review from
a team,
CrusherJoe,
Dunamis55,
FarseerVeraenthis,
Mad-Spy,
Thairne and
acebaur
as code owners
June 29, 2026 20:07
Boons of Deimos Upgrade (Purgation Squad) : +2 S aux attaques de tir → sim-mod: source="Boons of Deimos" str=+2 when=ranged. Premier marqueur sur une amélioration (le simulateur ne l'expose que si elle est prise). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H91iCeAmyQaQemrLgvLLyy
…ensives Encodage de masse des bonus offensifs modélisables par le simulateur de dégâts, sur 36 catalogues : 883 entrées (capacités de datasheet + entrées d'amélioration) portant 1198 lignes sim-mod, qui se résolvent en ~2926 unités + 333 améliorations une fois l'import inter-catalogues appliqué. Couvre : +A/+S/+PA/+D, +touche/+blessure, Sustained/Lethal/Dev/Anti/ Twin-linked/ignore-couvert, seuils de critique, relances touche/blessure/ dégâts. Portée par arme (weapon="…"), mêlée/tir (when=), et conditions vs=/oncePer=/onCharge/whileLeading + flag générique `conditional` pour les déclencheurs situationnels (décochés par défaut). Auras vers d'autres unités, debuffs ennemis, défensif, valeurs absolues et règles d'armée écartés. Marqueurs posés en 1er enfant <comment>, fusionnés avec les marqueurs existants (repeat-cost/chapter-cost/leader-link préservés). Validé : xmllint, catalog.validate (0 erreur), 0 id dupliqué introduit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H91iCeAmyQaQemrLgvLLyy
Contributor
|
Please do not submit unrequested pull requests. |
Collaborator
|
As an addendum to the above, this is not the dataset for 11th Edition. That dataset will hopefully release later this week; this dataset will be retained as a legacy builder for those who wish to continue playing games of 10th Edition. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.