# PR-10d Bank Composition Family Policies and Section Coordinator Domain owner: `docs/studio` Cross-domain impact: `docs/packer` ## Briefing Introduce the section-scoped coordinator for `Bank Composition`, built around `StudioFormSession`, plus the first family-specific draft factories and policies. This is the slice where the section starts behaving like an actual editor instead of just a shell. ## Objective After this PR: - `Bank Composition` has a section-scoped coordinator built around `StudioFormSession`; - the section can enter edit mode and maintain draft state; - draft state can transfer rows between `available` and `selected`; - right-list ordering can update draft state; - family-specific rules are applied through draft factories and policies, not component-local logic. ## Dependencies - [`../decisions/Bank Composition Middleware and Staged Editing Decision.md`](../decisions/Bank%20Composition%20Middleware%20and%20Staged%20Editing%20Decision.md) - [`./PR-10a-bank-composition-details-dto-projection.md`](./PR-10a-bank-composition-details-dto-projection.md) - [`./PR-10b-bank-composition-base-components.md`](./PR-10b-bank-composition-base-components.md) - [`./PR-10c-bank-composition-section-shell-and-form-session-integration.md`](./PR-10c-bank-composition-section-shell-and-form-session-integration.md) ## Scope - add `BankCompositionDraft` - add the section-scoped coordinator around `StudioFormSession` - add family-specific draft factories - add family-specific policies for: - transfer eligibility - reorder effects - capacity usage - hard-limit blockers - publish one section-facing view model for shell, lists, meter, blockers, and hints ## Non-Goals - no public `workspaceBus` contract yet - no packer apply persistence yet - no final cross-domain mutation messages yet ## Execution Method 1. Add the draft model for bank composition. 2. Add the section-scoped coordinator around `StudioFormSession`. 3. Add the first family-specific policy/factory implementations. 4. Route dual-list and meter inputs through the coordinator view model. 5. Support edit, reset, and cancel with real draft recomputation. 6. Keep apply stubbed or disabled until the write path lands. ## Acceptance Criteria - the section can enter editing mode and maintain draft state - dual-list moves update draft state through the coordinator - right-list ordering updates draft state through the coordinator - meter state reflects policy-driven capacity calculations - tile and sound family differences are modeled through policies, not through component branches - `reset` and `cancel` work through `StudioFormSession` ## Validation - unit tests for `BankCompositionDraft` - unit tests for tile and sound policy behavior - unit tests for transfer blocking and reorder effects - unit tests for `StudioFormSession` integration and draft lifecycle ## Affected Artifacts - `prometeu-studio/src/main/java/p/studio/workspaces/assets/details/...` - family-specific policy and draft-factory classes under `prometeu-studio/src/main/java/p/studio/workspaces/assets/...` - tests for coordinator and policy behavior - cross-domain touchpoint: any details data gaps exposed by the new policy logic