Skip to content

Fix untickered-instrument aggregation + redesign the Edge Board - #5

Merged
msitarzewski merged 1 commit into
mainfrom
feat/edge-board-redesign
Aug 26, 2026
Merged

msitarzewski merged 1 commit into
mainfrom
feat/edge-board-redesign

Conversation

@msitarzewski

Copy link
Copy Markdown
Owner

Summary

Two things this branch does:

1. Fixes the real aggregation failure. After the earlier max_completion_tokens bump, the model returns clean JSON — but aggregate._parse_event required a non-empty ticker symbol for every instrument. Most financial events have none (indices, sovereign bonds, FX, commodities, private/foreign firms), so valid events were rejected and their posts got stuck at max attempts. Symbol is now optional (require name+type; identity falls back to the instrument name). Verified end-to-end against the real prod DB: 22 pending → 14 events, 0 errored.

2. Redesigns the Edge Board dashboard.

  • New derived unconfirmed status — a breaking event past a tunable TTL (FINTICK_BREAKING_TTL_SECONDS, default 1h) that external news never corroborated. Derived from time in read_feed, no DB migration.
  • Multi-select filter pills moved into a sticky, translucent glass top nav.
  • Light/dark theming — system-aware plus a manual toggle, persisted per-browser.
  • Ticker moved inline, full-width with an edge-fade mask; headlines are clickable anchors that scroll to the matching card.
  • Operator telemetry (pipeline-health strip + status pill) hidden for public visitors; reveal with ?ops (?ops=0 clears). De-duplicated the TERMINAL ERRORS indicator to the header.

Tests

New regression tests for optional-symbol parsing and the TTL transition. Full suite green except pre-existing environment-only failures (systemd service-handoff tests need Linux; one dashboard socket-timing flake on macOS).

🤖 Generated with Claude Code

Aggregation
- Accept instruments without a ticker symbol (indices, sovereign bonds, FX,
  commodities, private/foreign issuers). The parser required a non-empty symbol,
  so the model's valid untickered events were rejected and their posts stuck at
  max attempts. Symbol is now optional (require name+type); primary-instrument
  identity falls back to the name. Regression tests added.

Dashboard
- New derived "unconfirmed" status: a breaking event past a tunable TTL
  (FINTICK_BREAKING_TTL_SECONDS, default 1h) the wire never corroborated.
  Derived in read_feed from time — no DB migration.
- Multi-select filter pills moved into a sticky, translucent glass top nav.
- Light/dark theming: system-aware plus a manual toggle persisted per-browser.
- Ticker moved inline (full-width, edge-fade mask); headlines are clickable
  anchors that scroll to the matching event card.
- Operator telemetry (pipeline-health strip + status pill) hidden for public
  visitors; reveal with ?ops (persisted; ?ops=0 clears).
- De-duplicated the TERMINAL ERRORS indicator to the header only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@msitarzewski
msitarzewski merged commit 47ce0a8 into main Aug 26, 2026
12 checks passed
@msitarzewski
msitarzewski deleted the feat/edge-board-redesign branch August 26, 2026 02:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant