84 lines
2.9 KiB
Markdown
84 lines
2.9 KiB
Markdown
---
|
|
id: PLN-0131
|
|
ticket: system-run-cart
|
|
title: Preserve Direct Cartridge Boot Coverage
|
|
status: done
|
|
created: 2026-07-03
|
|
ref_decisions: [DEC-0035]
|
|
tags: []
|
|
---
|
|
|
|
## Briefing
|
|
|
|
`DEC-0035` removes userland `system.run_cart`, but direct cartridge boot remains
|
|
mandatory for development, debugging, automated tests, and future single-game
|
|
launch scenarios. This plan protects that path while the guest syscall is
|
|
removed.
|
|
|
|
## Objective
|
|
|
|
Preserve and test host/CLI/debug direct cartridge boot without relying on a
|
|
guest syscall.
|
|
|
|
## Dependencies
|
|
|
|
- Source decision: `DEC-0035`.
|
|
- Can be implemented after or alongside `PLN-0129` and `PLN-0130`.
|
|
- Must not depend on `.pmc`, app catalog, launcher UX, `AGD-0041`, or
|
|
`AGD-0044`.
|
|
|
|
## Scope
|
|
|
|
- Identify direct boot entrypoints in `crates/tools/prometeu-cli/src/main.rs`,
|
|
`crates/host/prometeu-host-desktop-winit/src/lib.rs`,
|
|
`crates/host/prometeu-host-desktop-winit/src/debugger.rs`, and firmware
|
|
cartridge loading code.
|
|
- Add or preserve tests showing a cartridge can be loaded directly into
|
|
firmware/runtime from host or CLI paths.
|
|
- Ensure these paths do not call or require `system.run_cart`.
|
|
- Document the distinction between direct boot and guest navigation where
|
|
runtime specs describe boot behavior.
|
|
|
|
## Non-Goals
|
|
|
|
- Do not implement `Home -> another Game`.
|
|
- Do not add app-callable navigation.
|
|
- Do not require `.pmc`.
|
|
- Do not redesign cartridge loader internals beyond what is required to keep
|
|
direct boot working.
|
|
|
|
## Execution Method
|
|
|
|
1. Trace the CLI/debug direct boot path from cartridge path argument through
|
|
loader, firmware `load_cartridge`, and runtime initialization.
|
|
2. Add regression tests at the lowest practical layer proving direct boot still
|
|
reaches `GameRunning` for a valid game cartridge.
|
|
3. Add a guard or assertion that direct boot does not depend on `system.run_cart`
|
|
metadata.
|
|
4. Update docs/specs to describe direct boot as host/system-controlled.
|
|
5. Run targeted CLI/firmware/host tests.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- A valid game cartridge can still boot directly from host/CLI/debug paths.
|
|
- Direct boot does not depend on `system.run_cart` being in the guest syscall
|
|
registry.
|
|
- Existing debugger/handshake metadata that reports cartridge info still works.
|
|
- The direct boot behavior is documented as host/system entry, not guest ABI.
|
|
|
|
## Tests
|
|
|
|
- Add or preserve firmware tests around `load_cartridge` and `GameRunning`.
|
|
- Add or preserve host/CLI tests for cartridge path boot when practical.
|
|
- Run `cargo test` for `prometeu-firmware`, `prometeu-host-desktop-winit`, and
|
|
`prometeu-cli` where available.
|
|
|
|
## Affected Artifacts
|
|
|
|
- `crates/tools/prometeu-cli/src/main.rs`
|
|
- `crates/host/prometeu-host-desktop-winit/src/lib.rs`
|
|
- `crates/host/prometeu-host-desktop-winit/src/debugger.rs`
|
|
- `crates/console/prometeu-firmware/src/firmware/firmware.rs`
|
|
- `crates/console/prometeu-firmware/src/firmware/firmware_step_load_cartridge.rs`
|
|
- `docs/specs/runtime/`
|