94 lines
4.2 KiB
Markdown
94 lines
4.2 KiB
Markdown
# PR-29 Pack Wizard Contract Adjustments for Summary and Validation
|
|
|
|
Domain Owner: `docs/packer`
|
|
Cross-Domain Impact: `docs/studio`
|
|
|
|
## Briefing
|
|
|
|
The first public contract wave for the `Pack Wizard` has already landed in `prometeu-packer-api`, but the newly accepted packer decision for `summary` and `validation` closes a more specific shape than the initial API slice.
|
|
|
|
In particular:
|
|
|
|
- `summary` is no longer aggregate-only;
|
|
- `summary` must expose a per-asset list for the active pack set;
|
|
- `validation` is primarily a per-asset blocking-diagnostics list;
|
|
- `validation` ordering is not a packer concern in the first wave;
|
|
- aggregate validation data is secondary, not the center of the contract.
|
|
|
|
This PR adjusts the public contracts so they match the accepted packer decision exactly.
|
|
|
|
Reference decision:
|
|
|
|
- [`../decisions/Pack Wizard Summary and Validation Contracts Decision.md`](../decisions/Pack%20Wizard%20Summary%20and%20Validation%20Contracts%20Decision.md)
|
|
|
|
## Objective
|
|
|
|
Align the public `prometeu-packer-api` contract for `summary` and `validation` with the accepted decision before deeper implementation work continues.
|
|
|
|
## Dependencies
|
|
|
|
- [`./PR-28-pack-wizard-public-contracts-summary-validation-and-execution.md`](./PR-28-pack-wizard-public-contracts-summary-validation-and-execution.md)
|
|
- [`../decisions/Pack Wizard Summary and Validation Contracts Decision.md`](../decisions/Pack%20Wizard%20Summary%20and%20Validation%20Contracts%20Decision.md)
|
|
- cross-domain reference:
|
|
[`../../studio/pull-requests/PR-11-pack-wizard-shell-and-packer-contract-consumption.md`](../../studio/pull-requests/PR-11-pack-wizard-shell-and-packer-contract-consumption.md)
|
|
|
|
## Scope
|
|
|
|
- adjust the public summary DTOs to include:
|
|
- aggregate included asset count
|
|
- per-asset summary list
|
|
- adjust the public validation DTOs to make the per-asset blocking-diagnostics list the primary payload
|
|
- add or rename DTOs as needed for:
|
|
- per-asset summary entry
|
|
- per-asset validation entry
|
|
- keep `lastModified` present in both summary and validation item contracts
|
|
- preserve the `read-only` and `non-mutating` nature of summary and validation
|
|
- keep the Studio-facing API explicit and aligned with the accepted packer decision
|
|
|
|
## Non-Goals
|
|
|
|
- no runtime implementation of summary in `prometeu-packer-v1`
|
|
- no runtime implementation of validation in `prometeu-packer-v1`
|
|
- no `pack execution` contract changes unless strictly required by compile compatibility
|
|
- no Studio implementation work in this PR
|
|
|
|
## Execution Method
|
|
|
|
1. Revisit the current `summary` and `validation` public DTOs in `prometeu-packer-api`.
|
|
2. Expand the summary result shape so it carries:
|
|
- total included asset count
|
|
- per-asset summary entries
|
|
3. Expand or reshape validation so the returned per-asset entries expose:
|
|
- asset id
|
|
- asset name
|
|
- asset path
|
|
- `lastModified`
|
|
- blocking diagnostics
|
|
4. Keep validation aggregate data optional or secondary rather than the primary response focus.
|
|
5. Preserve defensive-copy and validation patterns already used by public API records.
|
|
6. Update Studio compile surfaces only as needed to keep the workspace consuming the revised contracts coherently.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- the public summary contract matches the accepted decision shape
|
|
- the public validation contract matches the accepted decision shape
|
|
- `lastModified` exists in both per-asset summary and per-asset validation entries
|
|
- validation payloads carry blocking diagnostics only in the first wave
|
|
- compile succeeds across `prometeu-packer-api`, `prometeu-packer-v1`, and any directly affected Studio call sites
|
|
|
|
## Validation
|
|
|
|
- compile validation for `prometeu-packer-api`
|
|
- compile validation for `prometeu-packer-v1`
|
|
- compile validation for `prometeu-studio`
|
|
- lightweight API tests if public message-shape tests already exist
|
|
|
|
## Affected Artifacts
|
|
|
|
- `docs/packer/decisions/**`
|
|
- `docs/packer/pull-requests/**`
|
|
- `prometeu-packer/prometeu-packer-api/src/main/java/p/packer/PackerWorkspaceService.java`
|
|
- `prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/**`
|
|
- `prometeu-packer/prometeu-packer-api/src/main/java/p/packer/dtos/**`
|
|
- `prometeu-studio/**` compile-level consumers of the summary/validation contracts
|