4.7 KiB
4.7 KiB
PR-28 Pack Wizard Public Contracts: Summary, Validation, and Execution
Domain Owner: docs/packer
Cross-Domain Impact: docs/studio
Briefing
The Studio Pack Wizard decision is now closed on the host side.
That decision makes the intended boundary explicit:
- Studio is a shell;
- packer owns summary, validation, pack execution, progress, and result semantics;
- the Studio-facing flow depends on three distinct calls:
summary,validation, andpack execution.
This PR creates the packer-side public contracts needed for that flow.
Reference decision:
Objective
Add public packer contracts for pack summary, pack validation, and pack execution so Studio can bind the wizard flow without inventing local semantics.
Dependencies
../agendas/Pack Wizard Studio Decision Propagation Agenda.md./PR-17-studio-runtime-adapter-and-assets-workspace-consumption.md./PR-19-api-surface-audit-model-separation-and-public-read-dtos.md./PR-08-assets-pa-and-companion-artifact-emission.md
Scope
- extend
PackerWorkspaceServicewith three explicit public operations:- pack summary
- pack validation
- pack execution
- add request/response messages for those operations in
prometeu-packer-api - add public DTOs required by those responses
- reuse existing API concepts wherever already adequate instead of cloning parallel concepts
- define result shapes that Studio can bind directly for:
SummaryValidationResult
- keep progress ownership aligned with the existing event-based packer operational model
Non-Goals
- no full
prometeu-packer-v1implementation of summary, validation, or pack execution in this PR - no Studio wizard implementation in this PR
- no cancellation contract in the first wave
- no speculative build-session abstraction
- no duplication of existing diagnostics DTOs if current public DTOs already satisfy the need
Execution Method
- Audit current public API shapes in
prometeu-packer-apiand reuse existing patterns for request/result naming, status, diagnostics, and progress. - Extend
PackerWorkspaceServicewith three explicit methods that match the Studio decision boundary. - Add request/result messages under
p.packer.messagesfor:- summary
- validation
- pack execution
- Add focused DTOs under the public API for:
- pack summary aggregate
- pack validation aggregate
- pack validation per-asset entry
- emitted artifact summary
- final pack execution summary
- Reuse existing public diagnostics DTOs for validation drill-down where possible.
- Keep progress delivery on the existing event path instead of embedding a second progress protocol into result DTOs.
- Keep naming aligned with the canonical artifact terminology
assets.pa.
Contract Direction
The new public surface should make these distinctions explicit:
- summary is read-only preflight information about the current pack set;
- validation is dry-run-like and non-emitting;
- pack execution is the only operation that emits artifacts;
- the pack set is the current
registered + included in buildset; - blocking diagnostics in that set make validation unsuccessful.
Acceptance Criteria
PackerWorkspaceServiceexposes three distinct public methods for summary, validation, and pack execution- the public API includes request/result messages for all three operations
- public DTOs exist for the Studio wizard to render summary, validation, and final result
- existing public diagnostics DTOs are reused where appropriate instead of duplicated
- progress remains aligned with the packer event model rather than a new ad hoc progress response shape
- the contract language uses
assets.paas the canonical emitted artifact name
Validation
- compile-level validation that
prometeu-packer-apiexposes the new methods and DTOs coherently - public API review for naming and reuse consistency
- contract-focused tests if lightweight API tests already exist for public message shapes
- Studio-side binding review to confirm the API is sufficient without local semantic reconstruction
Affected Artifacts
docs/packer/agendas/**docs/packer/pull-requests/**prometeu-packer/prometeu-packer-api/src/main/java/p/packer/PackerWorkspaceService.javaprometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/**prometeu-packer/prometeu-packer-api/src/main/java/p/packer/dtos/**