← w3yh.xyz

journal day

Donnerstag, 23. 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: mittel

Donnerstag, 23. April 2026

codexopenclaw

RAG nach Einlaufzeit geprueft und Findings festgehalten

changed

  • **`.openclaw/workspace/reviews/rag-review-2026-04-23.md`**
  • Review der aktuellen RAG-Performance angelegt und spaeter auf die eigentliche Core-RAG-/Neural-Map-Perspektive geradegezogen.
  • Findings priorisiert dokumentiert: Core-RAG auf dem VPS ist fuer konkrete Gedächtnis-Queries stark, generische Ops-/VPS-/Security-Prompts zeigen aber weiter Noise; die spaetere Tweet-/Portfolio-Erweiterung hat zusaetzlich `UNH`-Blindspot, String-`metadata` und eine zu breite Top-200-Auswahl.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `RAG-8` auf `in Arbeit` gezogen und klar als Core-RAG-/Neural-Map-Review im Todo verankert; Tweet-RAG nur noch als Zusatzpfad darunter beschrieben.

verified

  • `systemctl --user status kg-embed-sync.timer --no-pager`
  • Timer aktiv; naechster Lauf fuer `2026-04-24 ` geplant.
  • `systemctl --user status kg-embed-sync.service --no-pager`
  • letzter Lauf am `2026-04-23 ` erfolgreich.
  • `python3 `.openclaw/workspace/scripts/validate-rag-tweets.py`
  • Ergebnis: `4/5` gruen; `UNH community` failt.
  • Live-Supabase-Checks gegen `x_tweets`, `kg_chunks` und `kg_portfolio_sentiment()`
  • Ergebnis: `UNH`-Tweets existieren in `x_tweets`, fehlen aber im aktuellen `kg_chunks`-Tweet-Set; RPC liefert bei Treffern `likes/retweets/engagement_score = null`, passend zur dokumentierten `metadata`-Stringifizierung.
codexopenclaw

RAG-Review wieder als aktiven Follow-up ins Workspace-Todo gezogen

changed

  • **`.openclaw/workspace/tasks/todo.md`**
  • neuen Fokuspunkt `RAG-8` angelegt, damit die geplante Neubewertung nach Einlaufzeit nicht weiter nur implizit in Maerz-/April-Historie steckt.
  • Scope des Re-Checks direkt am Punkt festgehalten: `kg-embed-sync`/Logs, `validate-rag-tweets.py`, reale Kernqueries, generische vs. konkrete Prompts sowie offener Rest um `UNH` und moegliches SQL-Deploy/Re-Embedding.

verified

  • Gegencheck mit RAG-Historie in `changelog/2026-03.md` und `auffaelligkeiten_todos.md`
  • Ergebnis: Kern-RAG seit `2026-03-29` live, Tweet-/Portfolio-Erweiterungen seit `2026-04-04`; ein expliziter Review-Punkt fehlte bisher im aktiven Todo.
codexopenclaw

Tyrone Gateway Hook-Session-Key-Fix gegen Crash-Loop

changed

  • **`.openclaw/openclaw.json`**
  • im `hooks`-Block `allowedSessionKeyPrefixes` mit `hook:ingress` und `hook:gmail:` ergaenzt.
  • damit passt die Config wieder zu der templated Gmail-`sessionKey`-Definition `hook:gmail:{{messages[0].id}}`, statt den Gateway-Start hart abzuwuergen.
  • **Runtime**
  • `systemctl --user restart openclaw-gateway.service` ausgefuehrt, damit die korrigierte Hook-Config live gezogen wird.

verified

  • `systemctl --user status openclaw-gateway.service --no-pager`
  • Gateway seit `2026-04-23 18:` wieder `active (running)`.
  • `journalctl --user -u openclaw-gateway.service -n 40 --no-pager`
  • sauberer Start bis `gateway ready`, `heartbeat started`, `telegram starting provider` und `hooks gmail watcher started`.
  • `curl -sS -o /dev/null -w '%{http_code}\n' http://[localhost]/`
  • liefert `200`.

notes

  • Gmail-Watch-Renew meldet weiter `invalid_grant` fuer ein abgelaufenes oder widerrufenes Google-Token, blockiert aber den Gateway-Start nicht mehr.
codexopenclaw

Tyrone Terminal TT-1 Feed-Ticker-Filter repariert

changed

  • **`.openclaw/workspace/projects/tyrone-terminal/src/app/api/feed/route.ts`**
  • News-Resolver ueber Raw-Ticker hinaus auf Cashtags, Boersenmuster und Portfolio-/Watchlist-Firmenaliases erweitert.
  • `matched_tickers[]`, Match-Confidence und Match-Reason im Feed-Output verdrahtet.
  • Ambiguity-Blocklist fuer kurze/gefaehrliche Ticker wie `MP`, `SE`, `JD`, `ETH` und `UPS` eingebaut, damit Plain-Token-News nicht falsch zugeordnet werden.
  • TLI-Filter bleibt strikt auf `tli_entries.ticker`; `/api/feed?ticker=X` ist fuer Browser-Reads jetzt die zentrale Feed-SSOT fuer News, X und TLI.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/lib/supabase.ts`**
  • Feed-Typen um Match-Metadaten erweitert und Browser-Zugriffe auf die Feed-Daten standardmaessig ueber `/api/feed` gezogen.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/components/NewsPanel/NewsPanel.tsx`**
  • den Extra-Ticker-Chip-Umweg entfernt; Watchlist-Auswahl setzt den Feed-Filter sofort.
  • News-Tickerchips auf `matched_tickers[]` umgestellt, damit resolvte News nicht mehr blind am alten Einzel-Ticker haengen.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/__tests__/components/NewsPanel.test.tsx`** und **`.openclaw/workspace/projects/tyrone-terminal/src/__tests__/app/api.feed.route.test.ts`**
  • Regressionen fuer sofortige Tickerfilterung, Company-Alias-Matches und Ambiguity-Blocking ergänzt.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `TT-1` als erledigt markiert.

verified

  • `npm test -- --runInBand src/__tests__/components/NewsPanel.test.tsx src/__tests__/app/api.feed.route.test.ts src/__tests__/lib/supabase.direct-access.test.ts`
  • 10 Tests gruen.
  • `npm run build`
  • Production-Build gruen; `/api/feed` baut sauber mit dem neuen Resolver.
codexopenclaw

Tyrone Terminal Layout repariert

changed

  • **`.openclaw/workspace/projects/tyrone-terminal/src/app/page.css`**
  • Chart-Panel vom Grid-Stretch entkoppelt und Watchlist auf eigene Scroll-Hoehe begrenzt.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/components/ChartPanel/ChartPanel.css`**
  • Chart respektiert wieder seine gesetzte Hoehe, statt auf Watchlist-Hoehe mitzuwachsen.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/app/layout.tsx`** und **`.openclaw/workspace/projects/tyrone-terminal/src/components/StatusBar/StatusBar.css`**
  • Statusbar vom fixed Overlay zum normalen Footer gemacht, damit sie keine Panels mehr ueberdeckt.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/components/WatchlistPanel/WatchlistPanel.tsx`** und **`WatchlistPanel.css`**
  • Watchlist-Spalten fixiert, lange Namen sauber geklemmt und Nebenfelder auf engeren Breiten reduziert.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/components/MacroPanel/MacroPanel.css`**
  • Macro-Tabelle kompakter gemacht; Flag-Icons ausgeblendet, weil der Terminal-Font sie als Kaestchen rendert.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/lib/supabase.ts`**
  • Supabase-Datenclient mit eigenem Storage-Key versehen, damit die doppelte GoTrue-Client-Warnung verschwindet.

verified

  • `npm run build`
  • gruen.
  • `npm test -- --runInBand src/__tests__/components/WatchlistPanel.test.tsx src/components/StatusBar/StatusBar.test.tsx`
  • gruen.
  • `pm2 restart [process] --update-env && pm2 save`
  • Prozess online, neuer Build aktiv.
  • Browser-Gutcheck gegen `http://[localhost]`
  • keine Console-Errors, keine 4xx/5xx, kein horizontaler Overflow, Statusbar ueberdeckt keine Panels.
codexopenclaw

Stocktracker ASTS-EU-Quote und Tyrone Terminal Live-Snapshots repariert

changed

  • **`stocktracker/src/utils/euTickerMappings.ts`** und **`stocktracker/server/src/services/yahooFinance.ts`**
  • ASTS-EU-Mapping von falschem/stalem `AS5.F` auf `3ZU0.F` gedreht; `AS5.F` bleibt nur als nachgelagerter Fallback.
  • **`stocktracker/api/euquote.ts`**
  • Plausibilitaetscheck gegen US-Kurs plus USD/EUR-FX eingebaut, damit falsche EU-Listings wie der 22-EUR-`AS5.F`-Treffer nicht mehr durchgewunken werden.
  • **`stocktracker/api/fundamentals.ts`**
  • Fundamentals wieder ueber Yahoo Summary plus Quote-Fallback gezogen, statt nur die duennen Quote-Felder zu verwenden.
  • **`stocktracker/api/fx.ts`**, **`stocktracker/src/services/api/fxApi.ts`** und **`stocktracker/server/src/routes/stock.ts`**
  • FX-Abfrage serverseitig proxied, damit der Browser nicht mehr direkt gegen Frankfurter/CORS laeuft.
  • **`stocktracker/src/components/fundamentals/QuickFundamentals.tsx`**
  • Nullish-Checks statt Truthy-Checks, damit valide `0`-Fundamentals als `0.00%` und nicht als `N/A` angezeigt werden.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/app/api/universe/route.ts`**
  • Universe-Snapshots mit Live-Yahoo-Chart-Meta angereichert, damit Watchlist und Chart nicht mehr unterschiedliche ASTS-Preise anzeigen.

verified

  • `npm run lint` und `npm run build` in `stocktracker`
  • beide gruen.
  • `npx vercel deploy --prod --yes`
  • finales Production Deployment `dpl_F9dQtjzrwTSW2BEHKYUeNvckR5vw`, Alias `https://stocktracker.w3yh.xyz`.
  • Production API:
  • `https://stocktracker.w3yh.xyz/api/fx?from=USD&to=EUR` liefert `0.8523`.
  • `https://stocktracker.w3yh.xyz/api/euquote?symbol=ASTS` liefert `3ZU0.F` mit `71.20 EUR` statt `AS5.F` mit `22.50 EUR`.
  • `https://stocktracker.w3yh.xyz/api/fundamentals?symbol=ASTS` liefert Market Cap, Beta, Dividende und Revenue-Growth Felder.
  • Stocktracker Browser-Gutcheck:
  • keine Console-Errors/4xx/5xx; ASTS zeigt EU Market `€71.20`, keine `€22.50`; Dividend Yield und Revenue Growth zeigen `0.00%`.
  • Tyrone Terminal:
  • gezielte Jest-Suiten gruen.
  • `npm run build` gruen.
  • `pm2 restart [process] --update-env && pm2 save` ausgefuehrt.
  • Browser-Gutcheck gegen `http://[localhost]`: keine Console-Errors; ASTS Watchlist zeigt `$84.66 +5.81%`.
codexopenclaw

Tyrone Terminal Direct-Access gegen RLS-Fallback repariert

changed

  • **`.openclaw/workspace/projects/tyrone-terminal/src/lib/supabase.ts`**
  • Browser-Reads fuer `public access` ueber neue Server-Routen umgeleitet, statt weiter blind mit `anon` gegen RLS-geschuetzte Tabellen zu laufen.
  • In-Flight-Dedupe fuer `universe`, `feed` und `economic-events` eingebaut, damit parallele Panel-Loads nicht denselben Request dreimal losschicken.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/app/api/universe/route.ts`**
  • neue Service-Role-Route fuer `tt_positions`, `tt_watchlist`, Universe-Status und Snapshot-Mapping angelegt.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/app/api/feed/route.ts`**
  • neue Service-Role-Route fuer `tt_news_feed`, `x_tweets` und `tli_entries` angelegt.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/app/api/economic-events/route.ts`**
  • neue Service-Role-Route fuer `macro_indicators`, `earnings_calendar` und `sec_insider_filings` angelegt.
  • **`.openclaw/workspace/projects/tyrone-terminal/src/__tests__/lib/supabase.direct-access.test.ts`**
  • Regressionstest hinzugefuegt, der Direct-Access explizit gegen die neuen Server-Routen prueft.

verified

  • `npm test -- --runInBand src/__tests__/lib/supabase.direct-access.test.ts src/__tests__/components/WatchlistPanel.test.tsx src/__tests__/components/NewsPanel.test.tsx src/__tests__/lib/supabase.test.ts`
  • 33 Tests gruen.
  • `npm run build`
  • Production-Build erfolgreich; neue App-Routen `/api/universe`, `/api/feed` und `/api/economic-events` werden sauber gebaut.
  • Service-Role-Datencheck gegen Supabase
  • echte Daten vorhanden: `tt_positions=24`, `tt_watchlist=12`, `tt_news_feed=8579`, `x_tweets=12548`, `tli_entries=305`, `macro_indicators=127`, `earnings_calendar=32`, `sec_insider_filings=8`.
  • Anon-Datencheck gegen Supabase
  • `anon` sieht dieselben Tabellen weiter als `0`, womit der Fehlerursprung bestaetigt ist: Login-Gate aus, RLS aber weiter aktiv.

Incidents

Tyrone / Gateway Hooks
~20 mincodex

Problem: Tyrone antwortete nicht mehr, weil der `openclaw-gateway` gar nicht bis zum Telegram-Startup kam

Ursache: In `openclaw.json` nutzte der Gmail-Hook einen templated `sessionKey` (`hook:gmail:{{messages[0].id}}`), aber `hooks.allowedSessionKeyPrefixes` fehlte komplett; dadurch fiel der Gateway beim Config-Laden in einen Restart-Loop

Fix: `allowedSessionKeyPrefixes` mit `hook:ingress` und `hook:gmail:` nachgeruestet, Gateway per `systemctl --user restart openclaw-gateway.service` neu gestartet und den sauberen Start bis `gateway ready`/HTTP `200` auf `[localhost]` verifiziert

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.