piker/ai/prompt-io/opencode/20260903T232525Z_fadab3d2_p...

2.7 KiB
Raw Blame History

Prompt

The human reported that the MNQ volume subchart repeatedly rendered its last bar at one index around the equity-futures closure, then reported that the volume curve disappeared after reopening. During live testing, the human confirmed that flow_rates, which started later, advanced correctly while dolla_vlm remained pinned. The human then reported a stale downsampled curve on zoom-out and supplied the repeated console warning:

No yrange provided for dolla_vlm!?

The human requested a live diagnosis and fix, validated each restart, and confirmed the final chart behavior was fixed.

Response

Read-only SHM snapshots showed that dolla_vlm remained at exclusive bound 172801 while the source advanced hundreds of rows. Its one current row kept receiving current quote values, explaining the same-index repaint. flow_rates remained aligned because it started after regular one-second timestamps resumed.

The cascade had inferred its sampler period from the last two distinct timestamps. A market closure therefore looked like the source cadence. Explicit Flume RT/history periods now drive sampling and downsampling metadata instead.

git diff HEAD~4..HEAD -- piker/data/flows.py

git diff HEAD~4..HEAD -- piker/fsp/_engine.py

Further SHM inspection found an IB source row with volume -2319096. dolla_vlm multiplied that value into a -68277471626 outlier, causing Viz.maxmin() to reject the zoomed-out range. Sample ingestion and volume FSP history/realtime calculations now clamp negative volume.

git diff HEAD~4..HEAD -- piker/data/_sampling.py

git diff HEAD~4..HEAD -- piker/fsp/_volume.py

The M4 renderer already returned a cache-reset signal after rebuilding a downsampled path, but Viz.update_graphics() overwrote that signal with False. The override was removed so Qts device-coordinate cache is invalidated with the new path.

git diff HEAD~4..HEAD -- piker/ui/_dataviz.py

Normal quote cycles also redrew unchanged FSP state. A per-Viz bounds/timestamp/value signature now suppresses only identical realtime refreshes; forced history redraws still bypass it.

git diff HEAD~4..HEAD -- piker/ui/_fsp.py

Regression coverage models closure-gap cadence, negative provider volume, unchanged realtime redraws, and the broader FSP synchronization behavior.

git diff HEAD~4..HEAD -- tests/test_fsp_sync.py

Live verification after restart showed source and dolla_vlm advancing at the same bound, zero negative destination rows, and correct zoomed-out rendering. The focused suite completed with 38 passing tests.