3.4 KiB
Asset Bank Composition WorkspaceBus Interaction Agenda
Status: Open
Domain Owner: docs/studio
Cross-Domain Impact: docs/packer
Problem
The Bank Composition section should use workspaceBus for coordination, but the first-wave event contract should stay small and be designed together with the middleware/controller.
This agenda exists to close the first minimal event surface without inventing an oversized bus protocol too early.
Context
The current baseline is already known:
- events and middleware should evolve together;
- the first event baseline can stay very small;
- capacity changes are naturally expressed as percentage deltas or level changes in the
0..1range; - the transfer list and meter should be consumers of orchestrated state, not independent sources of product rules.
Options
- Define a broad event taxonomy upfront.
- Define only the minimum events needed for the first staged-edit interaction loop.
- Avoid
workspaceBusand wire components directly.
Tradeoffs
- A broad taxonomy is easy to regret and hard to prune once code lands.
- A minimal contract matches the current incremental direction and keeps future changes cheap.
- Direct wiring would fight the current workspace architecture and reduce observability of section state changes.
Recommendation
Define a minimal first-wave workspaceBus contract together with the middleware/controller.
Baseline direction:
- begin with the smallest useful set of section-local events;
- include capacity increase/decrease semantics in the
0..1range only as needed; - avoid encoding family-specific product rules directly into bus event types.
First-Wave Event Baseline
The first wave should keep user actions local to the middleware/controller whenever possible.
That means the following actions do not need to become public workspaceBus commands in the first implementation:
beginEditmoveToSelectedmoveToAvailablemoveUpmoveDownresetcancelapply
The middleware/controller should receive those actions locally, recalculate section state, and publish only the state transitions or lifecycle notifications that matter outside the section.
The first public workspaceBus notifications should stay minimal:
BankCompositionDraftChangedBankCompositionCapacityChangedBankCompositionApplyRequestedBankCompositionAppliedBankCompositionApplyFailed
Capacity notifications should use absolute progress in the 0..1 range rather than deltas.
A practical first-wave shape for capacity notifications is:
progressseverityblocked
If internal increase/decrease semantics are useful later, they can remain local implementation detail rather than part of the initial public bus contract.
Open Questions
No open questions remain in this agenda wave.
Resolved In This Agenda Wave
The following points are now closed:
- First-wave user actions should stay local to the middleware/controller rather than becoming public bus commands.
- The first public
workspaceBuscontract should be notification-oriented. - Capacity notifications should use absolute
0..1progress rather than deltas. - A minimal first-wave bus surface is enough: draft change, capacity change, apply requested, apply success, and apply failure.
Next Suggested Step
Turn this into a decision that fixes the minimal first-wave workspaceBus contract for Bank Composition.