89 lines
3.0 KiB
Markdown
89 lines
3.0 KiB
Markdown
---
|
|
id: PLN-0053
|
|
ticket: system-os-service-ownership-and-module-layout
|
|
title: Move Logging Ownership To SystemOS
|
|
status: done
|
|
created: 2026-05-14
|
|
ref_decisions: [DEC-0024]
|
|
tags: [runtime, os, services, module-layout, vm, window-manager, logging]
|
|
---
|
|
|
|
## Briefing
|
|
|
|
Move `LogService` ownership from `VirtualMachineRuntime` to `SystemOS`, while
|
|
allowing VM execution code to use OS logging through an explicit reference or
|
|
handle.
|
|
|
|
## Source Decisions
|
|
|
|
- `DEC-0024`: `LogService` SHALL move from `VirtualMachineRuntime` to
|
|
`SystemOS`; VM execution MAY use an explicit OS logging reference or handle
|
|
but MUST NOT own logging.
|
|
|
|
## Target
|
|
|
|
Make logging an OS-owned service and reduce `VirtualMachineRuntime` to a user of
|
|
logging rather than its owner.
|
|
|
|
## Dependencies
|
|
|
|
- Source decision: `DEC-0024`.
|
|
- Depends on `PLN-0051`.
|
|
- May run after or alongside `PLN-0052`, but code integration is simpler after
|
|
`SystemOS` service ownership is established.
|
|
|
|
## Scope
|
|
|
|
- Add `LogService` ownership to `SystemOS`.
|
|
- Remove `log_service: LogService` from `VirtualMachineRuntime`.
|
|
- Update VM runtime methods that read/write logs to receive logging access from
|
|
`SystemOS` or a narrow explicit handle.
|
|
- Update construction paths so `LogService::new(4096)` is owned by `SystemOS`.
|
|
- Update tests that currently inspect runtime-owned logs.
|
|
|
|
## Out of Scope
|
|
|
|
- Do not change log capacity or log record semantics.
|
|
- Do not change VM syscall behavior except for the ownership path.
|
|
- Do not introduce compatibility accessors that imply VM ownership.
|
|
- Do not move filesystem or memcard ownership in this plan.
|
|
|
|
## Execution Plan
|
|
|
|
1. Add a `LogService` field to `SystemOS` and initialize it in `SystemOS::new`.
|
|
2. Remove `LogService` initialization and storage from
|
|
`VirtualMachineRuntime::new`.
|
|
3. Update VM logging call paths in `dispatch`, `tick`, lifecycle, and tests to
|
|
use OS-owned logging.
|
|
4. If borrow constraints require it, introduce a narrow logging handle/reference
|
|
parameter at the call boundary instead of giving the VM ownership.
|
|
5. Update all tests that assert logging behavior.
|
|
6. Run formatting and tests.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- `VirtualMachineRuntime` no longer stores `LogService`.
|
|
- `SystemOS` owns `LogService`.
|
|
- VM execution can still emit and expose logs through the existing behavior.
|
|
- No compatibility API suggests that logging remains VM-owned.
|
|
- Existing logging tests pass or are updated to assert OS ownership.
|
|
|
|
## Tests / Validation
|
|
|
|
- Run `cargo test -p prometeu-system`.
|
|
- Include focused tests covering VM log writes and reads after ownership moves
|
|
to `SystemOS`.
|
|
|
|
## Risks
|
|
|
|
- Borrowing constraints around `NativeInterface` may require a narrow access
|
|
pattern rather than simply borrowing all of `SystemOS`.
|
|
- Tests that currently construct only `VirtualMachineRuntime` may need to move
|
|
to `SystemOS` construction to reflect the new owner.
|
|
|
|
## Affected Artifacts
|
|
|
|
- `crates/console/prometeu-system/src/os/system_os.rs`
|
|
- `crates/console/prometeu-system/src/services/vm_runtime/**`
|
|
- Tests under the VM runtime module
|