Last updated: 2026-03-06
Each entry records:
- Date (
YYYY-MM-DD) - Decision
- Rationale
- Implications
- Evidence
- Decision: boot and required Lua modules are loaded from embedded blobs, not filesystem Lua files.
- Rationale: deterministic startup and reduced dependency on external script layout.
- Implications: changing boot/runtime Lua behavior requires updating embedded sources and rebuild.
- Evidence:
src/luaplayer.cpp,etc/boot.lua,Makefile.
- Decision: settings edits are staged in UI draft state and committed on confirm/leave through commit flow.
- Rationale: avoids repeated writes while navigating options; preserves atomic save/apply semantics.
- Implications: per-button changes inside Settings should not write immediately to
.pldrs. - Evidence:
bin/POPSLDR/ui.lua(queue_exit),bin/POPSLDR/system.lua(CommitSettingsChanges,SaveSettingsAtomic).
- Decision: classify mounted mass roots by mount-driver (
getMassMountDriver) wheremx4/sdcmeans MX4SIO. - Rationale: path-prefix heuristics alone are not reliable when devices expose
mass*:/roots. - Implications: list building and scene behavior must continue to consume classified roots, not guessed roots.
- Evidence:
bin/POPSLDR/system.lua(ClassifyMassRootDriver,BuildMassRootIdentity),src/luasystem.cpp(lua_get_mass_mount_driver).
- Decision: configured paths using
mc?:/are expanded tomc0:/thenmc1:/during probe/launch checks. - Rationale: improves compatibility across consoles/cards without requiring manual path rewrites.
- Implications: POPStarter and DKWDRV path validation must continue using alias-expansion helpers.
- Evidence:
bin/POPSLDR/system.lua(ExpandMcAlias,ResolveFirstExistingPath,ResolvePathWithEnsure),bin/POPSLDR/ui.lua(DKWDRV launch modal).
- Decision: CI package includes exact
PS1_POPSLOADER/*launcher files plusPOPS/PATCH_5.BINand rejects legacyPOPS/*.tm2entries. - Rationale: avoid packaging drift and guarantee predictable release payload.
- Implications: packaging changes require synchronized updates to workflow validation logic.
- Evidence:
.github/workflows/compilation.yml.
- Decision: once a device family is selected/locked in session (or constrained by boot source), incompatible family transitions are blocked with UI feedback.
- Rationale: prevents unstable runtime state from mixing already-loaded driver paths in one session.
- Implications: cross-family switching requires restart.
- Evidence:
bin/POPSLDR/ui.lua(DEVLOCK,canEnterDevice, lock modal),bin/POPSLDR/system.lua(DetectBootDevicelock setup).
- ART system design (source of truth, cache policy, fallback policy).
- SMB feature implementation contract (launcher handoff, error UX, storage assumptions).
- HDD exFAT feature model and relationship to existing BDMA settings.