# 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<BankCompositionDraft>`, 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<BankCompositionDraft>`;
- 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<BankCompositionDraft>`
- 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
