prometeu-studio/discussion/workflow/plans/PLN-0081-rgba8888-packer-and-studio-spec-propagation.md

3.9 KiB

id ticket title status created completed ref_decisions tags
PLN-0081 studio-packer-rgba8888-asset-pipeline RGBA8888 Packer and Studio Spec Propagation review 2026-05-23
DEC-0037
specs
packer
studio
rgba8888

Objective

Propagate DEC-0037 into the normative Studio and packer specifications before code implementation starts.

Background

DEC-0037 keeps GLYPH/indexed_v1 but changes its palette contract from RGB565 to RGBA8888. Specs currently still describe RGB565 palette bytes, convertedRgb565, and a 2048-byte palette block.

Scope

Included

  • Update packer specs for asset.json palette metadata and assets.pa glyph-bank payload layout.
  • Update Studio asset workspace specs if they expose palette metadata or details/read projection behavior.
  • Preserve the fixed 64-palette model and explicitly leave DSC-0005 for a later palette-count optimization.

Excluded

  • Code changes.
  • Test changes.
  • Variable palette-count serialization.
  • Runtime spec changes, except references to runtime DEC-0029.

Execution Steps

Step 1 - Update asset declaration palette fields

What: Replace originalArgb8888/convertedRgb565 examples and rules with canonical rgba8888.

How: Edit the palette portions of the asset declaration spec so output.pipeline.palettes[*].palette.rgba8888 is the canonical field. State that ARGB may be an input API detail but is not canonical authored/projected palette data.

File(s):

  • docs/specs/packer/3. Asset Declaration and Virtual Asset Contract Specification.md

Step 2 - Update glyph-bank payload layout

What: Change GLYPH/indexed_v1 palette layout from RGB565 to RGBA8888.

How: Keep the format name. Change the palette block from 64 * 16 * 2 = 2048 bytes to 64 * 16 * 4 = 4096 bytes. Update size and decoded-size formulas. State that palette entries use runtime RGBA channel order.

File(s):

  • docs/specs/packer/4. Build Artifacts and Deterministic Packing Specification.md

Step 3 - Document alpha and index semantics

What: Document that palette index 0 is ordinary and all 16 palette entries are usable.

How: Add normative rules that transparency and partial transparency are encoded only by RGBA alpha, magenta color-key is removed, and partial alpha is valid palette data.

File(s):

  • docs/specs/packer/3. Asset Declaration and Virtual Asset Contract Specification.md
  • docs/specs/packer/4. Build Artifacts and Deterministic Packing Specification.md

Step 4 - Update Studio-facing projection rules

What: Ensure Studio-facing docs use rgba8888 where palette metadata is visible.

How: Update asset workspace language only where it describes palette read, details, scene preview, or palette default behavior. Keep scene palette_id semantics unchanged.

File(s):

  • docs/specs/studio/4. Assets Workspace Specification.md

Test Requirements

Unit Tests

  • Not applicable for this spec-only plan.

Integration Tests

  • Not applicable for this spec-only plan.

Manual Verification

  • Search specs for stale RGB565, convertedRgb565, 2048-byte palette block, reserved index 0, and magenta color-key language.

Acceptance Criteria

  • Packer specs define rgba8888 as the canonical palette field.
  • GLYPH/indexed_v1 remains named exactly that.
  • Palette block formulas use 64 * 16 * 4 = 4096.
  • Specs state palette index 0 is ordinary and all 16 entries are usable.
  • Specs state partial alpha is valid and magenta color-key is removed.
  • Specs leave DSC-0005 variable palette-count work out of scope.

Dependencies

  • Depends on accepted DEC-0037.
  • Should complete before code plans are implemented.

Risks

  • Leaving stale RGB565 examples in specs will make implementation review ambiguous.
  • Over-editing scene specs could accidentally imply a scene payload change that DEC-0037 does not authorize.