Story: Commission: party, counterparty, and party_status

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

Finish commissioning party, counterparty, and party_status across all access layers, superseding the three abandoned per-entity stories from Sprint 22 (Commission: party, Commission: counterparty, Commission: party_status) now that their shared blockers — composite child-entity/hierarchy Qt widgets and temporal composite entity versioning — are both DONE. Regenerate party and counterparty against current codegen templates (which have drifted significantly since these entities were last touched) and verify zero-diff before re-verifying the Qt UI end-to-end post-NATS (party_status's Qt verification is already DONE), and add manual chapters for all three entities. Shell, CLI, Wt, and HTTP support are not tracked here — they're covered by the dedicated top-level commissioning stories already in the backlog: CLI commands, Shell entity commands, Wt entity UI, and HTTP entity endpoints.

Status

Field Value
State DONE
Parent sprint Sprint 23
Now Closed DONE 2026-07-20 (health review 1): all acceptance criteria met (party/counterparty regenerated zero-diff, Qt UI verified end-to-end post-NATS, manual chapters for all three entities written). 2 remaining independent follow-ups split into a new story.
Waiting on Nothing.
Next Nothing.
Last touched 2026-07-20

Acceptance

  • Party: regenerated against current codegen templates with zero diff; Qt list/detail/history/delete/eventing verified end-to-end post-NATS; manual chapter written.
  • Counterparty: regenerated against current codegen templates with zero diff; Qt list/detail/history/delete/eventing verified end-to-end post-NATS; manual chapter written.
  • Party_status: manual chapter written.
  • All regressions found are fixed inline or filed as captures.
  • Site builds cleanly.

Tasks

Task State Start End Description
Bring party under codegen; verify zero-diff regen DONE 2026-07-13 2026-07-13 Regenerated party's repository/service/handler/registrar/protocol/Qt (found and fixed party's repo/service still on the pre-context-ctx pattern, unlike counterparty's); migrated Qt from ores.qt.party to ores.qt.refdata. SQL profile deliberately excluded: codename generation still needs facet/paste-block work; report_events queue provisioning dropped to a backlog capture as likely-dead. Builds clean.
Regenerate counterparty under codegen; verify zero-diff regen DONE 2026-07-13 2026-07-14 Regenerated counterparty's protocol/handler/registrar/Qt against current codegen templates; zero-diff. Migrated Qt to ores.qt.refdata; child-entity table/hierarchy gap closed by the composite child-entity table facet task. Re-verified clean after two rebases onto origin/main.
Verify party Qt UI end-to-end post-NATS DONE 2026-07-14 2026-07-15 Verified live against BARCLAYS PLC. Found and fixed real regressions along the way: missing entity_type_of(party), crm_topology_bundles workflow-hanging seed data, is_auto_generated_key codegen bug locking short_code, pagination reporting page size as total, missing changeReasonCache wiring blocking identifier/contact saves, and 8 stale repository tests + 2 generator bugs.
Write party manual chapter DONE 2026-07-16 2026-07-16 Add the party entity chapter to the user manual covering Qt windows.
Verify counterparty Qt UI end-to-end post-NATS DONE 2026-07-14 2026-07-15 Verified live against BARCLAYS PLC's counterparties in the same pass as party; shared fixes (pagination, changeReasonCache, is_auto_generated_key) verified against both entities.
Write counterparty manual chapter DONE 2026-07-16 2026-07-16 Add the counterparty entity chapter to the user manual covering Qt windows.
Write party_status manual chapter DONE 2026-07-18 2026-07-18 Add the party_status entity chapter to the user manual covering Qt windows.
Build composite child-entity table Qt facet for party and counterparty DONE 2026-07-13 2026-07-13 Full parity restored for both entities: identifier/contact-information tables (add/edit/delete, full field set) via a generic ChildEntityTableWidget (ores.qt.api) plus a hand-crafted PartyChildEntityTables/CounterpartyChildEntityTables class per entity; hierarchy tree bound via the already-generic HierarchyModelBuilder/HierarchyTreeWidget (their first real consumer). 6 small codegen paste points, both libs build clean.
Remove dead EntityDetailDialog/EntityDetailOperations abstraction DONE 2026-07-18 2026-07-18 Now that party and counterparty have both migrated off the hand-maintained EntityDetailDialog/EntityDetailOperations pattern onto codegen-generated dialogs, no entity implements entity_detail_operations any more – confirm via repo-wide search, then delete EntityDetailDialog/EntityDetailOperations and their .ui from ores.qt.api.
Party/counterparty Create dialog cannot set parent_party_id DONE 2026-07-15 2026-07-15 parent_party_id is never exposed in the Qt Create/Edit dialog (deliberately excluded from Detail fields, like book's parent_portfolio_id precedent), but the DB enforces exactly one root party per tenant – so creating any second party currently always fails with a duplicate-key error on parties_root_party_uniq_idx, with no way to fix it from the UI.
Migrate party_status/party_id_scheme/business_unit/business_unit_type from ores.qt.party to ores.qt.refdata DONE 2026-07-18 2026-07-18 Move the remaining lookup/related entities in ores.qt.party (PartyStatus, PartyIdScheme, BusinessUnit, BusinessUnitType) over to ores.qt.refdata, matching the earlier party/counterparty migration, and regenerate them against current codegen templates.
Add auxiliary-lookup toolbar buttons to Party/Counterparty MDI windows DONE 2026-07-18 2026-07-18 Party and Counterparty MDI windows lack toolbar shortcuts to their auxiliary lookup windows (Party Type, Party Status, Party Id Scheme), unlike Currency's Rounding/Monetary Natures/Market Tiers buttons; add matching buttons, wire signals and plugin, and retake the Parties/Counterparties MDI window screenshots.

Decisions

Out of scope

Emacs 29.3 (Org mode 9.6.15)