- Evidence
- EstateSail operational lessons
Goals
Bulk edit, mass label, and batch discount operations — advances C3 toward its gate(s).
Implementation — what to build
Domain (src/lib/troveBulk.ts)
- computeBulkChange(itemIds, {price|category|zone|discount}) -> a diff/preview (per-item before->after + conflicts).
- applyBulkChange(preview) — only after confirm; writes via the normal audited item-update path.
- duplicateZoneSetup(fromSaleId, toSaleId); mass-label hook delegates to WI-033.
UI (apps/web)
- Multi-select on the items list -> bulk action bar -> preview modal -> Apply.
- Preview modal shows the computed changes + flags conflicts; nothing applies silently.
Safety
- No bypass of the canonical/candidate contract; every change is logged (who/when).
Acceptance
- Multi-item price/category/zone/discount update with a reviewable conflict preview before apply.
Checklist
- ○
C3 Bulk edit, mass label, and batch discount path is validated.
Gates & testing
- ○ C3 Bulk edit, mass label, and batch discount path is validated.
CODE TEST
Requirements
REQ-OPS-003 accepted Bulk operations need early operational support with a conflict preview before applying. Done when: Bulk price/category/room edits, mass label generation, batch discount changes, and duplicate-room setup between sales all show a reviewable conflict preview before applying.
Verify (done when)
multi-item update operations apply with reviewable results.
Cost triggers
No paid API / infra spend triggered by this item.
Status & editing
queued Sprint: Sprint 2 - Operational Floor POC
Edit status / sprint on the ★ Live Board → — changes are logged live with who / when / why.
Human-in-the-loop
No human tasks linked.
Findings
None recorded yet.
Concerns
None recorded yet.
Tech debt
None recorded yet.
Tools used
No tool calls recorded.
Files & artifacts
No files / artifacts recorded.
Update log
No log entries yet.