prometeu-studio/docs/packer/pull-requests/PR-13-embedded-bootstrap-container-owned-event-bus-and-packer-composition-root.md
2026-03-24 13:42:44 +00:00

4.0 KiB

PR-13 Embedded Bootstrap, Container-Owned Event Bus, and Packer Composition Root

Domain Owner: docs/packer Cross-Domain Impact: docs/studio

Briefing

After the cleanup baseline, the next step is to make embedded Studio bootstrap explicit and introduce one composition root for the packer.

This is where the Studio Container becomes a contract plus global holder, while the concrete embedded boot and prometeu-packer-v1 wiring move into the application layer.

Objective

Deliver the embedded bootstrap contract, explicit PackerEventSink wiring, and an explicit prometeu-packer-api to prometeu-packer-v1 composition root for Studio embedding.

Dependencies

Scope

  • define the embedded packer bootstrap contract
  • define the packer composition root for the active service wave inside the application layer
  • keep prometeu-studio bound only to prometeu-packer-api
  • wire the Studio Container contract/holder as the owner of the shared typed event bus reference used by the host-side PackerEventSink bridge
  • ensure application boot installs a Container implementation before packer-backed use begins
  • make the active embedded runtime entrypoint explicit enough that future capabilities do not depend on hidden constructors or side boot paths

Non-Goals

  • no runtime snapshot yet
  • no read migration yet
  • no write lane yet
  • no alternate bootstrap retained for inactive doctor, build/pack, or reconcile paths

Execution Method

  1. Define the explicit packer bootstrap/composition entrypoint.
  2. Make the host-provided PackerEventSink an explicit dependency for Studio embedding.
  3. Refactor Studio Container into a contract plus installed global holder.
  4. Move concrete packer wiring to the application layer that chooses prometeu-packer-v1.
  5. Remove remaining ambiguity around packer-local versus container-owned event visibility by bridging PackerEventSink into the host bus at the application layer.
  6. Remove remaining embedded bootstrap variants that only exist to keep inactive service surfaces alive.

Acceptance Criteria

  • the active packer wave has one explicit composition root
  • prometeu-studio depends only on prometeu-packer-api
  • the application layer installs the Container implementation and chooses prometeu-packer-v1
  • Studio Container owns the shared typed event bus reference through its installed implementation
  • the packer composition root receives an explicit PackerEventSink rather than reaching directly into host event bus types
  • packer-backed work starts only after Container.install(...)
  • packer publication uses PackerEventSink, and the application layer bridges that sink into the container-owned path when embedded in Studio
  • no public PackerEventSink.noop()-style default is treated as acceptable production bootstrap behavior
  • hidden bootstrap paths that only support inactive service surfaces are removed

Validation

  • bootstrap tests for the packer composition root
  • Studio boot tests for Container.install(...)
  • integration tests for packer event visibility through the host bridge into the container-owned path

Affected Artifacts

  • prometeu-packer/prometeu-packer-api/src/main/java/p/packer/**
  • prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/**
  • prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/events/**
  • prometeu-studio/src/main/java/p/studio/Container.java
  • prometeu-studio/src/main/java/p/studio/events/**
  • prometeu-app/src/main/java/p/studio/App.java
  • prometeu-app/src/main/java/p/studio/AppContainer.java