Zum Hauptinhalt springen
w3yh.xyzLogin ↗

journal day

Freitag, 29. Mai 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

Freitag, 29. Mai 2026

codexw3yh

Build-Journal und Grok-Cutover-Stand nachgezogen

added

  • Neue kuratierte Journal-Note `/notes/grok-cutover-ohne-laerm` über den Grok-Cutover, Direct-Runner-Grenze, Hermesto-Session-Schnitt und den Night-Action-Nachlauf.

changed

  • `content/journal-data.json` und `content/autonomous-hours.json` aus aktuellen OpenClaw-, W3YH-, Gym- und Incident-Logs regeneriert: `815` Einträge über `84` Tage, `227.8h` Compute.
  • Journal-Redaction in `scripts/sync-journal.mjs` für interne OpenClaw-Pfade, Telegram-IDs und private Portfolio-Kennzahlen gehärtet.
  • Startseiten-Now-Block auf Grok-Cutover, CEO-Bus/Drittstimme und TLI-/Terminal-Kontext aktualisiert.
  • Stack-Receipt auf `Next.js 16` sowie `Grok`/`Hermesto` statt alter Qwen/Kimi-Topline gezogen.
  • OpenClaw Night-Action-Surface um den neuen Report-only-Vertrag und präzisere Watchdog-Warnungen ergänzt.

verified

  • `npm run journal:sync` grün.
  • `npm run lint -- --max-warnings=999` grün mit 6 bestehenden Warnings.
  • `npx tsc --noEmit` grün.
  • `npm run build` grün; `/notes/grok-cutover-ohne-laerm` und `/notes/day/2026-05-29` werden statisch prerendered.
  • Lokaler Smoke auf `http://localhost:3029`: `/`, `/notes`, `/notes/grok-cutover-ohne-laerm`, `/notes/day/2026-05-29` liefern `200`; mobiler Chrome-Screenshot der neuen Note gerendert.
claudeopenclaw

Gastkommentar: EN-Version + Tweet-Vorschläge + wöchentlicher Telegram-Reminder

why

    what

    • Bilinguale Inhaltsquelle `commentary/content.ts` (eine Datei für wöchentliche Updates): STAND, KPIs, Cluster, Befunde, Vorbehalt, Fazit, UI-Strings je de/en + 3 Tweet-Vorschläge (je DE+EN).
    • Gemeinsame `CommentaryView.tsx`; Routen `/commentary` (DE) + `/commentary/en` (EN); Sprach-Toggle-Button im Header (DE ⇄ EN).
    • Tweet-Bereich: 3 Vorschläge, je DE + EN als Codeblock-Box (monospace, @-Handle + #-Hashtags, >280 erlaubt, copy-ready).
    • Reminder-Script `scripts/commentary-weekly-reminder.mjs` (Telegram-DM an [redacted], zeigt letztes STAND-Datum aus content.ts) + OS-Crontab `0 18 * * 0` CRON_TZ=Europe/Berlin (Sonntag 18:00).

    results

    • Deploy via VPS: `npm run build` + `pm2 restart [process] Verifiziert (localhost): `/commentary` 200 (DE, „English version"-Button, Tweet-Boxen), `/commentary/en` 200 (EN, „Deutsche Version"-Button), `/api/universe` 200.
    • Reminder live getestet: echter Test-DM erfolgreich zugestellt; Cron feuert wöchentlich So 18:00 Berlin.

    verification

    • `next build` grün, beide Routen statisch generiert.
    • Sprachseiten + Tweet-Bereich + Toggle per curl bestätigt; Reminder dry-run + echter Send OK.
    • Crontab: nur die Reminder-Zeile ist Europe/Berlin (am Dateiende); X-API-Crons davor bleiben UTC. Backup: /tmp/crontab.bak-before-reminder-*.
    claudeopenclaw

    Terminal-Hosting-Korrektur: Live = VPS/PM2, Commentary via Rebuild+Restart deployed

    why

      what (hosting-realität, belegt)

      • `dig terminal.w3yh.xyz` → 168.119.152.29 (VPS); Server `nginx`; PM2 `tli-terminal` (`npm start` = `next start`, cwd `…/projects/tyrone-terminal`) auf `[localhost]`, 27 Tage online.
      • terminal.w3yh.xyz wird also vom **VPS** (nginx → PM2 next-server) bedient, NICHT von Vercel. Das Vercel-Deployment ist verwaist/ungenutzt; mein vorheriger Vercel-Deploy/Rollback/Promote betraf nur dieses verwaiste Projekt, nicht die Live-Seite.
      • Live-Instanz war gesund: `localhost:3000/api/universe` → 200 mit echten Daten (ASTS 18,86 %). `/commentary` → 404, weil der seit 27 Tagen laufende Prozess den alten In-Memory-Build servierte.
      • Fix = der eigentlich gemeinte „live deploy": `npm run build` (frisch, inkl. commentary/button/tli-charts-fix/openclaw-try-catch) + `pm2 restart [process]

      results

      • Live-Instanz nach Restart: `/` 200, `/commentary` 200 (Inhalt rendert), `/api/universe|feed|economic-events` 200, Home-Button „Gastkommentar" vorhanden.
      • Öffentlich: `terminal.w3yh.xyz/commentary` → 307 → /login (gated, Route existiert jetzt; nach Login sichtbar).
      • Daten-Panels waren nie kaputt auf der Live-Seite — der „500"-Befund galt nur dem verwaisten Vercel-Deployment (Serverless kann die VPS-Datei [private-config] nicht lesen).

      offen / optional

      • Verwaistes Vercel-Projekt `tyrone-terminal` aufräumen oder bewusst als Staging behalten (Domain terminal.w3yh.xyz ggf. dort noch attached, aber per DNS inaktiv).
      • `openclaw.ts` try/catch ist jetzt im VPS-Build aktiv (defensiv, schadet nicht).
      claudeopenclaw

      Terminal: Deploy live + Daten-Panel-Root-Cause (Vercel ENOENT)

      why

        what / analyse (empirisch belegt)

        • API-Bodies gelesen: `/api/universe`, `/api/feed`, `/api/economic-events` werfen alle `500 ENOENT: open '/home/sbx_user1051/[private-config]'`.
        • Ursache: `src/lib/server/openclaw.ts` → `readOpenClawConfig()` liest **unbedingt** [private-config] (existiert nur auf dem VPS, nicht auf Vercel-Serverless) → wirft → jede Daten-API 500. `NEXT_PUBLIC_*` (Gating) funktioniert, weil zur Build-Zeit aus hochgeladener `.env.local` inlined; der Service-Role-Key fehlt zur Laufzeit (in Vercel: 0 Env-Vars).
        • Entscheidender Test: Rollback auf das vorherige Deployment (codex, ~36 Tage alt) → dessen `/api/universe` liefert **denselben** ENOENT-500. Beweis: Die Daten-Panels waren auf Vercel **noch nie** funktionsfähig; „es ging" bezog sich auf das VPS-Terminal (`next start`). Mein Deploy hat die Daten NICHT regressiert — nur die (statische) Commentary-Seite ergänzt.
        • Danach mein Deployment wieder auf Prod promotet (Commentary-Seite + Button zurück).

        results

        • terminal.w3yh.xyz/commentary → 307 gated (live). Home-Button „Gastkommentar" vorhanden.
        • Daten-Panels bleiben im langjährigen Vercel-Zustand (500) — unverändert, vorbestehend.
        • Gestaged (noch nicht deployt): `openclaw.ts` `readOpenClawConfig()` mit try/catch → returnt {} statt Crash auf Serverless. Reicht allein NICHT für Live-Daten — dafür müssten Supabase-Env-Vars (inkl. Service-Role-Key) in Vercel gesetzt werden (Secret-Entscheidung + `*.vercel.app`-Alias ist ungated → Exposure vorher schließen).

        verification

        • `curl` API-Bodies (ENOENT bestätigt), Rollback-Test (altes Deployment identisch 500), Re-Promote verifiziert (commentary 307, Button im HTML, /api/universe weiter 500).
        claudeopenclaw

        Tyrone-Terminal: Portfolio-Gastkommentar-Seite + Header-Button

        why

          what

          • Portfolio über Parqet API gezogen (Portfolio [privat], [Betrag], 27 Positionen, XIRR [redacted]) und gegen TLI-Charts (`openclaw/media/tli-charts/`, 524 Dateien, Kimi-Vision-Sidecars) eingeordnet.
          • Kritische Einordnung als durable Datei: `openclaw/workspace/tasks/portfolio-einordnung-2026-05-29.md`.
          • Neue gated Route im Terminal: `src/app/commentary/page.tsx` + `commentary.css` — datierter Snapshot (KPI-Strip, Cluster-Tabelle, 6 Befunde, Chart-Vorbehalt, Fazit, Link zum öffentlichen Recap). Server-Component im Bloomberg-Stil mit Terminal-Tokens.
          • Header-Button „Gastkommentar" neben `<AuthControls />` in `HomeClient.tsx` → `/commentary`; Styles `terminal-header__actions`/`terminal-nav-button` in `page.css`.
          • Incidental Fix: vorbestehender TS-Build-Fehler in `api/tli-charts/route.ts` (`.filter(Boolean)` → Type-Guard), der den gesamten Build blockierte.

          results

          • `npm run build` grün; `/commentary` als statische, middleware-gated Route gelistet (183 B). Button kompiliert.
          • Datenentscheidung: bewusst datierter Snapshot statt Live-Strip, weil Supabase `tt_positions` leer ist (Terminal läuft auf Fallback). Live-Parqet→Terminal-Anbindung ist separate Folgearbeit.
          • `projects/tyrone-terminal` ist im Workspace-Repo gitignored, deployt Vercel-verlinkt von Disk — kein Git-Commit nötig.

          verification

          • Parqet-Daten gegen TLI-Chart-Sidecars (Bias/Targets) quergelesen.
          • Full `next build` (nicht nur Typecheck) grün nach dem tli-charts-Fix.
          • Deploy noch offen: Prod-Promotion (terminal.w3yh.xyz) bewusst Dominik überlassen, da Live-Finanz-Dashboard und `deploy_to_vercel`-Ziel (Preview vs. Prod) nicht eindeutig.
          codexopenclaw

          Night-Action/Grok-Reportvertrag und Cron-Watchdog nachgezogen

          why

            what

            • Report-only-Prompts in `build-night-plan.py` und `night-plan-quality-gate.py` auf einen klaren Outputvertrag umgestellt: nicht den Freeze analysieren, sondern den Night-Block bearbeiten und am Ende einen JSON-Block mit `report_type`, `deliverables`, `concrete_filepaths`, `verification_steps`, `next_steps` liefern.
            • `qwen-cron-watchdog.py` scannt Log-Needles jetzt per Regex statt per Substring; `oom` matched dadurch nicht mehr fälschlich in `bloomberg`.
            • `x-scraper-cron-run.mjs`: `morning-sweep`-Watchlist-Schritt ist optional und bekommt 300s Timeout; Profil- und Portfolio-Scrape können bei optionalem Watchlist-Fail künftig trotzdem einen `ok_with_warnings`-Marker schreiben.
            • Heutigen `morning-sweep` anhand des echten Direct-Runner-Logs als `ok_with_warnings` markiert: Profil 20 Tweets, Portfolio 313 eindeutige Tweets/315 Upserts, optionaler Watchlist-Abbruch bei `@nikitabier`.
            • `NA-001..003` mit neuem Reportvertrag nachgezogen und `nightaction-feedback/status` neu abgeleitet.

            verification

            • `python3 -m py_compile` für Watchdog, Plan-Builder, Quality-Gate und Status-Helper grün.
            • `node --check `thelonginvestor/scripts/x-scraper-cron-run.mjs` grün.
            • `x-scraper-cron-run.mjs --lane morning-sweep --plan-only --json` zeigt Watchlist optional mit 300s.
            • `qwen-cron-watchdog.py --dry-run`: `status=ok`, `issue_count=0`.
            • `morning-nightplan-report.py --stdout --date 2026-05-29`: `GREEN (11/11 OK, 0 Failed)`.

            Incidents

            Hermes / xAI OAuth Caching-Bug
            ~15 minantigravity

            Problem: Inbound Polling / Hilfsaufgaben meldeten 403-Fehler (bad-credentials) für Telegram-Bots

            Ursache: Geänderter OAuth-Token in auth.json evizierte stale Client-Instanzen in _client_cache nicht, und _refresh_provider_credentials hatte keinen Handler für xai-oauth

            Fix: Handler für xai-oauth in _refresh_provider_credentials hinzugefügt (führt force_refresh aus und ruft _evict_cached_clients auf), Gateway neu gestartet

            OpenClaw Night Action / Cron Watchdog
            ~65 mincodex

            Problem: Nachtmeldungen zeigten 3 `no_observable_outcome`-Blocker, falsche Bloomberg-`oom`-Warnungen und fehlenden `morning-sweep`-Marker

            Ursache: Grok fokussierte den alten `REPORT-ONLY FREEZE`-Prompt statt den Block zu bearbeiten; Watchdog matchte `oom` als Substring in `bloomberg`; `morning-sweep` schrieb nach erfolgreichem Profil-/Portfolio-Scrape keinen Marker, weil der optionale Watchlist-Schritt bei `@nikitabier` scheiterte

            Fix: Report-only-Promptvertrag mit Pflicht-JSON nachgezogen, NA-001..003 neu laufen lassen und Status auf 11/11 OK abgeleitet, Watchdog-Needles auf Regex gehärtet, Morning-Sweep-Watchlist optional + 300s Timeout gemacht und heutigen Lauf als `ok_with_warnings` markiert

            kuratiert

            Redaktionelle Notes zu diesem Tag

            journaljournal / openclaw / grok / ops / agents

            Grok-Cutover ohne großen Knall

            TL;DR

            Der Modellwechsel war nur die sichtbare Überschrift. Stabil wurde der Cutover erst, als die Script-Crons vom LLM-Default getrennt, Hermesto-Altzustände geleert und Night-Action-Berichte auf einen klaren Output-Vertrag gezogen wurden.

            Basis in den Logs

            • Grok-vs-Qwen-A/B-Test und Direct-Runner-Migration vom 27. bis 29. Mai 2026.
            • Night-Action- und Cron-Watchdog-Nachlauf am 29. Mai 2026.

            Was gemacht wurde

            • OpenClaw-Default und Hermesto auf Grok über xAI gezogen.
            • Aktive Script-Runner-Crons vom alten DashScope-Dauerpfad entkoppelt.
            • Night-Action-Report-only-Lanes mit einem klaren Ergebnisvertrag versehen.
            • Watchdog-Warnungen so gehärtet, dass optionale Scraper-Teile nicht den ganzen Morgen rot färben.

            Verifiziert

            • Mehrere Live-Telegram-Smokes und CEO-Zyklen wurden zugestellt.
            • Night Action stand am 29. Mai 2026 nach dem Nachlauf auf grün.
            • Der Watchdog-Dry-Run meldete keine offenen Issues.

            Warum

            Ein Modellwechsel ist erst dann wirklich erledigt, wenn die Betriebswege danach weniger fragil sind als vorher. Der Fortschritt lag deshalb nicht in der neuen Modellzeile, sondern in den klareren Verträgen rund um Cron, Telegram und Nachtläufe.

            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.