fe8e24cf39a7b5870f2e804e0b0909bd466e9b49
test_committed_tres_matches_builder claimed to catch a builder/artifact drift in game_theme.tres, but its checks array hardcoded exactly three variation/state pairs (PrimaryCTA, ParchmentCard, DarkPanel) checking only bg_color. Every other variation — including all five added for the creation screen (SelectCard, SkillChip, ChosenTag, PrimaryTag, PrimaryCard) — could drift from the builder silently, and this test would keep passing on stale data. Textbook docs/traps.md failure: a test that cannot fail against the bug it names. Rewrote it to derive checks from ThemeKeys.ALL: for every variation, every stylebox state the builder actually set is compared (bg_color, border_color, border widths, corner radii for StyleBoxFlat), and every font colour role the builder actually set is compared too. Failures name the variation and the drifted property. Verified by deliberately drifting SkillChip's pressed stylebox in build_game_theme.gd without regenerating the .tres: the new test failed and named SkillChip/pressed/bg_color+border_color; the old three-pair version would not have caught it (SkillChip was never in its list). Reverted the drift; suite is green at 279 again. No pre-existing drift found in the committed artifact. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
coc-rpg
AI-driven single-player, party-based fantasy RPG. Godot 4 client, FastAPI proxy, AI as Dungeon Master.
Read CLAUDE.md first — project charter and working agreement. It is the source of truth. If code disagrees with it, the charter wins until the charter is changed.
The one rule
Code owns state. AI owns text. (charter §2)
Repo layout
/client Godot 4.7 game client (GDScript) — ALL game state, ALL game rules
/docs Client-specific docs (scenes, input, combat wiring)
/api FastAPI proxy — auth, metering, prompt routing, logging (charter §4)
/docs API-specific docs (endpoints, model routing, deploy)
/prompts Role prompts — source code, versioned, reviewed (charter §5, §16)
/content Authored game data — quests, NPC knowledge lists, fallback text
/quests Story skeletons and quest definitions
/npcs Per-NPC knowledge lists (charter §6 — "the whole design")
/fallback Authored degraded-DM text for every AI surface (charter §13)
/docs Cross-cutting docs — roadmap, ADRs, planning affecting both sides
/adr Architecture Decision Records
The three processes (charter §4)
client (GDScript) ──HTTP──▶ api (FastAPI) ──▶ Replicate / Ollama
The client holds no API key, ever. It knows one base URL and a set of role endpoints. It sends game state, receives text.
Description
Languages
Text
100%