← w3yh.xyz

journal day

Samstag, 4. April 2026

Tagesansicht des öffentlichen Journals: konkrete Changelog-Outputs, Incidents und kuratierte Notes, ohne dass der Index alles auf einmal rendert.

Aktivität an diesem Tag: niedrig

Samstag, 4. April 2026

codexopenclaw

ASTS/ONDS TLI-Count im Market Feed gegen X-News-Overflow repariert

changed

  • **`thelonginvestor/src/components/NewsPanel/NewsPanel.tsx`**
  • Root Cause beseitigt: `News + X` konnten bei ticker-spezifischen Sichten die ersten `fetchLimit` Plaetze komplett fuellen; dadurch wurden `TLI Mail` und `TLI Analyse` vor dem Zaehlen/Rendern weggeschnitten.
  • `slice(0, fetchLimit)` greift jetzt nur noch fuer den Tab `Alle`, nicht mehr fuer den gesamten kombinierten Datensatz.
  • Effekt: TLI-Counts bleiben fuer starke X-/News-Ticker wie `ASTS` und `ONDS` sichtbar und anklickbar.

verified

  • `cd `thelonginvestor` && npm run build`
  • Build gruen.
  • `pm2 restart [process]
  • App neu geladen.
  • `pm2 ls`
  • `tli-terminal` online, PID `832749`.
  • Headless Browser gegen die oeffentliche Handy-URL `https://ubuntu-16gb-fsn1-1.tail79fa6c.ts.net/`
  • `ASTS`: Tabs `Alle (114) / News (48) / X (48) / TLI (18)`
  • `ONDS`: Tabs `Alle (92) / News (38) / X (48) / TLI (6)`
  • TLI-Tab zeigt fuer beide Ticker wieder echte TLI-Headlines statt `0`.
codexopenclaw

TLI-Badges fuer ASTS/ONDS repariert und Mail-Noise aus `tli_entries` rausgezogen

changed

  • **`thelonginvestor/src/components/NewsPanel/NewsPanel.tsx`**
  • Mail-Badge wieder auf `TLI` gezogen statt `MAIL`, damit die UI TLI-Mails nicht semantisch falsch ausweist.
  • **`thelonginvestor/src/app/api/insights/route.ts`**
  • Noise-Filter fuer `Marktdaten ...`, `E2E-*`, `Test:*`, `auto-test` und `Public RSS pipeline` eingebaut.
  • Subject-/Comment-Sanitizing fuer TLI-Mails gehaertet, inklusive Patreon-/Outlook-Footer-Muell und Zero-Width-Zeichen.
  • Anzeige-Dedupe ueber `Ticker + Betreff + Summary-Prefix` ergaenzt, damit doppelte Feed-Eintraege nicht wieder oben schwimmen.
  • **`thelonginvestor/scripts/clean-tli-entries.mjs`**
  • Einmaliges Cleanup-Skript gebaut und produktiv gegen Supabase `tli_entries` gefahren.
  • **`thelonginvestor/scripts/log-intake.mjs`**
  • Intake sanitisiert neue TLI-Mails jetzt schon beim Schreiben.
  • **`.openclaw/tli-briefing/log-intake.mjs`**
  • Runtime-Kopie synchron auf denselben Sanitizing-Stand gezogen.
  • **Supabase `tli_entries`**
  • Historische TLI-Noise-Rows geloescht und verbleibende Mailtexte bereinigt; Stand danach `254` Rows.

verified

  • `node --check `thelonginvestor/src/app/api/insights/route.ts`
  • `node --check `thelonginvestor/scripts/clean-tli-entries.mjs`
  • `node --check `thelonginvestor/scripts/log-intake.mjs`
  • `node --check `.openclaw/tli-briefing/log-intake.mjs`
  • `node `thelonginvestor/scripts/clean-tli-entries.mjs`
  • Ergebnis: Cleanup fertig; `tli_entries` auf `254` Rows bereinigt.
  • `node `thelonginvestor/scripts/clean-tli-entries.mjs` --dry-run`
  • Ergebnis: `Löschen: 0`, `Updates: 0` - der Topf ist jetzt sauber.
  • `cd `thelonginvestor` && npm run build`
  • Build gruen.
  • `pm2 restart [process]
  • App danach wieder online.
  • `pm2 ls`
  • `tli-terminal` online, PID `831460`.
  • `curl 'http://[internal]/api/insights?limit=20&ticker=ASTS'`
  • Ergebnis: `12` Eintraege, Quelle `TLI Mail`.
  • `curl 'http://[internal]/api/insights?limit=20&ticker=ONDS'`
  • Ergebnis: `6` Eintraege, Quelle `TLI Mail`.
codexopenclaw

Terminal-Feed auf echte Quellen getrennt und mobile Gewichtung sichtbar gemacht

changed

  • **`thelonginvestor/src/app/api/x/route.ts`**
  • neue API-Route gebaut, die `x_tweets` separat als X-Feed ausliefert, inklusive Cashtags, Source-Type und Tweet-Metadaten.
  • **`thelonginvestor/src/app/api/insights/route.ts`**
  • Feed-Route auf rohen `tli_entries`-Mail-Intake entschlackt; keine Vermischung mehr mit `tli_knowledge_base`, damit `TLI Mail` nicht doppelt und semantisch schief auftaucht.
  • **`thelonginvestor/src/components/NewsPanel/NewsPanel.tsx`**
  • Feed auf vier echte Quelltypen umgestellt: `News`, `X`, `Mail`, `AI/TLI Analyse`.
  • Tabs neu sortiert: `Alle`, `News`, `X`, `TLI`.
  • Titel von `TLI FEED` auf `MARKET FEED` gehoben, damit die UI nicht mehr so tut, als waere alles nur TLI.
  • Badge-Label und Source-Detail getrennt: Badge sagt jetzt die Klasse (`NEWS`, `X`, `MAIL`, `AI`), die Detailzeile zeigt die konkrete Quelle (`Yahoo Finance`, `@Forged_Logic · CASHTAG SEARCH`, `TLI Mail`, `TLI Analyse`).
  • Plain-Text-Summaries werden nicht mehr blind als HTML gerendert.
  • **`thelonginvestor/src/components/NewsPanel/NewsPanel.css`**
  • Styles fuer `X`- und `MAIL`-Badges/Rows ergänzt, mobile Header/Tabs sauber umbrechbar gemacht.
  • **`thelonginvestor/src/components/WatchlistPanel/WatchlistPanel.tsx`**
  • Gewichtung auf Mobilgeraeten direkt unter dem Ticker dupliziert.
  • `weight_pct` wird jetzt sauber per `!= null` gerendert statt ueber den truthy-Shortcut.
  • **`thelonginvestor/src/components/WatchlistPanel/WatchlistPanel.css`**
  • mobile Watchlist blendet die alte Gewichts-Spalte aus und zeigt stattdessen die Gewichtung direkt im Ticker-Block, damit sie auf schmalen Displays nicht aus dem Sichtfeld kippt.

verified

  • `cd `thelonginvestor` && npm run build`
  • Build grün, neue Route `/api/x` im App-Router registriert.
  • `pm2 restart [process]
  • App wieder online.
  • `curl http://[internal]`
  • SSR enthaelt `MARKET FEED`.
  • `curl 'http://[internal]/api/x?limit=5&ticker=HIMS'`
  • liefert jetzt echte X-Scrapes fuer `HIMS` aus `x_tweets`.
  • `curl 'http://[internal]/api/insights?limit=8&ticker=HIMS'`
  • liefert nur noch rohe TLI-Mail-Eintraege, keine KB-Mischobjekte mehr.
  • `curl 'http://[internal]/api/portfolio'`
  • `weight_pct` weiter sauber vorhanden; Mobil-Rendering dafuer im Watchlist-Markup jetzt redundant abgesichert.
codexopenclaw

TLI-Mail-Backfill ab 06.03. gezogen und Portfolio-/Watchlist-Stand bereinigt

changed

  • **`thelonginvestor/scripts/backfill-tli-intake.mjs`**
  • neuen Gmail-Backfill-Worker gebaut, der TLI-Mails ab einem Datum ueber `gws` paginiert, nur aktuelle Portfolio-Ticker nimmt, Dubletten gegen `tli_entries` filtert und Original-Zeitstempel aus Gmail nach Supabase schreibt.
  • **`thelonginvestor/scripts/log-intake.mjs`**
  • Intake akzeptiert jetzt optional `source_timestamp`, damit Backfills und kuenftige Hook-Runs alte Mails nicht faelschlich auf "jetzt" datieren.
  • **`.openclaw/tli-briefing/log-intake.mjs`**
  • Runtime-Kopie auf denselben Stand gezogen.
  • **`thelonginvestor/scripts/tli-gmail-hook-v2.mjs`**
  • Hook schreibt fuer neue Live-Mails jetzt ebenfalls den echten Mail-Zeitstempel statt nur die Verarbeitungszeit.
  • **`.openclaw/tli-briefing/tli-gmail-hook-v2.mjs`**
  • Runtime-Kopie synchron gehalten.
  • **`thelonginvestor/scripts/sync-parqet.mjs`**
  • ISIN-Mapping fuer `Sea (ADR)` auf `SE` ergaenzt.
  • **`thelonginvestor/scripts/sync-holdings-to-supabase.mjs`**
  • Holdings-Sync loescht jetzt veraltete Positionen aus `tli_portfolio_holdings`, statt nur stumpf upzuser­ten und alte Leichen liegen zu lassen.
  • **`thelonginvestor/scripts/market-data-feeder.mjs`**
  • Crypto-Mapping fuer `ETH -> ETH-USD` eingebaut, speichert aber weiter unter `ticker = ETH`, damit die bestehende Portfolio-API ohne Zusatzlogik volle Preise bekommt.
  • **Supabase**
  • `tli_entries` ab `2026-03-06` von `136` auf `167` Eintraege erweitert (`31` neue portfolio-relevante TLI-Mails).
  • `tli_portfolio_holdings` auf den echten Parqet-Stand bereinigt (`25` aktive Positionen, `3` stale Rows geloescht).

verified

  • `node --check `thelonginvestor/scripts/backfill-tli-intake.mjs`
  • `node --check `thelonginvestor/scripts/sync-parqet.mjs`
  • `node --check `thelonginvestor/scripts/sync-holdings-to-supabase.mjs`
  • `node --check `thelonginvestor/scripts/log-intake.mjs`
  • `node --check `.openclaw/tli-briefing/log-intake.mjs`
  • `node --check `thelonginvestor/scripts/tli-gmail-hook-v2.mjs`
  • `node --check `.openclaw/tli-briefing/tli-gmail-hook-v2.mjs`
  • `node --check `thelonginvestor/scripts/market-data-feeder.mjs`
  • `node `thelonginvestor/scripts/sync-parqet.mjs`
  • Ergebnis: `portfolio.json` frisch aus Parqet mit `25` Positionen aktualisiert.
  • `node `thelonginvestor/scripts/sync-holdings-to-supabase.mjs`
  • Ergebnis: `3` veraltete Positionen geloescht, `25` aktuelle Holdings upgesert.
  • `node `thelonginvestor/scripts/backfill-tli-intake.mjs` --after 2026/03/06 --max 2000`
  • Ergebnis: `549` Gmail-Messages geprueft, `31` neue portfolio-relevante Mail-Eintraege geschrieben.
  • `node `thelonginvestor/scripts/market-data-feeder.mjs`
  • Ergebnis: `29/29` Snapshots gespeichert, inklusive `SE` und `ETH`.
  • `curl http://[internal]/api/portfolio`
  • Ergebnis: `25` Positionen, keine `null`-Preise mehr; `SE` und `ETH` werden jetzt mit Kurs geliefert.
  • `curl 'http://[internal]/api/insights?limit=15&ticker=SE'`
  • Ergebnis: neue Backfill-Mails fuer `SE` vom `2026-04-01` und `2026-03-29` sichtbar.
codexopenclaw

Tyrone-Terminal HIMS-Feed verjuengt und TLI-Mailpfad entkoppelt

changed

  • **`thelonginvestor/src/components/NewsPanel/NewsPanel.tsx`**
  • Ticker-Wechsel reicht `ticker=` jetzt nicht mehr nur an `analyses`, sondern auch an `news` und `insights` durch.
  • Effekt: HIMS-/Ticker-Sichten ziehen serverseitig wirklich passende Datensaetze statt nur den globalen letzten Schwung.
  • **`thelonginvestor/src/app/api/insights/route.ts`**
  • Mail-API liest jetzt frische `tli_entries` parallel zur historischen `tli_knowledge_base`, dedupliziert nach Ticker+Betreff und sortiert anschliessend nach Frische.
  • Effekt: der Mail-Tab zeigt aktuelle Intake-Eintraege sofort, auch wenn KB/Analysen hinterherhaengen.
  • **`.openclaw/tli-briefing/tli-gmail-hook-v2.mjs`**
  • `gws`-Runs werden fuer Cron jetzt mit explizitem `XDG_RUNTIME_DIR` und `DBUS_SESSION_BUS_ADDRESS` gestartet statt blind ohne Session-Bus.
  • Effekt: der Hook laeuft auf dem Server wieder ohne den `401 No credentials provided`-Crash.
  • **`thelonginvestor/scripts/tli-gmail-hook-v2.mjs`**
  • Repo-Kopie synchron auf denselben Stand gezogen, damit kein Drift zwischen Runtime- und Source-Pfad bleibt.
  • **Supabase `tli_entries`**
  • neuesten HIMS-Post `"$HIMS - X POST"` aus Gmail einmalig manuell nach `tli_entries` zurueckgespiegelt, damit der Feed sofort wieder einen frischen HIMS-Mailanker hat.

verified

  • `node --check `.openclaw/tli-briefing/tli-gmail-hook-v2.mjs`
  • `node --check `thelonginvestor/scripts/tli-gmail-hook-v2.mjs`
  • `cd `thelonginvestor` && npm run build`
  • `pm2 restart [process]
  • `curl http://[internal]/api/insights?limit=5&ticker=HIMS`
  • Ergebnis: oberster Eintrag jetzt `"$HIMS - X POST"` statt nur alter KB-Staende vom 11.03.
  • `cd `.openclaw/tli-briefing` && node tli-gmail-hook-v2.mjs`
  • Ergebnis: Hook laeuft wieder auth-sauber durch und endet ohne 401-Crash.
codexopenclaw

Weekly Crossover Summary fuer TLI + News + X gebaut

changed

  • **`thelonginvestor/scripts/weekly-crossover-summary.mjs`**
  • neues Wochen-Script gebaut, das TLI-Mail-Intake (`tli_entries`), erlaubte Web-News (`news_feed`) und X-Scrapes (`x_tweets`) in einem Telegram-Report zusammenzieht.
  • RAG-Qualitaetssektion eingebaut: Konvergenz, Blind Spots, Noise und externe Movers ohne TLI-Mail.
  • TLI-eigene X-Tweets von `@TheLongInvest` werden fuer den Konvergenztest bewusst separat gehalten und nicht als unabhaengige Bestaetigung gezaehlt.
  • Preview-/Dry-Run, JSON-Debug und optionalen Telegram-Versand per `--send` eingebaut.

verified

  • `node --check `thelonginvestor/scripts/weekly-crossover-summary.mjs`
  • `node `thelonginvestor/scripts/weekly-crossover-summary.mjs` --preview`
  • Ergebnis: produktiver Wochenentwurf fuer `04.04.2026` aus Live-Supabase-Daten erzeugt.
codexopenclaw

Macro-Feeder gegen FRED-Aussetzer gehaertet

changed

  • **`thelonginvestor/scripts/macro-feeder.mjs`**
  • FRED-Abruf auf mehrere Beobachtungen statt nur `limit=1` gehaertet, damit `.`-Werte nicht direkt als Totalschaden enden.
  • Retry-Logik fuer die FRED-JSON-API eingebaut.
  • CSV-Fallback ueber `fredgraph.csv` ergaenzt, falls die API fuer einzelne Serien wieder mit `HTTP 500` abraucht.
  • Logging zeigt jetzt, ob eine Serie via API oder CSV-Fallback kam.
  • **`.openclaw/tli-briefing/macro-feeder.mjs`**
  • Parallelkopie auf denselben Stand gebracht.

verified

  • `node --check `thelonginvestor/scripts/macro-feeder.mjs`
  • `node --check `.openclaw/tli-briefing/macro-feeder.mjs`
  • `cmp -s `thelonginvestor/scripts/macro-feeder.mjs` `.openclaw/tli-briefing/macro-feeder.mjs`
  • `node `.openclaw/tli-briefing/macro-feeder.mjs`
  • Ergebnis: `7 Makro-Indikatoren geschrieben.`
codexopenclaw

PostFast-firstComment-Learning in Langzeitgedaechtnis und Lessons verankert

changed

  • **`.openclaw/workspace/MEMORY.md`**
  • dauerhafte PostFast-Regel ergaenzt: `firstComment` auf X funktioniert beim Create, aber nicht per nachtraeglichem `PATCH`/`PUT`; bestehende Slots brauchen Delete+Recreate plus lokales `postfastId`-Spiegeln.
  • **`.openclaw/workspace/tasks/lessons.md`**
  • neue Lesson angelegt, damit die `firstComment`-Erkenntnis bei kuenftigem PostFast-Debugging nicht wieder verloren geht.

verified

  • Sichtpruefung der Memory-/Lesson-Eintraege:
  • beide Dateien enthalten jetzt dieselbe operative Regel fuer `firstComment` auf X.
codexopenclaw

PostFast firstComment auf X erfolgreich getestet

changed

  • **`.openclaw/workspace/tweet-queue.json`**
  • bestehenden X-Slot `eg-20260404-46b68c` fuer `2026-04-08` auf neuen `postfastId` gespiegelt und mit `firstComment` angereichert.
  • neuen Donnerstag-Testslot `pf-20260404-fc01` fuer `2026-04-09` direkt mit `firstComment` in die lokale Queue eingetragen.

verified

  • Bearbeitung eines bestehenden Scheduled Posts per API:
  • `PATCH /social-posts/:id` -> `404`
  • `PUT /social-posts/:id` -> `404`
  • Schlussfolgerung: nachtraegliches Editieren von `firstComment` ist ueber die dokumentierte/erreichbare API aktuell nicht verfuegbar.
  • Funktionsfaehiger Workaround fuer bestehende Slots:
  • bestehenden Slot geloescht und identisch neu erstellt mit `firstComment`
  • alter Post `2e03a6bf-f203-48b4-9fe5-a3149cb38aab` erfolgreich geloescht
  • neuer Post `becd6da8-c270-484c-95b6-d110477aea32` erfolgreich erstellt
  • Neuer Direkt-Test fuer Donnerstag:
  • neuer Post `e716a0b9-0967-47ab-996e-47689c3ab65f` fuer `2026-04-09` erfolgreich erstellt
  • Remote-Verifikation:
  • `GET /social-posts?platforms=X&statuses=SCHEDULED&from=2026-04-08...&to=2026-04-09...`
  • beide Test-Posts werden mit `firstComment` und `firstCommentError = null` zurueckgegeben.
codexopenclaw

PostFast-X-Queue bis Mittwoch auf 4 Posts pro Tag aufgefuellt

changed

  • **`.openclaw/workspace/supabase/migrations/006_news_ssot_views_and_rss_snapshots.sql`**
  • neue Migration angelegt: `news_feed` als Raw-SSOT kommentiert, `rss_trending_runs` + `rss_trending_items` eingefuehrt, `tt_news_feed` als abgeleitete View auf `news_feed` und `v_latest_rss_trending` fuer den letzten RSS-Snapshot angelegt.
  • **`.openclaw/workspace/migrations/006_news_ssot_views_and_rss_snapshots.sql`**
  • Root-Migrationspfad auf denselben Stand gebracht, damit kein Drift zwischen den beiden SQL-Ablagen entsteht.
  • **`.openclaw/workspace/projects/tyrone-terminal/TECH_SPEC.md`**
  • Terminal-News-Schema korrigiert: `tt_news_feed` jetzt als View ueber `news_feed`, `tt_news` explizit als separater Signal-/Reference-Feed statt Raw-News klargestellt.
  • **`.openclaw/workspace/supabase/migrations/001_tyrone_terminal_schema.sql`**
  • Kommentar zu `tt_news` geschaerft: Terminal-generated Signal-/Reference-Feed, nicht der Raw-Market-News-Speicher.
  • **`.openclaw/workspace/scripts/build-rss-trending-snapshot-sql.py`**
  • neuen Helfer gebaut, der aus `rss-trending.json` direkt copy-paste-faehiges SQL fuer `rss_trending_runs` und `rss_trending_items` rendert.
  • **`.openclaw/workspace/drafts/rss-trending-snapshot-2026-04-04.sql`**
  • aktuelles Insert-SQL fuer den Snapshot vom `2026-04-04` generiert.
  • **`.openclaw/workspace/drafts/supabase-news-ssot-and-rss-bootstrap-2026-04-04.sql`**
  • Kombi-Datei erzeugt: erst News-SSOT-Migration, danach direkt der aktuelle RSS-Snapshot als Bootstrap.

verified

  • `python3 `.openclaw/workspace/scripts/build-rss-trending-snapshot-sql.py` `.openclaw/workspace/rss-trending.json`
  • Ergebnis: valides SQL fuer `292` Artikel / `13` relevante RSS-Trend-Items erzeugt und als Draft gespeichert.
  • Sichtpruefung der neuen Migration:
  • `tt_news_feed` liest jetzt aus `news_feed`; `rss_trending_*`-Tabellen und `v_latest_rss_trending` sind enthalten.
codexopenclaw

User-Facing News-Quellhygiene gehärtet und Legacy-Feed-Leak lokal abgefangen

changed

  • **`thelonginvestor/scripts/send-briefing.mjs`**
  • `news_feed`-Abfrage fuer Briefing-Highlights und Risk-Radar auf eine harte Allowlist gezogen: `Yahoo Finance`, `Benzinga`, `Finviz`, `Handelsblatt`, `Reuters`.
  • **`.openclaw/tli-briefing/send-briefing.mjs`**
  • Parallelkopie synchron auf denselben Stand gebracht.
  • **`thelonginvestor/scripts/test-briefing.mjs`**
  • Test-/Fallback-Briefing nutzt dieselbe Allowlist statt blind alle `news_feed`-Quellen zu ziehen.
  • **`.openclaw/tli-briefing/test-briefing.mjs`**
  • Parallelkopie synchron auf denselben Stand gebracht.
  • **`thelonginvestor/scripts/enrich-tli-email.mjs`**
  • E-Mail-Enrichment zieht Ticker-News nur noch aus den freigegebenen User-Facing-Quellen.
  • **`.openclaw/tli-briefing/enrich-tli-email.mjs`**
  • Parallelkopie synchron auf denselben Stand gebracht.
  • **`thelonginvestor/src/app/api/news/route.ts`**
  • API-Route filtert `news_feed` jetzt ebenfalls auf die freigegebenen Quellen, damit Legacy-Reste nicht im UI auftauchen.
  • **`.openclaw/workspace/scripts/news-source-health.mjs`**
  • `Reuters` als erlaubte User-Facing-Quelle ergänzt, damit künftige Reuters-Rows nicht fälschlich als Legacy markiert werden.
  • `legacyHint` ergänzt: wenn Legacy-Rows zeitlich zum letzten deaktivierten `bloomberg:news-feeder`-Run passen, zeigt der Health-Report den Zusammenhang jetzt direkt an.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `PW-14` als erledigt ergänzt und den Root Cause dokumentiert: der letzte Run von `bloomberg:news-feeder` (`2026-04-04 `) hat noch `Google News`/`fool`/`thelincolnianonline` ins 24h-Fenster geschoben.

verified

  • `node --check `thelonginvestor/scripts/send-briefing.mjs`
  • `node --check `thelonginvestor/scripts/test-briefing.mjs`
  • `node --check `thelonginvestor/scripts/enrich-tli-email.mjs`
  • `cmp -s `thelonginvestor/scripts/send-briefing.mjs` `.openclaw/tli-briefing/send-briefing.mjs`
  • `cmp -s `thelonginvestor/scripts/test-briefing.mjs` `.openclaw/tli-briefing/test-briefing.mjs`
  • `cmp -s `thelonginvestor/scripts/enrich-tli-email.mjs` `.openclaw/tli-briefing/enrich-tli-email.mjs`
  • `node `thelonginvestor/scripts/send-briefing.mjs` --preview`
  • Ergebnis: Preview lief grün (`exit=0`), Briefing rendert sauber weiter und News-Highlights kommen jetzt nur noch aus der Allowlist.
  • `node `.openclaw/workspace/scripts/news-source-health.mjs`
  • Ergebnis: Legacy-Reste bleiben sichtbar (`Google News`, `thelincolnianonline`, `fool`), aber nur noch als Diagnose; User-Flaechen ignorieren sie. Der Report verlinkt die Reste jetzt direkt auf den letzten deaktivierten `bloomberg:news-feeder`-Run (`2026-04-04`).
codexopenclaw

Portfolio Risiko Radar ins Morning-Briefing eingebaut

changed

  • **`thelonginvestor/scripts/send-briefing.mjs`**
  • `Portfolio Risiko Radar` ergänzt: negative News-Cluster pro Holding werden jetzt separat erkannt und priorisiert.
  • lokale Risk-Pattern-Logik für Headlines ergänzt (`lawsuit`, `probe`, `downgrade`, `guidance cut`, `offering`, `plunge`, `bankruptcy` usw.).
  • Risk-Auswahl auf Cluster-Basis aufgebaut statt auf Einzelartikelbasis, damit Mehrfachberichte zu derselben negativen Story sauber zusammenlaufen.
  • Menüpunkt `7️⃣ Portfolio Risiko Radar` vorbereitet, erscheint nur wenn echte Warnsignale vorhanden sind.
  • **`.openclaw/tli-briefing/send-briefing.mjs`**
  • Parallelkopie des Briefing-Skripts per Sync auf denselben Stand gebracht.

verified

  • `node `thelonginvestor/scripts/send-briefing.mjs` --preview`
  • Ergebnis: Preview lief grün (`exit=0`), Briefing rendert sauber weiter; in den aktuellen Daten wurden keine Risk-Alerts getriggert.
  • `cmp -s `thelonginvestor/scripts/send-briefing.mjs` `.openclaw/tli-briefing/send-briefing.mjs`
  • Ergebnis: beide Briefing-Skriptpfade weiterhin byte-identisch.
codexopenclaw

Morning-Briefing lokal auf News-Cluster-Ranking umgestellt und blockierten SQL-Deploy ins Todo gehängt

changed

  • **`thelonginvestor/scripts/send-briefing.mjs`**
  • `News Highlights` nicht mehr als stumpfe sortierte Einzelartikel-Auswahl, sondern ueber lokales Event-Clustering pro Ticker aufgebaut.
  • Cluster-Logik ergaenzt: Headline-Tokenisierung, Similarity-Match, Cluster-Score aus Relevanz, Quellenvielfalt und Cluster-Groesse.
  • Quellenlabel fuer Highlight-Ausgabe vorbereitet (`n Quellen`), sobald ein Cluster mehr als eine Quelle traegt.
  • **`.openclaw/tli-briefing/send-briefing.mjs`**
  • parallele Copy des produktiven Briefing-Skripts auf denselben Stand gezogen, damit kein Drift zwischen beiden Pfaden entsteht.
  • **`.openclaw/workspace/tasks/todo.md`**
  • blockierten Punkt fuer `News-SSOT SQL deployen + Drive/Connector wieder scharf machen` unter `Wartet auf Dominik` ergänzt.

verified

  • `node `thelonginvestor/scripts/send-briefing.mjs` --preview`
  • Ergebnis: Preview lief grün (`exit=0`), Briefing rendert sauber, `news_highlights=3/46`.
  • `cmp -s `thelonginvestor/scripts/send-briefing.mjs` `.openclaw/tli-briefing/send-briefing.mjs`
  • Ergebnis: beide produktiven Skriptkopien sind byte-identisch.
codexopenclaw

News Source Health Report gebaut und Scraper-Activation-Drift sichtbar gemacht

changed

  • **`.openclaw/workspace/scripts/news-source-health.mjs`**
  • neues Prüfskript gebaut, das drei Ebenen kombiniert:
  • `news_feed`-Coverage der letzten N Stunden pro Quelle
  • letzte Cron-Run-Spuren aus `~/.openclaw/cron/runs`
  • Frische und Füllstand von `rss-trending.json`
  • Plain-Text- und JSON-Output eingebaut (`--json`).
  • **`.openclaw/workspace/tasks/todo.md`**
  • `PW-12` als erledigt ergänzt.
  • `PW-13` angelegt, weil der neue Health-Report aktuell nur Yahoo mit echten Runs/Rows sieht, während Benzinga/Finviz/Handelsblatt in `jobs.json` zwar konfiguriert, aber ohne `cron/runs`-Datei auftauchen.

verified

  • `node `.openclaw/workspace/scripts/news-source-health.mjs`
  • Ergebnis: `Yahoo Finance` OK (`46` Artikel, `14` Ticker, frischer Cron-Run), `RSS Trending` OK (`13/292`), aber `Benzinga`, `Finviz` und `Handelsblatt` aktuell `FAIL` wegen fehlender Cron-Run-Spuren und `0` Artikeln in 24h.
  • `node `.openclaw/workspace/scripts/news-source-health.mjs` --json`
  • Ergebnis: strukturierter Output vorhanden; zusätzlich `Google News`, `thelincolnianonline` und `fool` als Legacy/Unexpected Sources sichtbar.
codexopenclaw

News-SSOT Maßnahme 1 lokal vorbereitet und Supabase-SQL copy-paste-fertig gemacht

codexopenclaw

News-Data-Brainstorm von Ideenliste auf Strategie-Plan hochgezogen

changed

  • **`.openclaw/workspace/plans/news-data-brainstorm.md`**
  • die bestehende Liste um eine vorgeschaltete Strategie-Ebene erweitert: fehlende Intelligence-Schicht, Architektur-Leitplanken, Retention und Consumer-Trennung.
  • bestehende Ideen geschaerft, u. a. Briefing und RAG auf Event-Cluster statt rohe Artikel ausgerichtet.
  • neuen Block fuer konkrete Verbesserungen an bestehenden Projekten ergänzt: Morning Briefing v2, TLI Research Assistant, Tyrone Terminal Signal-Layer, RAG Hot/Warm/Cold, Content-Desk, Night-Action Research Blocks und Schema-Konsolidierung.
  • acht neue Projekte (`ND-19` bis `ND-28`) ergänzt, u. a. Canonical Event Layer, Thesis Tracker, Opportunity Funnel, Source Health Cockpit, Decision Journal und Fact Extraction.
  • einen 14-Tage-Massnahmenblock (`M-1` bis `M-6`) sowie eine neu priorisierte Reihenfolge und geschaerfte offene Fragen ergänzt.
  • **`.openclaw/CHANGELOG.md`**
  • Monatsindex um `2026-04` erweitert.

verified

  • Sichtpruefung der aktualisierten Brainstorm-Datei:
  • neue Struktur vorhanden, Priorisierung und Massnahmenblock am Dateiende enthalten.
  • Gegencheck mit bestehendem Workspace-Kontext:
  • Morning-Briefing-Logik, Tyrone-Terminal-News-Schema und RAG-/`kg_chunks`-Plan wurden vor dem Umbau gelesen und in die Priorisierung eingearbeitet.

Persönliches Build-Journal. Aufgaben werden über ein Agentensystem (OpenClaw, verschiedene LLMs) per Cron- und Telegram-Trigger ausgeführt; die Heatmap zeigt eine relative Compute-Aktivität in fünf Stufen.