Story: Change management infrastructure
Table of Contents
This page documents a story in Sprint 08. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Lay down the change-management substrate: every amend and delete must reference a reason category + reason, with optional commentary, preserved historically and visible in the UI.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 08 |
| Now | Completed 2026-01-11. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2026-01-11 |
Acceptance
- Three temporal tables + populate seeds for reason categories and amendment reasons.
- All temporal entities carry
change_reason_code+change_commentaryfields. - Qt UI: mandatory reason on save; CRUD for categories and reasons; history shows reason + commentary.
- Protocol bump (21.1) standardises
list→get,create=/=update→save.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Amend and delete reasons base infrastructure | DONE | 2026-05-19 | 2026-01-09 | Domain + temporal tables for reason_categories, amendment_reasons, entity_reason_categories; populate scripts; Qt UI scaffolding. |
| Change reasons UI fixes | DONE | 2026-05-19 | 2026-01-11 | Polish the change-reason Qt dialogs based on first-pass review: mandatory reason selection, history visibility, save-dialog refactor, protocol bump to 21.1. |
Decisions
- Regulatory-anchored taxonomy
- BCBS 239, FRTB, FINRA, MiFID II up-front avoids retrofitting reasons later when audit needs them.
- Soft delete via INSTEAD OF DELETE
- keeps the historical record intact; no destructive deletes on temporal tables.
- Mandatory reason at save time
- enforced in the UI now; will also be enforced server-side as the protocol settles.
Out of scope
- Shared save-dialog refactor (raised, deferred).
- Per-row column tweaks beyond what review surfaced.
See also
- ores.iam — owns the change-management domain types.