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_commentary fields.
  • Qt UI: mandatory reason on save; CRUD for categories and reasons; history shows reason + commentary.
  • Protocol bump (21.1) standardises listget, create=/=updatesave.

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.

Emacs 29.1 (Org mode 9.6.6)