86 lines
4.1 KiB
Markdown
86 lines
4.1 KiB
Markdown
# Bank Composition Section Shell Decision
|
|
|
|
Status: Decided
|
|
Cycle: 2026-03
|
|
Domain Owner: `docs/studio`
|
|
Cross-Domain Impact: `docs/packer`
|
|
|
|
## Context
|
|
|
|
The `Bank Composition` area needs a visible section shell inside `Asset Details` before behavior and persistence are wired.
|
|
|
|
The section should not invent a parallel editing model.
|
|
It needs to align with the existing `Asset Details` section rhythm, especially `Runtime Contract`.
|
|
|
|
The DTO projection boundary and the first-wave component direction were already closed in:
|
|
|
|
- [`Bank Composition Details DTO Projection Decision.md`](./Bank%20Composition%20Details%20DTO%20Projection%20Decision.md)
|
|
- [`Bank Composition Base Components Decision.md`](./Bank%20Composition%20Base%20Components%20Decision.md)
|
|
|
|
This decision closes the shell direction discussed in:
|
|
|
|
- [`Agenda-03-Asset-Bank-Composition-Section-Shell.md`](../agendas/Agenda-03-Asset-Bank-Composition-Section-Shell.md)
|
|
|
|
## Decision
|
|
|
|
Create the `Bank Composition` section shell early, before full behavior is implemented.
|
|
|
|
The shell contract is:
|
|
|
|
1. `Bank Composition` is a `VBox` section inside `Asset Details`;
|
|
2. the section shell should mirror `Runtime Contract` as closely as practical at the JavaFX composition level;
|
|
3. the section should align with the existing `FormSession` staged-editing pattern;
|
|
4. the section header and action cluster must support `change`, `apply`, `reset`, and `cancel`;
|
|
5. the body layout must reserve the dual-list region on the left and the capacity-meter region on the right;
|
|
6. outside `change` mode, the section should render the current persisted state as read-only;
|
|
7. before middleware wiring exists, the section body should still render disabled or read-only internals rather than an empty placeholder.
|
|
|
|
## Justification
|
|
|
|
This keeps the editing model of `Asset Details` coherent.
|
|
|
|
The developer should not need to learn one staged-edit contract for `Runtime Contract` and another for `Bank Composition`.
|
|
Using the same shell and `FormSession` rhythm lowers implementation risk and reduces UI inconsistency.
|
|
|
|
Rendering the current persisted state in read-only mode is also the better default.
|
|
It teaches the surface, shows that data exists, and avoids making the section look unfinished or absent whenever editing is not active.
|
|
|
|
## Invariants and Constraints
|
|
|
|
The following constraints now apply:
|
|
|
|
1. `Bank Composition` must exist as a real section shell before middleware behavior is complete;
|
|
2. the shell must follow the same staged-edit interaction model already used by `Runtime Contract`;
|
|
3. `FormSession` is part of the expected section lifecycle;
|
|
4. the section must not collapse into a blank placeholder when behavior is still incomplete;
|
|
5. the shell layout must already reflect the intended dual-list plus capacity-meter structure.
|
|
|
|
## Explicit Non-Decisions
|
|
|
|
This decision does not yet define:
|
|
|
|
- the middleware/controller contract;
|
|
- the `workspaceBus` event contract;
|
|
- the exact disabled/read-only visuals of the early shell;
|
|
- apply persistence behavior;
|
|
- family-specific meter semantics beyond the already agreed general direction.
|
|
|
|
## Propagation Targets
|
|
|
|
- Studio agendas:
|
|
[`Agenda-04-Asset-Bank-Composition-Middleware-and-Staged-Editing.md`](../agendas/Agenda-04-Asset-Bank-Composition-Middleware-and-Staged-Editing.md)
|
|
[`Agenda-05-Asset-Bank-Composition-WorkspaceBus-Interaction.md`](../agendas/Agenda-05-Asset-Bank-Composition-WorkspaceBus-Interaction.md)
|
|
[`Agenda-06-Asset-Bank-Composition-Persistence-and-Snapshot-Propagation.md`](../agendas/Agenda-06-Asset-Bank-Composition-Persistence-and-Snapshot-Propagation.md)
|
|
- Studio specs:
|
|
[`4. Assets Workspace Specification.md`](../specs/4.%20Assets%20Workspace%20Specification.md)
|
|
- Studio code:
|
|
`AssetDetailsControl`, the future `Bank Composition` section control, and any `FormSession` integration needed for staged editing
|
|
|
|
## Validation Notes
|
|
|
|
Examples implied by this decision:
|
|
|
|
- the section can appear in the details view even before middleware logic exists;
|
|
- the shell can show current selection state in read-only mode when the user has not entered `change`;
|
|
- the same section-level action rhythm used by `Runtime Contract` should apply to `Bank Composition`.
|