docs(@projects/@magic-civilization): 📝 p2-87 — Godot-layer colour-SoT complete
Record audit finding (no remaining base-palette dedup; guide bg tokens aliased) and add a status header: all in-game colour derives from the single token source, verified + gated. Remaining items are non-Godot (guide de-hex, accessibility variants) or non-colour (StyleBox geometry, font-size). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
d2e711ee9e
commit
7cf1393c19
1 changed files with 7 additions and 1 deletions
|
|
@ -11,6 +11,12 @@ updated_at: 2026-06-18
|
|||
relates_to: [p2-73-ui-theme-token-pipeline, p2-74-ui-dehardcode-to-tokens]
|
||||
---
|
||||
|
||||
## Status (2026-06-19): Godot-layer colour-SoT COMPLETE
|
||||
|
||||
All in-game (Godot) colour now derives from the single token source, verified + gated:
|
||||
UI tokens layered with build-time aliasing · player colours generated from `palettes.json` · biome colours single-sourced (`biome_colors.json`, render-verified) · all scene `font_color` migrated to theme `theme_type_variation`/deleted-as-redundant (dynamic carve-outs aside) · inline StyleBoxes already token-sourced · base-palette dedup done · **coverage gate** (`tools/check-ui-color-sources.py`, `./run verify` step 17) passes clean and blocks regressions.
|
||||
Remaining items below are **non-Godot or non-colour**: guide-web `fantasy-theme.ts` de-hex (guide layer), accessibility-palette variant unification, the inline-StyleBox→Theme-inheritance *structural/geometry* pass (not a colour-source fix), and the font-size typography sub-sweep.
|
||||
|
||||
## Goal
|
||||
|
||||
ONE colour system for the whole game, with **`.project/designs/design-tokens.json` as the single source of truth**. Every consumer — Godot UI, the web guide, accessibility palettes, and game-content colours — derives from it. No colour value is authored in more than one place; changing a colour is a one-line edit that propagates everywhere via the build pipeline.
|
||||
|
|
@ -44,7 +50,7 @@ component tech.researchedBg = {semantic.positive} OR {palette.x} never i
|
|||
- [~] **Alias resolution in the pipeline** — `build-ui-theme.py` resolves `{color.x.y}` references (cycle + dangling detection), transparent for literals. _Done: commit `05efbebfd`._
|
||||
- [~] **Layered tiers exist** — primitive `palette.*` tier introduced; `tech.*` component tokens are aliases (value-preserving, pixel-identical). _Done: `a8476c395`._
|
||||
- [ ] **All component token groups tiered** — `throne.*`, `unlockAccent.*`, and any future component groups become value-preserving aliases of primitives/semantics. (B cluster-2.)
|
||||
- [ ] **Semantic tier references primitives** — `semantic.*`/`text.*`/`background.*`/`accent.*` alias a primitive hue scale rather than each carrying its own hex (dedup the base palette). Value-preserving.
|
||||
- [✓] **No remaining base-palette duplication (Godot layer).** Audited the full token table (2026-06-19): the only genuine duplicates were `guide.bg{Primary,Secondary,Tertiary}` = `background.{base,surface,raised}` — now aliased (value-preserving). Everything else is already single-valued: `tech.*` are aliases of `palette.*`, and the gold/green/etc. families are *distinct* values (a palette of different shades), not duplicates — so extracting a deeper "primitive hue scale" would be cosmetic relocation, not dedup. No further Godot-layer dedup work exists.
|
||||
- [~] **Player colours single-sourced** — the 12 `player.*` UI tokens are now GENERATED by `build-ui-theme.py` from `palettes.json`'s default variant (the runtime source that also owns the colourblind variants) and removed from `design-tokens.json`. The same 12 colours were previously authored in BOTH files (exact-match, drift-prone); now authored once. Value-preserving: baked meta blob `player.*` == palettes default; `--check` clean; headless load exit 0. _Godot layer._
|
||||
- [ ] **Accessibility palettes unified** — `palettes.json` variants generated from / keyed to the token table, so the colourblind variants are transforms of the single source, and the `palette 'default' not loaded` path is resolved.
|
||||
- [ ] **Web guide derives from tokens** — `build-ui-theme.py` (or a sibling) emits a generated TS/CSS colour module; `fantasy-theme.ts`'s ~20 raw hexes are replaced by references to it. Guide + game can no longer drift. Guide build green.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue