prometeu-runtime/discussion/workflow/plans/PLN-0054-move-fs-and-memcard-ownership-to-systemos.md
2026-05-14 18:35:56 +01:00

3.4 KiB

id ticket title status created ref_decisions tags
PLN-0054 system-os-service-ownership-and-module-layout Move FS And Memcard Ownership To SystemOS done 2026-05-14
DEC-0024
runtime
os
services
module-layout
vm
window-manager
logging

Briefing

Move VirtualFS and MemcardService ownership from VirtualMachineRuntime to SystemOS, preserving current VM filesystem and memcard behavior.

Source Decisions

  • DEC-0024: VirtualFS and MemcardService SHALL move from VirtualMachineRuntime to SystemOS; VM execution may use them, but OS owns the service state.

Target

Make filesystem and memcard OS-owned services while keeping VM syscalls and tests behaviorally equivalent.

Dependencies

  • Source decision: DEC-0024.
  • Depends on PLN-0051.
  • Should run after PLN-0053 so the pattern for VM access to OS-owned services is already established.

Scope

  • Add VirtualFS, FsState, MemcardService, open file handle state, and related handle allocation state to SystemOS if they are currently VM-owned service state.
  • Remove direct ownership of VirtualFS and MemcardService from VirtualMachineRuntime.
  • Update FS and memcard syscall paths so VM execution uses OS-owned services.
  • Update tests that currently create a bare VirtualMachineRuntime when they need filesystem or memcard services.
  • Keep service modules under services/fs and services/memcard.

Out of Scope

  • Do not redesign filesystem semantics, path normalization, memcard slot semantics, or persistence policy.
  • Do not introduce process permissions or mount namespaces.
  • Do not change cartridge ABI.
  • Do not move unrelated telemetry, certification, asset, or debug state unless required by compilation and explicitly documented in implementation evidence.

Execution Plan

  1. Identify the complete set of FS/memcard-owned fields currently stored in VirtualMachineRuntime.
  2. Add the OS-owned fields to SystemOS and initialize them in SystemOS::new.
  3. Remove those service fields from VirtualMachineRuntime.
  4. Update VM dispatch/syscall code to operate on OS-owned FS and memcard state through explicit references or narrow access methods.
  5. Update tests to construct SystemOS when testing FS/memcard behavior through VM execution.
  6. Run formatting and the affected Rust tests.

Acceptance Criteria

  • VirtualMachineRuntime no longer owns VirtualFS or MemcardService.
  • SystemOS owns filesystem and memcard service state needed by VM execution.
  • Existing FS and memcard behavior is preserved.
  • No compatibility path implies VM ownership of FS or memcard services.
  • Any remaining VM-owned fields are execution-specific and justified by the implementation evidence.

Tests / Validation

  • Run cargo test -p prometeu-system.
  • Include focused FS and memcard tests after updating constructors/access paths.

Risks

  • FS and memcard syscalls are stateful and may be coupled to open handle fields in VirtualMachineRuntime; the implementation must move the whole service state coherently.
  • Bare VM tests may need broader OS fixtures, which can reveal unrelated setup assumptions.

Affected Artifacts

  • crates/console/prometeu-system/src/os/system_os.rs
  • crates/console/prometeu-system/src/services/fs/**
  • crates/console/prometeu-system/src/services/memcard.rs
  • crates/console/prometeu-system/src/services/vm_runtime/**
  • FS/memcard runtime tests