From e2a5a67621a193971f906cb2976486befd2df8ac Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Tue, 14 Jul 2026 15:54:28 +0100 Subject: [PATCH] implements PLN-0172 runtime glyph palette handoff --- discussion/index.ndjson | 2 +- ...ntime-spec-handoff-to-packer-and-studio.md | 50 ++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/discussion/index.ndjson b/discussion/index.ndjson index 58b108ed..fd1c724a 100644 --- a/discussion/index.ndjson +++ b/discussion/index.ndjson @@ -44,4 +44,4 @@ {"type":"discussion","id":"DSC-0033","status":"done","ticket":"system-os-service-ownership-and-module-layout","title":"Agenda - SystemOS Service Ownership and Module Layout","created_at":"2026-05-14","updated_at":"2026-05-15","tags":["runtime","os","services","module-layout","vm","window-manager","logging"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0042","file":"discussion/lessons/DSC-0033-system-os-service-ownership-and-module-layout/LSN-0042-systemos-service-ownership-boundary.md","status":"done","created_at":"2026-05-15","updated_at":"2026-05-15"}]} {"type":"discussion","id":"DSC-0036","status":"done","ticket":"prometeu-hub-ui-direction","title":"Agenda - Prometeu Hub UI Direction","created_at":"2026-05-15","updated_at":"2026-05-22","tags":["hub","ui","shell","system-apps","lifecycle","design-system"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0045","file":"discussion/lessons/DSC-0036-prometeu-hub-ui-direction/LSN-0045-hub-ui-slices-should-prove-os-boundaries.md","status":"done","created_at":"2026-05-22","updated_at":"2026-05-22"}]} {"type":"discussion","id":"DSC-0037","status":"done","ticket":"rgba8888-framebuffer-and-pixel-format-direction","title":"Agenda - RGBA8888 Framebuffer and Pixel Format Direction","created_at":"2026-05-22","updated_at":"2026-05-23","tags":["gfx","framebuffer","rgb565","rgba8888","renderer","assets","host","backend"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0046","file":"discussion/lessons/DSC-0037-rgba8888-framebuffer-and-pixel-format-direction/LSN-0046-pixel-format-contracts-must-move-as-one-surface.md","status":"done","created_at":"2026-05-23","updated_at":"2026-05-23"}]} -{"type":"discussion","id":"DSC-0046","status":"in_progress","ticket":"runtime-owned-variable-glyph-bank-palette-protocol","title":"Runtime-Owned Variable Glyph Bank Palette Protocol","created_at":"2026-07-14","updated_at":"2026-07-14","tags":["runtime","gfx","assets","glyph-bank","palette-serialization","protocol"],"agendas":[{"id":"AGD-0049","file":"AGD-0049-runtime-owned-variable-glyph-bank-palette-protocol.md","status":"accepted","created_at":"2026-07-14","updated_at":"2026-07-14"}],"decisions":[{"id":"DEC-0041","file":"DEC-0041-variable-glyph-bank-palette-protocol.md","status":"accepted","created_at":"2026-07-14","updated_at":"2026-07-14","ref_agenda":"AGD-0049"}],"plans":[{"id":"PLN-0167","file":"PLN-0167-spec-contract-update-for-variable-glyph-palettes.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0168","file":"PLN-0168-glyphbank-variable-palette-resident-model.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0169","file":"PLN-0169-asset-decode-validation-for-variable-glyph-palettes.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0170","file":"PLN-0170-composer-palette-reference-failure-semantics.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0171","file":"PLN-0171-variable-glyph-palette-tests-fixtures-and-residue-scan.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0172","file":"PLN-0172-runtime-spec-handoff-to-packer-and-studio.md","status":"open","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]}],"lessons":[]} +{"type":"discussion","id":"DSC-0046","status":"in_progress","ticket":"runtime-owned-variable-glyph-bank-palette-protocol","title":"Runtime-Owned Variable Glyph Bank Palette Protocol","created_at":"2026-07-14","updated_at":"2026-07-14","tags":["runtime","gfx","assets","glyph-bank","palette-serialization","protocol"],"agendas":[{"id":"AGD-0049","file":"AGD-0049-runtime-owned-variable-glyph-bank-palette-protocol.md","status":"accepted","created_at":"2026-07-14","updated_at":"2026-07-14"}],"decisions":[{"id":"DEC-0041","file":"DEC-0041-variable-glyph-bank-palette-protocol.md","status":"accepted","created_at":"2026-07-14","updated_at":"2026-07-14","ref_agenda":"AGD-0049"}],"plans":[{"id":"PLN-0167","file":"PLN-0167-spec-contract-update-for-variable-glyph-palettes.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0168","file":"PLN-0168-glyphbank-variable-palette-resident-model.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0169","file":"PLN-0169-asset-decode-validation-for-variable-glyph-palettes.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0170","file":"PLN-0170-composer-palette-reference-failure-semantics.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0171","file":"PLN-0171-variable-glyph-palette-tests-fixtures-and-residue-scan.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]},{"id":"PLN-0172","file":"PLN-0172-runtime-spec-handoff-to-packer-and-studio.md","status":"done","created_at":"2026-07-14","updated_at":"2026-07-14","ref_decisions":["DEC-0041"]}],"lessons":[]} diff --git a/discussion/workflow/plans/PLN-0172-runtime-spec-handoff-to-packer-and-studio.md b/discussion/workflow/plans/PLN-0172-runtime-spec-handoff-to-packer-and-studio.md index 95ccf160..e6eaf69f 100644 --- a/discussion/workflow/plans/PLN-0172-runtime-spec-handoff-to-packer-and-studio.md +++ b/discussion/workflow/plans/PLN-0172-runtime-spec-handoff-to-packer-and-studio.md @@ -2,7 +2,8 @@ id: PLN-0172 ticket: runtime-owned-variable-glyph-bank-palette-protocol title: Runtime Spec Handoff to Packer and Studio -status: open +status: done +completed: 2026-07-14 created: 2026-07-14 ref_decisions: [DEC-0041] tags: [runtime, packer, studio, handoff, glyph-bank, palette-serialization] @@ -110,3 +111,50 @@ to lessons. - Downstream repositories may still treat `metadata.palette_authored` as authoritative; this plan must make runtime-effective metadata explicit. - Creating handoff text too early could freeze pre-implementation details. + +## Handoff Note + +Runtime is the protocol authority for `GLYPH/indexed_v1`. Downstream packer and +studio work must follow the published runtime specs, not the historical studio +agenda. + +Canonical runtime references: + +- `docs/specs/runtime/15-asset-management.md`, section `4.1 GLYPH asset + contract in v1` +- `docs/specs/runtime/04-gfx-peripheral.md`, section `19.4 Palette + Association` +- `docs/specs/runtime/04-gfx-peripheral.md`, section `20.1.b Scene dependency + fatal boundary` +- `docs/specs/runtime/04-gfx-peripheral.md`, section `20.2 + composer.emit_sprite` + +Downstream producers must emit: + +- `codec = NONE` +- packed `u4` indexed pixels +- RGBA8888 palette bytes in `R, G, B, A` order +- root effective metadata fields `tile_size`, `width`, `height`, and + `palette_count` +- `palette_count` in `1..=64` +- exactly `palette_count * 16 * 4` palette bytes +- `size = ceil(width * height / 2) + palette_count * 16 * 4` +- `decoded_size = width * height + palette_count * 16 * 4` + +Downstream producers must not emit: + +- sparse-to-dense palette remapping metadata for v1 +- a `GLYPH/indexed_v2` payload for this change +- fixed 64-palette padding unless `palette_count = 64` and the payload + directly satisfies the runtime v1 contract +- effective runtime behavior based on `palette_authored`; that field is + informative unless a later runtime spec promotes it to an effective root + metadata field + +Required downstream fixture coverage: + +- one glyph bank with `palette_count = 1` +- one glyph bank with an intermediate `palette_count` +- one glyph bank with `palette_count = 64` +- payload-size and decoded-size assertions for each fixture +- a negative fixture or validation case for metadata/payload mismatch