Task: Delete client-side feed enumeration
Table of Contents
This page documents a task in the Feed lifecycle harmonization: asset-class-agnostic feed control-plane story. It captures the goal, current status, acceptance, and any notes or results.
Goal
Clients stop re-implementing the tree-walk-and-fan-out. The Qt MarketSimulatorWindow folder branch and its per-config IR loop (with the client-side auto_start filter), and the start_synthetic_theme_feeds two-path provisioning in tenant_handler, are deleted — clients send the folder/config request and the server cascades.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Feed lifecycle harmonization: asset-class-agnostic feed control-plane |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-08-11 |
Acceptance
- MarketSimulatorWindow: starting feeds under a folder issues the folder request only; the per-config IR loop and its auto_start filter are gone. Stopping is the folder-stop request.
- tenant_handler start_synthetic_theme_feeds issues the folder request (or per-config requests) only; the subtree walk and per-kind fan-out are gone.
- Behaviour parity: what the two-path loops started before is started by the server cascade (verified via the QA scenarios).
Plan
The server-side folder cascade (task 9E2344CF) already covers every asset class, so both clients delete their enumeration; nothing on the server changes.
tenant_handler.hppstart_synthetic_theme_feeds: the dataset/config/folder resolution stays, then one folder-scoped request. The IR two-path block is deleted: the folder-hierarchy walk intosubtree_folder_ids, theget_ir_curve_generation_configslisting, theauto_startfilter, and the per-curvestart_feed_requestfan-out — plus the includes only it used (ir_curve_generation_config_protocol.hpp,ores.utility/domain/hierarchy.hpp,<unordered_set>). The function's doc comment and the request-block comment now say one folder-scoped request cascades every feed kind. A folder failure returns false immediately (previously it setok=falseand kept walking; the caller sees the same.failedstep either way).MarketSimulatorWindow: the folder branch ofonStartFeedClickedand of the theme picker (promptThemeAndStart) issues the folder request only — the per-config IR loop with itsauto_startfilter is deleted from both.onStopFeedClickedstops via the folder request only when a folder is selected; the per-feed stop (stopIrCurvesAsync) runs only in the folder-less case. The per-feed path (startPairsAsync+startIrCurvesAsync) stays for Feed-leaf and folder-less selections — explicit selections still go through the kind-agnostic per-config request (task 5).- Behaviour parity rests on the folder cascade covering both kinds; it is verified via the folder-cascade QA scenarios (task 9E2344CF).
Notes
Test Scenarios
Manual QA scenarios (scaffolded via compass add test_scenario, run
through the QA Validation Runner panel) that verify this task. Link
new ones here as they're created; the scenario doc itself links back
via its "Verifies task" field.
| Scenario | State | Notes |
|---|---|---|
PRs
| PR | Title |
|---|---|
| #1974 | [iam,qt] Clients send the folder request only; the server cascades |
Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
Result
Both clients stopped re-implementing the tree-walk-and-fan-out; the server-side folder cascade (task 9E2344CF) is now the single start/stop path, covering every asset class.
MarketSimulatorWindow: the folder branch of onStartFeedClicked and
of the theme picker (promptThemeAndStart) issue the folder request
only — the per-config IR loop with its client-side auto_start filter
is deleted from both. onStopFeedClicked stops via the folder-stop
request when a folder is selected; the per-feed stop
(stopIrCurvesAsync) runs only in the folder-less case. The per-feed
path (startPairsAsync + startIrCurvesAsync) remains for Feed-leaf
and folder-less selections, going through the kind-agnostic per-config
request (task 5). Acceptance 1 met: folder start is the folder request
only, the per-config IR loop and its auto_start filter are gone, and
stopping is the folder-stop request.
tenant_handler start_synthetic_theme_feeds keeps its
dataset/config/folder resolution and sends one folder-scoped request.
The IR two-path block (folder-hierarchy walk into subtree_folder_ids,
the get_ir_curve_generation_configs listing, the auto_start filter,
and the per-curve start_feed_request fan-out) is deleted, along with
the includes only it used. A folder failure returns false immediately
rather than continuing the walk. Acceptance 2 met: the function issues
the folder request only; the subtree walk and per-kind fan-out are gone.
Behaviour parity rests on the folder cascade covering both kinds — the
cascade QA scenarios (task 9E2344CF) cover it, and the cascade's
service tests (folder_cascade_starts_and_stops_both_kinds_with_per_kind_counts)
still pass on this branch.
Verification: full build green (no SQL change, so no DB recreate);
compass build rat green (all suites pass).