Story: Portfolio display follow-ups

Table of Contents

This page documents a story in Product backlog — next. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

Goal

Fix the two display-quality issues Commission: portfolio (Sprint 23, DONE) spun off rather than fixed inline: model portfolio_status as a proper lookup entity, and fix the Purpose Type combo to show display labels instead of raw codes.

Status

Field Value
State BACKLOG
Parent sprint None (product backlog)
Now Not yet started. Split out of the Sprint 23 story at its close — both are cosmetic and don't block commissioning.
Waiting on Nothing.
Next Either task is independently startable when pulled into a sprint.
Last touched 2026-07-20

Acceptance

  • portfolio_status modelled the same way as book_status: table, seed data, codegen regen, dynamic combo + badge wiring.
  • Purpose Type combo shows a proper short display label instead of raw codes.

Tasks

Task State Start End Description
Model portfolio_status as a proper lookup entity BACKLOG     portfolio.status is a hardcoded static_combo (literal string list), unlike book_status which is a real codegen'd lookup entity (own table, seeded descriptions, dynamic combo, badge colours). Model portfolio_status the same way as book_status: table, seed data, codegen regen, dynamic combo + badge wiring.
Purpose Type combo shows raw codes, not display labels BACKLOG     The Purpose Type dynamic combo shows raw codes (Risk, Regulatory, ClientReporting, Internal) instead of a readable label – ClientReporting reads as a code, not a label. purpose_type's description field is a full sentence (too long for a combo item), so the fix needs a proper short display-label column, not swapping to description. Compare to book_status, whose codes already double as readable labels.

Decisions

Out of scope

Emacs 29.3 (Org mode 9.6.15)