Product backlog — inbox

Table of Contents

This is the inbox bucket of the product backlog. Every capture created via compass capture --note "..." lands here. Inbox captures have not yet been triaged — they are ideas or observations waiting to be assessed.

At triage, move each capture to one of:

Or promote directly to a story via compass capture promote <slug>.

The table below is regenerated by projects/ores.codegen/scripts/regenerate_backlog_indexes.py — do not edit the rows by hand. To add a capture, run compass capture --note "..." and re-run the script.

Inbox captures

Capture Tags Description
Batch 3 of the badge/image/plain-text rendering rollout (tas…   Batch 3 of the badge/image/plain-text rendering rollout (task 08547F5A, closing): the audit/classification story is closed and batches 1-2 (badge_key wiring + regenerated entities) shipped. What remains from the implementation task's acceptance is the plain-text documentation leg: for each entity the audit classified as plain-text (no badge/image wiring), record a one-line documented reason per entity, and publish the plain-text-vs-badge-vs-image policy note. Small, documentation-only, no codegen changes expected.
Codegen template cpp_domain_type_table.cpp.mustache streams …   Codegen template cpp_domain_type_table.cpp.mustache streams enum columns raw (table << iter_var.column), which cannot compile: generated enum classes have no operator<<, only to_string(). trade_type_table.cpp is the first entity table with an enum column (product_type, added in the badge batch-2 trading rollout); it was hand-rendered via to_string(). The template needs an is_enum branch like the existing is_bool/is_optional/is_uuid branches.
Codegen: auto-derive most Qt drawer fields instead of requir…   Codegen: auto-derive most Qt drawer fields instead of requiring them spelled out per entity. domain_include/domain_class/protocol_include are pure functions of component and entity_singular. get/save/delete/history request/response/message_type class names are pure functions of entity_plural/entity_singular plus the standard dq::messaging naming convention already used identically by every entity's generated protocol header. collection_name/item_var are typically just entity_plural/entity_singular themselves. Only key_field, has_uuid_primary_key, settings_group, window_title, icon, and the has_ Qt knobs are genuinely entity-specific and need spelling out. Discovered while manually authoring near-identical Qt drawers for catalog, change_reason, change_reason_category, data_domain, and dataset_bundle – the boilerplate was copy-pasted with only entity-name substitutions each time, exactly the drift-prone pattern profiles exist to eliminate.
Compass has no way to create a story or task without creatin… compass agile tech-debt paperwork Compass has no way to create a story or task without creating a branch. 'compass story new' unconditionally runs 'git switch -c branch base' (see _scaffold_and_branch in compass.py) with no opt-out flag; 'compass task new' creates the branch object without switching (worktree stays put – the start vs add distinction), but still creates a branch; only 'compass task start' switches. There is no branch-free scaffold path at all. Triggered while doing pure paperwork: creating an umbrella story under sprint 25 to group all trading-instrument-to-codegen port tasks, and re-parenting the existing port tasks (pilot equity_position_instrument, task 91ED2388 via PR 1857; the 5-entity batch plus remaining conversions, task F560ADDF via PR 1874; eventing facet work) into it – 'compass task move' already supports relocating tasks between stories UUID-intact, but creating the target story forces a branch switch, which is hazardous on shared mid-flight feature branches with unmerged commits (here: feature/codegen-nats-eventing-and-integration-tests). The manual workaround is to hand-author story.org plus sprint-table row plus task orgs plus regenerate indexes, all of which the scaffold does by itself. Desired: a –no-branch flag (or a story add / task add subcommand) that scaffolds the org files and sprint row without touching git, mirroring how 'task new' already avoids the switch.
Evaluate migrating codegen mustache templates to Handlebars codegen templates tooling tech-debt Assess whether ores.codegen's pystache-based templates should move to Handlebars for real boolean-logic helpers, reducing hand-computed OR-flags in core.py.
Explore model validation support using ORE output reports model_validation pricing ore ore_studio sprint_25 v0 ORE exports structured pricing reports (flows.csv, additional_results.csv, curves.csv) that allow independent NPV reconstruction without source-code access — cashflow-level discount factors, forward rates, and model parameters are all exposed. Investigate how ORE Studio can consume these outputs to build model validation workflows: benchmarking, vendor comparison, discrepancy drill-down.
Fix compass pr create/merge task misattribution on shared branches compass tooling bug agile compass pr create/pr merge pick the wrong task doc when multiple tasks share the same #+branch value, silently editing an unrelated task or blocking merge on its state.
Inventory system-scoped entities and rationalise tenant scoping strategy   Currently system-scoped reference data is handled inconsistently: some entities copy data per tenant during provisioning, others rely on a system-tenant context switch. We need an architectural audit.
ores.shell folder feeds: start/stop folder must cover IR cur…   ores.shell folder feeds: start/stop folder must cover IR curve configs too. synthetic start folder <token> only starts fx_spot_generation_config rows (marketdata.v1.market_feed_configs.start_folder, per market_feed_config_protocol.hpp); ir_curve_generation_configs under the same folder are ignored, and ores.shell has no IR curve feed commands at all (the synthetic.service ir_curve_feed_configs.start/stop/list handlers are only reachable via raw NATS, config_id-keyed). Design intent: the top-level folder contains both FX and IR; folder-scoped start/stop should enumerate both config kinds. Extend the folder protocol (or add a synthetic.v1 ir_curve folder variant) and add shell verbs mirroring the FX ones.
Qt codegen: no way to show a friendly name instead of a raw UUID in list columns codegen qt ux marketdata ores.cpp.qt's Columns (Qt model) codegen only supports plain UUID stringification for a uuid-typed column; there is no lookup/display-name mechanism analogous to combo_display_field on detail-dialog combos, so every UUID FK-ish column in a generated list window shows a raw truncated UUID.
Story: Codegen developer experience improvements codegen tooling product_backlog Address workflow friction in codegen: address/type incompatibility errors in –component mode; no entity-scoped filter; no way to target a logical group (e.g. currency) within a component.
Story: Codegen infrastructure follow-ups from DQ commissioning codegen infrastructure tooling product_backlog General codegen infrastructure gaps surfaced while commissioning DQ entities but not specific to DQ: entity-model lint, consolidating the five ores.cpp.nats-* facets, compound natural-key support in lookup_entity/table SQL templates, and migrating the remaining 10 lookup_entity models to domain_entity.
Story: Roll out badge/image/plain-text rendering across classified domain entities qt badges codegen refdata ux architecture product_backlog Consume the completed audit/classification's batched list: annotate each entity with badge_key/image wiring as classified, author any missing badge_definition/badge_mapping or image data, and regenerate, one batch at a time.
Story: Split ORE Studio services into one container per service docker architecture deployment product_backlog Move from the single-container process-supervisor (ores.controller.service launching/monitoring the other 17 services as child processes) to the idiomatic Podman/container pattern of one process per container, with the orchestrator (podman pod, compose, or k8s) responsible for start ordering and supervision.
Story: Workspaces: finish the feature workspace codegen qt product_backlog Consolidates all workspace-related captures and stories into one place. Objective: get the Live workspace properly set up and allow users to create stand-alone/temporary workspaces (e.g. for importing ORE samples). First step is a code audit establishing what already exists, including UI support, before further implementation work is scoped.
Strongly-typed index/currency filter fields for market_series, not string matching marketdata identifiers oresmd curve-builder CurveBuilderWorkbench needs to filter market_series by currency+index to constrain curve bootstrapping, but today that means string-matching qualifier text (dash-vs-slash separator bugs already hit) – these should be strongly-typed soft-FK fields instead.

Emacs 29.3 (Org mode 9.6.15)