3.6 KiB
| id | ticket | title | status | created | ref_decisions | tags | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0167 | runtime-owned-variable-glyph-bank-palette-protocol | Spec Contract Update for Variable Glyph Palettes | open | 2026-07-14 |
|
|
Briefing
DEC-0041 accepts variable glyph-bank palette serialization for
GLYPH/indexed_v1. The runtime specs must become the canonical source before
code and tooling are changed.
Decisions de Origem
DEC-0041- Variable Glyph Bank Palette Protocol
Alvo
Publish the runtime contract for variable glyph-bank palettes in the canonical runtime specs.
Escopo
- Update
docs/specs/runtime/15-asset-management.md. - Update
docs/specs/runtime/04-gfx-peripheral.md. - Remove or reword active spec text that requires exactly 64 serialized or resident palettes per glyph bank.
- Define
palette_countas serialized and resident palette count. - Define
palette_countas1..=64. - Define
palette_idvalidity aspalette_id < palette_countfor the loaded glyph bank. - Preserve RGBA8888, alpha-as-data, and ordinary index
0semantics.
Fora de Escopo
- Runtime code changes.
- Packer or studio code changes.
- New
GLYPH/indexed_v2format text. - Sparse-to-dense palette remapping.
Plano de Execucao
Step 1 - Update asset metadata contract
What: Change the GLYPH v1 metadata contract.
How: In docs/specs/runtime/15-asset-management.md, replace the exact
palette_count = 64 requirement with palette_count in 1..=64. State that
the field is both serialized palette count and resident palette count.
Files: docs/specs/runtime/15-asset-management.md
Step 2 - Update payload and decoded-size formulas
What: Make payload size formulas variable.
How: Define palette_bytes = palette_count * 16 * 4, then define
size = ceil(width * height / 2) + palette_bytes and
decoded_size = width * height + palette_bytes.
Files: docs/specs/runtime/15-asset-management.md
Step 3 - Update GFX palette reference semantics
What: Document bank-dependent palette_id validity.
How: In docs/specs/runtime/04-gfx-peripheral.md, make scene and sprite
composition text state that palette_id is valid only when it is lower than
the referenced glyph bank's palette_count.
Files: docs/specs/runtime/04-gfx-peripheral.md
Step 4 - Document explicit failure
What: Remove fallback ambiguity for missing palettes.
How: State that canonical composition must not substitute transparent,
black, or default colors for palette_id >= palette_count.
Files: docs/specs/runtime/04-gfx-peripheral.md,
docs/specs/runtime/15-asset-management.md
Step 5 - Run spec residue scan
What: Verify no active spec contradicts DEC-0041.
How: Search specs for fixed palette phrases and validate remaining hits are historical or explicitly bounded maximums.
Files: docs/specs/runtime/*.md
Criterios de Aceite
15-asset-management.mddefinespalette_countas1..=64.15-asset-management.mduses variable size formulas.04-gfx-peripheral.mddefines bank-dependentpalette_idvalidity.- Specs do not describe fixed 64 serialized palettes as the active contract.
- No v2 format is introduced.
Tests / Validacao
- Run
rg -n "palette_count|64 \\* 16|4096|palette_id" docs/specs/runtime. - Run
discussion validate.
Riscos
- The specs already contain mixed fixed and variable wording; partial edits may preserve contradiction.
palette_idfailure semantics may overlap with existing scene dependency fatal-failure text and must be worded consistently.