Story: Commission: portfolio

Table of Contents

This page documents a story in Sprint 23. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

Goal

Commission portfolio across the full stack: regenerate api/core/sql (and shell/cli/qt/wt/http where the codegen entity already supports them) from the current codegen templates against ores.refdata.portfolio.org, updating the model as needed; reconcile any codegen drift the same way book was remediated in Book codegen drift remediation (compass codegen entity show all-✅, no silently-dropped SQL validations); and add the entity chapter to the user manual, following the pattern of the book and counterparty chapters.

Status

Field Value
State DONE
Parent sprint Sprint 23
Now Both tasks DONE. Manual chapter's 4 screenshots captured and verified in the Qt client and PDF. Two non-blocking follow-ups split into Portfolio display follow-ups in the product backlog.
Waiting on Nothing.
Next Nothing.
Last touched 2026-07-18

Acceptance

  • [X] compass codegen entity show reports all-✅ for portfolio (fully regenerated against current templates, api/core/sql at minimum).
  • [X] Any SQL validations (soft FKs, value checks, insert triggers) present before regeneration are confirmed still present afterwards, via paste blocks or variability knobs in the .org model — not hand-patched post-generation.
  • [X] portfolio builds cleanly on the configured preset; no regressions in existing tests.
  • [X] The portfolio entity chapter is added to the user manual, covering its Qt windows and behaviours (list, detail, history) as applicable.

Tasks

Task State Start End Description
Codegen full stack for portfolio and address codegen drift DONE 2026-07-16 2026-07-17 Regenerate portfolio's api/core/sql (and shell/cli/qt/wt/http as applicable) from current codegen templates against ores.refdata.portfolio.org, updating the model as needed. Drive compass codegen entity show to all-✅. Restore any silently-dropped SQL validations via paste blocks/variability knobs, following the book_codegen_drift_remediation pattern (sprint_23).
Add portfolio entity chapter to the user manual DONE 2026-07-17 2026-07-18 Chapter written, screenshot scenario scaffolded; unblocked now that Improve badge colour scheme support's mapping-browser task fixed the Portfolios badge-colour bug (PR #1622). Resuming screenshot capture.

Decisions

  • Followed book's full migration pattern, not just codegen: moved PortfolioController out of TradingPlugin into RefdataPlugin (owning construction and menus) as part of this task rather than deferring to a separate "move portfolio to refdata" story, since the codegen regen already produced duplicate Qt classes in both plugins and leaving the old ones would risk cross-plugin symbol conflicts.
  • Where regeneration surfaced a real UX gap (purpose_type=/ =aggregation_ccy as free-text fields once FK validation was added), fixed it inline (dynamic/flagged combo) rather than leaving a validation trap for the Add dialog's default state.
  • Two display-quality issues found while capturing manual-chapter screenshots (portfolio.status is a hardcoded static_combo rather than a real lookup entity like book_status; Purpose Type's combo shows raw codes instead of a proper label) were spun off as separate BACKLOG tasks rather than fixed inline — both are cosmetic, neither blocks this story's acceptance, and both need real modeling work (a new lookup entity; a new display-label column) rather than a quick fix.

Out of scope

  • New portfolio functionality beyond what the current model/codegen templates already support — this story is about commissioning the existing model full-stack, not adding new fields or behaviours.

Emacs 29.3 (Org mode 9.6.15)