91 lines
3.1 KiB
Markdown
91 lines
3.1 KiB
Markdown
---
|
|
id: PLN-0160
|
|
ticket: system-os-cartridge-switch-orchestrator
|
|
title: Add Dummy Boy Visual Switch Test Cartridge
|
|
status: open
|
|
created: 2026-07-05
|
|
ref_decisions: [DEC-0039]
|
|
tags: [runtime, os, lifecycle, game, cartridge, architecture]
|
|
---
|
|
|
|
## Briefing
|
|
|
|
DEC-0039 requires minimum evidence using two distinct test cartridges. The
|
|
existing stress cartridge proves execution/logging but is not visually distinct
|
|
enough for switch validation. A second cartridge, `dummy-boy`, must render an
|
|
oscillating-color square.
|
|
|
|
## Objective
|
|
|
|
Add a simple `test-cartridges/dummy-boy` cartridge that renders a visible square
|
|
with changing colors so Game switching can prove visual/session identity.
|
|
|
|
## Dependencies
|
|
|
|
- Source decision: DEC-0039.
|
|
- Can be implemented independently of PLN-0157 through PLN-0159.
|
|
- Required before PLN-0161 end-to-end validation.
|
|
|
|
## Scope
|
|
|
|
- Add `test-cartridges/dummy-boy/manifest.json`.
|
|
- Generate or add `test-cartridges/dummy-boy/program.pbx`.
|
|
- Add empty or minimal assets payload if the loader requires `assets.pa`.
|
|
- Implement Dummy Boy behavior:
|
|
- Game cartridge identity distinct from stress;
|
|
- deterministic visible square;
|
|
- color oscillates across frames;
|
|
- no dependency on final launcher UX.
|
|
- Add build/generation documentation or tests so the cartridge can be
|
|
regenerated safely if needed.
|
|
|
|
## Non-Goals
|
|
|
|
- Do not add final game content.
|
|
- Do not add `.pmc`.
|
|
- Do not depend on host screenshots for the first validation unless an existing
|
|
harness already supports it.
|
|
- Do not change stress cartridge behavior.
|
|
|
|
## Execution Method
|
|
|
|
1. Inspect the stress cartridge and any PBX generator tooling:
|
|
- `test-cartridges/stress-console`;
|
|
- `crates/tools/pbxgen-stress`;
|
|
- bytecode assembler helpers in `crates/console/prometeu-bytecode`.
|
|
2. Choose the smallest maintainable generator path:
|
|
- extend existing PBX generator if appropriate; or
|
|
- add a focused `pbxgen-dummy-boy` tool; or
|
|
- add deterministic generated PBX with source instructions.
|
|
3. Create `manifest.json` with unique `app_id`, title `Dummy Boy`, Game mode,
|
|
and version.
|
|
4. Generate `program.pbx` that renders the square and advances color over
|
|
frames.
|
|
5. Add tests or smoke checks that the cartridge is discoverable by games-root
|
|
discovery.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- `test-cartridges/dummy-boy` exists and loads as a Game cartridge.
|
|
- Dummy Boy has a unique `app_id` and title distinct from Stress.
|
|
- Dummy Boy renders a visible square.
|
|
- Square color changes deterministically over time.
|
|
- Games-root discovery sees both Stress and Dummy Boy.
|
|
- Existing stress cartridge remains unchanged.
|
|
|
|
## Tests
|
|
|
|
- `cargo test -p prometeu-hal`
|
|
- `cargo test -p prometeu-system`
|
|
- `cargo test -p prometeu-firmware`
|
|
- Run any cartridge generator tests added by this plan.
|
|
- Add or update tests for games-root discovery including Dummy Boy.
|
|
|
|
## Affected Artifacts
|
|
|
|
- `test-cartridges/dummy-boy/manifest.json`
|
|
- `test-cartridges/dummy-boy/program.pbx`
|
|
- `test-cartridges/dummy-boy/assets.pa` if required
|
|
- `crates/tools/*` cartridge generator tooling if needed
|
|
- `crates/console/prometeu-system/src/services/game_library.rs` tests if needed
|