77 lines
3.3 KiB
Markdown
77 lines
3.3 KiB
Markdown
# PR-10f Bank Composition Apply Through Packer and Snapshot Refresh
|
|
|
|
Domain owner: `docs/studio`
|
|
Cross-domain impact: `docs/packer`
|
|
|
|
## Briefing
|
|
|
|
Close the write path for `Bank Composition` by routing `apply` through the packer service and rebinding the section from refreshed persisted state.
|
|
|
|
This is the slice where the section stops being draft-only and becomes a real persisted editor.
|
|
|
|
## Objective
|
|
|
|
After this PR:
|
|
|
|
- clicking `apply` sends the selected ordered files to packer;
|
|
- packer owns validation, manifest persistence, and minimal runtime snapshot refresh;
|
|
- `asset.json` persistence flows through `artifacts`, not `inputsByRole`;
|
|
- successful apply rebinds the section from refreshed persisted state;
|
|
- failed apply preserves the draft and keeps the section in editing mode.
|
|
|
|
## Dependencies
|
|
|
|
- [`../decisions/Bank Composition Persistence and Snapshot Propagation Decision.md`](../decisions/Bank%20Composition%20Persistence%20and%20Snapshot%20Propagation%20Decision.md)
|
|
- [`./PR-10d-bank-composition-family-policies-and-section-coordinator.md`](./PR-10d-bank-composition-family-policies-and-section-coordinator.md)
|
|
- [`./PR-10e-bank-composition-workspacebus-events-and-local-orchestration.md`](./PR-10e-bank-composition-workspacebus-events-and-local-orchestration.md)
|
|
- cross-domain dependency: packer-side message, persistence, and snapshot-refresh support for bank-composition apply
|
|
|
|
## Scope
|
|
|
|
- route section `apply` through the packer service boundary
|
|
- send selected ordered files from Studio to packer
|
|
- persist selection through `asset.json` `artifacts`
|
|
- refresh minimal runtime/details state after successful apply
|
|
- rebind the section from refreshed persisted state
|
|
- preserve draft state on apply failure
|
|
- surface local failure state plus `BankCompositionApplyFailed`
|
|
|
|
## Non-Goals
|
|
|
|
- no direct `asset.json` writes from Studio
|
|
- no fallback write path through legacy `inputsByRole`
|
|
- no broader manifest migration outside this flow
|
|
|
|
## Execution Method
|
|
|
|
1. Define the Studio-to-packer apply request path for bank composition.
|
|
2. Integrate section `apply` with the packer service.
|
|
3. Update the Studio side to await success/failure and rebind accordingly.
|
|
4. Land the paired packer-side persistence and minimal snapshot refresh support.
|
|
5. Add regression tests for success and failure behavior.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- Studio does not write `asset.json` directly for bank composition
|
|
- `apply` is executed by packer
|
|
- selected ordered files are persisted through `artifacts`
|
|
- after success, the section leaves edit mode and reloads from refreshed persisted state
|
|
- after failure, the section stays in edit mode and the draft is preserved
|
|
- apply lifecycle notifications reflect the actual result of the packer call
|
|
|
|
## Validation
|
|
|
|
- Studio unit tests for apply success rebinding
|
|
- Studio unit tests for apply failure preserving draft state
|
|
- packer tests for `artifacts` persistence and minimal snapshot refresh
|
|
- UI smoke validation for apply, success, and failure flows
|
|
|
|
## Affected Artifacts
|
|
|
|
- `prometeu-studio/src/main/java/p/studio/workspaces/assets/details/...`
|
|
- `prometeu-studio/src/main/java/p/studio/projects/...`
|
|
- `prometeu-studio/src/main/java/p/studio/events/...`
|
|
- `prometeu-packer/src/main/java/p/packer/...`
|
|
- `asset.json` persistence handling under the packer write path
|
|
- Studio and packer tests for bank-composition apply
|