4.1 KiB
| id | ticket | title | status | created | completed | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0042 | studio-play-stop-cartridge-flow | Ordered Plan 2 - Shared execution session and merged log contracts | review | 2026-04-06 |
|
Objective
Define and implement the shared execution-session boundary that exists outside visual workspace lifecycle and carries state plus merged log contracts for preparation and runtime.
Background
DEC-0021 and DEC-0022 require a shared state machine and a merged log destination independent of the visual DebugWorkspace. DEC-0020 requires shipper-owned preparation log aggregation.
This plan is intentionally cross-cutting and must land before the final orchestration and workspace consumption plans.
Scope
Included
- Shared session/service boundary outside the visual workspace.
- Minimum shared state machine:
idle,preparing,prepare_failed,connecting,running,runtime_failed,stopped. - Structured merged log-entry contract with visible source identity.
- Adapters for shipper-owned preparation output and runtime output to feed the shared session.
Excluded
- Final debugger workspace UI.
- Runtime process spawning details.
- Full handshake implementation details.
- Profiler behavior.
Execution Steps
Step 1 - Define shared state and session contracts
What: Introduce shared types and services for execution-session state.
How: Create a Studio-owned session/service API not tied to Workspace lifecycle. Add explicit transitions for the minimum required states.
File(s): prometeu-studio/src/main/java/p/studio/.../debug/* or equivalent shared execution package.
Step 2 - Define merged log-entry contracts
What: Add a structured log-entry model for merged execution logs.
How: Require at least source, message, severity, and ordering metadata such as timestamp/sequence. Preserve the source channels build, pack-validation, pack, and runtime.
File(s): shared execution/debug model package, service interfaces, DTOs/events.
Step 3 - Connect shipper output to the shared session
What: Feed shipper-owned preparation output into the shared session boundary. How: Adapt the shipper result/log stream into session log entries and preparation state transitions without moving ownership away from shipper. File(s): shipper adapters, shared session service, orchestration glue.
Step 4 - Connect runtime output to the shared session
What: Reserve the runtime side of the merged stream and state transitions for later orchestration plans.
How: Define append/update APIs now so later runtime plans can publish connecting, running, runtime_failed, and stopped without changing the contract shape.
File(s): shared session/service types and tests.
Test Requirements
Unit Tests
- Verify legal state transitions for the minimum state machine.
- Verify merged log entries preserve source identity and ordering metadata.
- Verify shipper output can be appended without collapsing channels.
Integration Tests
- Feed a simulated preparation success/failure sequence into the shared session and assert resulting state and log stream.
- Verify the shared session survives workspace recreation or absence.
Manual Verification
- Inspect a development build and confirm execution state remains available even if the visual debug surface is not yet mounted.
Acceptance Criteria
- A shared execution-session service exists outside the visual workspace lifecycle.
- The minimum state machine is explicitly implemented.
- Merged log entries preserve source identity for
build,pack-validation,pack, andruntime. - Shipper preparation output can flow into the shared session without changing shipper ownership.
Dependencies
- Accepted
DEC-0020,DEC-0021, andDEC-0022. PLN-0041shipper preparation foundation.
Risks
- State transitions may become duplicated between shell, workspace, and service if ownership is not kept strict.
- Log models that are too thin will force churn once the debugger surface exists.
- Overdesign here could slow down the simple first wave the decisions explicitly allow.