fix(banks): enforce unique bank display names in-model + B3 review minors
This commit is contained in:
@@ -90,9 +90,12 @@ reasons:
|
||||
|
||||
So: `bank_book` is an ordered registry of `{ bank id, display name, ordinal,
|
||||
BankIndex }`, pool seeded as bank-zero. Bank id is the stable key (minted GUID-style
|
||||
on create); name and ordinal are mutable. `BankIndex` is untouched. This is the
|
||||
defer-the-feature, design-the-seam principle: the seam is a container above the
|
||||
tested core, not a modification of it.
|
||||
on create); name and ordinal are mutable. Display names are **unique** — two banks
|
||||
cannot share a name (compared trimmed + case-insensitively, so "Drums" and "drums"
|
||||
are the same name), enforced in the model on create and rename; the pool's "Pool" is
|
||||
reserved by the same rule. `BankIndex` is untouched. This is the defer-the-feature,
|
||||
design-the-seam principle: the seam is a container above the tested core, not a
|
||||
modification of it.
|
||||
|
||||
---
|
||||
|
||||
@@ -349,7 +352,9 @@ Mirrors the capture and Design View pillars exactly.
|
||||
- Ordered bank registry: `{ bank id, display name, ordinal, BankIndex }`; pool
|
||||
seeded with fixed id + fixed name.
|
||||
- Create / rename / reorder / delete named banks; pool-privilege rules enforced
|
||||
here (reject delete-pool, reject rename-pool, never zero banks).
|
||||
here (reject delete-pool, reject rename-pool, never zero banks). Display names are
|
||||
unique — create/rename reject a name already used by another bank (trimmed +
|
||||
case-insensitive; the pool's "Pool" is protected).
|
||||
- Active-bank id (get/set, defaults to pool); resolve the active bank's `BankIndex`.
|
||||
- Move / copy a sample between banks — index-only, destination collapse-by-hash
|
||||
observed, move removes the source entry.
|
||||
|
||||
Reference in New Issue
Block a user