Corrections
Last updated: 2026-09-03
A dated ledger of public claims SquawkFlow published and later withdrew or corrected, each tied to repository evidence. Each entry cites repository evidence. The machine-readable data manifest lists every public dataset, whether it is measured or modeled, and which endpoint serves it.
2026-09-03
SquawkFlow comparison pages listed congressional-trading data as an included capability.
What was true
Both upstream congressional trade feeds return 403 as of 2026-09-03 and /api/congressional serves an empty list, so the CongressTracker panel renders no trades.
What changed
The vs comparison row for congressional-trading data now reads no, with an inline comment in frontend/app/vs/data.ts documenting the upstream failure.
Published: 2026-08-14 · Corrected: 2026-09-03 · Evidence: b0e5f58
2026-09-02
Public gamma and heatmap pages presented CBOE open-interest matrices built on whatever spot quote the adapter returned.
What was true
Before provenance labelling shipped, the CBOE adapter could substitute synthetic quotes on CDN failure without SQUAWKFLOW_DEMO_MODE, and the heatmap checked chain provenance but not quote provenance, so a real OI book could be archived on a fabricated spot.
What changed
Every adapter return now carries provenance, demo generators run only when SQUAWKFLOW_DEMO_MODE is set, and the heatmap refuses to compute or archive unless both chain and quote are real.
Published: unknown · Corrected: 2026-09-02 · Evidence: df3d003
2026-09-01
squawkflow.com and api.squawkflow.com were unreachable during US market hours on 2026-08-28.
What was true
The production host was down from 07:52 to 19:04 PDT; on-box health checks died with the machine and nothing alerted for eleven hours.
What changed
docs/ops/runbook.md now documents the incident, the on-box heartbeat and two-sink notifier, and the known gap that only an off-box checker can detect a dead host.
Published: unknown · Corrected: 2026-09-01 · Evidence: docs/ops/runbook.md
2026-08-31
The /gex page, landing funnel, and public GEX APIs published how often each call wall and put wall held over recent sessions.
What was true
The published rate was measured on a third party's levels from a source we cannot redistribute, so it is withdrawn and not replaced.
What changed
Hold-rate fields and prose were removed from /gex, the landing page, session-log output, and every public GEX API response; overnight open-interest change replaced the slot on the page.
Published: 2026-08-17 · Corrected: 2026-08-31 · Evidence: 84205dc
2026-08-27
The landing page presented April 2026 rows as current behind a health envelope that reported the sources as fresh, and terminal panels showed a hardcoded LIVE label beside a badge that could simultaneously read STALE.
What was true
The landing page short-circuited to a frozen shared table instead of running the live-compute path, and source health was asserted rather than computed, so a stale or absent source still reported as fresh.
What changed
The short-circuit was removed so the live-compute path always runs, sourceHealth is computed instead of asserted, channel and spotgamma artifacts gained freshness gates, and panels no longer hardcode LIVE.
Published: unknown · Corrected: 2026-08-27 · Evidence: d5b1682
2026-08-25
/api/v1/dark-pool/prints described its payload as recent public dark-pool prints.
What was true
The endpoint served modeled block data from darkpool_service, not licensed FINRA ADF prints; only the daily DIX series is a real measured input.
What changed
The route now returns available:false with an empty prints array and a docstring dated 2026-08-25 explaining the retirement; callers receive a clear reason instead of modeled rows.
Published: 2026-08-25 · Corrected: 2026-08-25 · Evidence: ba7bdcf
2026-08-25
/api/insider returned Form 4-style transactions attributed to real, named executives and stamped source: sec_edgar.
What was true
The transactions were generated with random share counts, prices, and dates; SquawkFlow holds no licensed Form 4 feed.
What changed
The fabricating generators and real-person CIK table were deleted from sec_service.py; the endpoint now returns an empty list with available:false.
Published: unknown · Corrected: 2026-08-25 · Evidence: 168bd30
2026-08-17
The public /gex page displayed Net GEX $0, flip N/A, and identical call and put wall levels on every visit.
What was true
Schwab returned an SPX chain with zero open interest on every contract, which passed the usability gate and computed to confident zeros instead of failing over to CBOE, which carries real SPX open interest.
What changed
get_options_chain gained require_open_interest for positioning callers, the reader prefers the D2DT daily SPX snapshot when present, and /api/public/gex began serving real headline metrics.
Published: 2026-08-14 · Corrected: 2026-08-17 · Evidence: 116ada8