← w3yh.xyz

journal day

Samstag, 28. März 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: Spitze

Samstag, 28. März 2026

systemopenclaw

Claude-Remote-Diagnose in Todo geschaerft

update

  • Geaendert: `.openclaw/workspace/tasks/todo.md`
  • `OPS-9` um den neuen Befund erweitert: Claude Desktop funktioniert weiter ueber den alten Server, und der alte Server kann mit dem neuen VPS sprechen.
  • Arbeitshypothese entsprechend eingegrenzt auf den direkten Desktop->neuer-VPS-Handshake bzw. lokalen App-Cache.
systemopenclaw

Workspace-Todo um Claude-Desktop-Remote-Debug erweitert

update

  • Geaendert: `.openclaw/workspace/tasks/todo.md`
  • Claude-Desktop-/Claude-Code-Remoteproblem als expliziten Morgenpunkt im Kurzstatus verankert.
  • Neuer Ops-Punkt `OPS-9` mit bisheriger Diagnose aufgenommen: Plain SSH geht, Desktop scheitert im Verification-/Handshake-Pfad.
systemopenclaw

Workspace-Todo nach RAG-Fortschritt aktualisiert

update

  • Geaendert: `.openclaw/workspace/tasks/todo.md`
  • `RAG-5` und `RAG-6` als erledigt markiert.
  • Kurzstatus fuer Prio 2 auf die verbleibenden Pakete `RAG-1` bis `RAG-4` reduziert.
  • Verifikationsnotizen fuer den neuen Dispatch-Capability-Guard hinterlegt.
systemopenclaw

Workspace-Todo auf Kernprioritaeten geschaerft

update

  • Geaendert: `.openclaw/workspace/tasks/todo.md`
  • Klare Prio-Reihenfolge im Kurzstatus verankert: `PW` zuerst, `RAG` als zweite Hauptspur, `CBA` als produktiver Fallback.
  • Projektueberschriften passend markiert (`Prio 1`, `Prio 2`, `Prio 3 / Fallback`).
  • Bildpipeline und weitere Dominik-abhaengige Themen explizit als nachrangig/blockiert gekennzeichnet.
systemopenclaw

Workspace-Todo neu geordnet

update

  • Geaendert: `.openclaw/workspace/tasks/todo.md`
  • Datei in klare Projektbloecke mit horizontalen Trennern umgebaut.
  • Erledigte Kontexte aus dem Hauptfluss gezogen und durch kompakten Kurzstatus ersetzt.
  • Offene Arbeit nach Prioritaet geordnet: `X / News / Twitter`, `RAG / Agents / Architektur`, `Carpark Brain Attack`, `Produkt-Backlogs`, `Wartet auf Dominik`, `Geparkt`.
codexopenclaw

ARCH-2 zweite Welle: Scheduler auf 25 Jobs gedrueckt und OpenClaw-Auto-Update sauber reaktiviert

changed

  • **`.openclaw/workspace/scripts/check-openclaw-update.sh`**
  • lokale Versionsnormalisierung eingebaut, damit `OpenClaw 2026.3.24 (cff6dc9)` korrekt als `2026.3.24` verglichen wird.
  • dadurch produziert der Update-Check keine Phantom-Updates mehr, wenn lokale Version und GitHub-Release numerisch identisch sind.
  • **`.openclaw/cron/jobs.json`**
  • `maintenance:openclaw-update-check` wieder aktiviert, aber schlank und produktiv:
  • neuer Takt `15 4 * * 1,4` in `Europe/Berlin`
  • stiller Maschinenjob mit `bash ~/.openclaw/workspace/scripts/check-openclaw-update.sh --auto-update`
  • `timeoutSeconds: 900`
  • `delivery.mode=none`
  • Telegram-Failure-Alert nach dem ersten Fehler mit 12h Cooldown
  • zweite Audit-Welle deaktiviert: `twitter:public-news-healthcheck`, `bloomberg:weekly-macro`, `bloomberg:earnings-feeder`
  • Netto-Stand des Schedulers damit von `34` auf `25` aktive Jobs gedrueckt.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `ARCH-2`-Status auf zweite Pruning-Welle, Script-Fix und reaktivierten Auto-Updater gezogen.
  • **`.openclaw/workspace/memory/2026-03-28.md`**
  • Tageslog fuer die zweite Welle, den Update-Script-Fix und den neuen Job-Takt ergaenzt.

verified

  • `bash `.openclaw/workspace/scripts/check-openclaw-update.sh`
  • Ergebnis: `Current OpenClaw version: OpenClaw 2026.3.24 (cff6dc9)` / `Latest available version: 2026.3.24` / `Already up to date.`
  • `openclaw cron disable twitter-public-news-health-2b7d`
  • `openclaw cron disable e5b8d2a1-bloom-berg-macro-w-memo`
  • `openclaw cron disable 4b9c1d3e-bloom-berg-earn3feeder`
  • `openclaw cron edit f6492ec8-f6e2-4ba0-8572-5e5559ff39a7 --enable --cron '15 4 * * 1,4' --tz Europe/Berlin --timeout-seconds 900 --no-deliver --failure-alert ...`
  • `python3 - <<'PY' ...`
  • Ergebnis: `active_jobs 25`, `maintenance:openclaw-update-check True`, die drei neuen Audit-Kandidaten jeweils `False`
codexopenclaw

ARCH-2 erster Scheduler-Pruning-Pass: 34 auf 27 aktive Jobs

changed

  • **`.openclaw/cron/jobs.json`**
  • `spielgenerator:pinterest-reminder` deaktiviert, weil der Job seit Tagen nur `pending`-Pins ohne Bild vorfindet und keinerlei produktiven Dispatch ausloesen kann.
  • `spielgenerator:pinterest-dispatch` deaktiviert, weil die Queue weiter bei `0 ready` / `49 pending` haengt und der Cron daher nur Leerlauf produziert.
  • `twitter:image-generator` deaktiviert, weil der alte Provider-Pfad fachlich tot ist: Gemini/Imagen braucht Paid Plan, OpenRouter-Credits sind leer, der Job erzeugt nur weitere `bridge_pending`-Fehler.
  • `x-scraper:competitor-analysis` deaktiviert, weil der Weekly-Analysejob noch nie produktiv gelaufen war und fuer den aktuellen Kernbetrieb nicht kritisch ist.
  • `agents:cron-strategist-daily`, `maintenance:openclaw-update-check` und `agents:spielgenerator-weekly` deaktiviert, weil sie nur Advisory-/Reminder-Output liefern und in der ersten Audit-Welle keinen Kern-Workflow absichern.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `ARCH-2`-Status auf den neuen Scheduler-Stand (`34 -> 27`) und die deaktivierten Jobs gezogen.
  • **`.openclaw/workspace/memory/2026-03-28.md`**
  • Tageslog fuer den Pruning-Pass, die Begruendung und den verifizierten Aktiv-Count ergaenzt.

verified

  • `openclaw cron disable pinterest-reminder-7f3a`
  • `openclaw cron disable pinterest-dispatch-2e8b`
  • `openclaw cron disable twitter-image-generator-a1d7`
  • `openclaw cron disable x-competitor-analysis-m3n4`
  • `openclaw cron disable cron-strategist-daily-7f3a`
  • `openclaw cron disable f6492ec8-f6e2-4ba0-8572-5e5559ff39a7`
  • `openclaw cron disable spielgenerator-weekly-4b2c`
  • `openclaw cron list`
  • Ergebnis: nur noch `27` aktive Jobs
  • `python3 - <<'PY' ...`
  • Ergebnis: alle sieben Zieljobs stehen in `jobs.json` auf `enabled: false`
codexopenclaw

XS-13 live verifiziert und BUG-001 mit Regressionstests dichtgezogen

changed

  • **`.openclaw/cron/jobs.json`**
  • `x-scraper:premarket`, `x-scraper:nyse-open` und `x-scraper:market-close` von `delivery.mode=announce` auf `delivery.mode=none` gezogen.
  • Dadurch zaehlen erfolgreiche Lane-Runs nicht mehr als Fehler, nur weil der Telegram-Outbound fuer diese Cron-Zustellung nicht konfiguriert ist.
  • **`.openclaw/workspace/tests/test_content_quality_gates.py`**
  • neuer Unittest fuer die spielgenerator-Quality-Gates.
  • deckt drei Pfade ab: harter Blocker-Fall (falsche Spiel-ID, unplausibles Alter, Lernziel-Mismatch), gueltiger Freigabe-Fall (`>= 8/10`, approved) und Fact-Check-Regression gegen bestehende Blogposts.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `XS-13` als erledigt markiert.
  • `ARCH-2` auf den neuen Ist-Stand gezogen: Intraday-X-Block ist gruen, offen bleibt die restliche Cron-Ausduennung.
  • `BUG-001`-Akzeptanzkriterien als verifiziert markiert.
  • **`.openclaw/workspace/memory/2026-03-28.md`**
  • Tageslog fuer die drei Live-Runs und die neuen Quality-Gate-Tests ergaenzt.

verified

  • `openclaw cron edit x-scraper-premarket-c3d4 --no-deliver`
  • `openclaw cron edit x-scraper-nyse-open-e5f6 --no-deliver`
  • `openclaw cron edit x-scraper-market-close-g7h8 --no-deliver`
  • `openclaw cron run x-scraper-nyse-open-e5f6 --expect-final --timeout 1200000`
  • Ergebnis: `ok`, `46` Tweets ueber `6` Symbole, `1m18s`
  • `openclaw cron run x-scraper-premarket-c3d4 --expect-final --timeout 1200000`
  • Ergebnis: `ok`, Portfolio + Watchlist sauber durch, `249.7s`
  • `openclaw cron run x-scraper-market-close-g7h8 --expect-final --timeout 1200000`
  • Ergebnis: `ok`, `12` Profil-Tweets, `78` Portfolio-Tweets, `3` Queue-Drafts, `2m44s`
  • `openclaw cron list | grep 'x-scraper:'`
  • Ergebnis: `x-scraper:premarket`, `x-scraper:nyse-open` und `x-scraper:market-close` stehen wieder auf `ok`
  • `python3 -m unittest discover -s `.openclaw/workspace/tests` -p 'test_content_quality_gates.py'`
  • Ergebnis: `Ran 3 tests ... OK`
codexopenclaw

ARCH-3: Night-Action auf expliziten Report-Runner eingefroren

changed

  • **`.openclaw/workspace/scripts/build-night-plan.py`**
  • Worker-Bloecke laufen jetzt als `dispatch_report_only` statt `dispatch_direct`.
  • Globaler Freeze-Helfer setzt in Default-, Intake- und Refresh-Plaenen konsequent `execution_mode=report_only`, Runner-Migration und `REPORT-ONLY FREEZE`-Prompt-Header.
  • **`.openclaw/workspace/scripts/night-plan-quality-gate.py`**
  • erzwingt fuer stale/externe Plaene ebenfalls `dispatch_report_only` + `report_only` + Freeze-Header.
  • **`.openclaw/workspace/scripts/night-plan-dry-run.sh`**
  • neuer Runner `dispatch_report_only` als gueltiger Night-Runner aufgenommen.
  • **`.openclaw/workspace/agents/cron/nightaction-execute.sh`**
  • Report-Runner akzeptiert; alte `dispatch_direct`-Eintraege werden nur noch als Legacy-Kompatibilitaet mit hartem report-only-Override behandelt.
  • Coding-/Ops-Night-Dispatch bleibt ohne Patch-Apply oder Auto-Commit.
  • **`.openclaw/workspace/scripts/nightaction-status.py`**
  • Outcome-Ableitung kennt jetzt `dispatch_report_only`.
  • **`.openclaw/workspace/scripts/nightaction-smoke-tests.sh`**
  • Smokes pruefen jetzt, dass neue und refreshed Plaene keine `dispatch_direct`-Worker mehr enthalten.
  • **`.openclaw/workspace/memory/nightplan-2026-03-28.json`**
  • Live-Plan auf den neuen Runner/Fix refreshed.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `ARCH-3` als erledigt markiert.
  • **`.openclaw/workspace/memory/2026-03-28.md`**
  • Tageslog fuer den Freeze eingetragen.

verified

  • `python3 -m py_compile `.openclaw/workspace/scripts/build-night-plan.py` `.openclaw/workspace/scripts/night-plan-quality-gate.py` `.openclaw/workspace/scripts/nightaction-status.py`
  • `bash -n `.openclaw/workspace/agents/cron/nightaction-execute.sh`
  • `bash -n `.openclaw/workspace/scripts/night-plan-dry-run.sh`
  • `bash `.openclaw/workspace/scripts/nightaction-smoke-tests.sh`
  • `python3 `.openclaw/workspace/scripts/build-night-plan.py` refresh --plan `.openclaw/workspace/memory/nightplan-2026-03-28.json` --date 2026-03-28`
codexopenclaw

NA-13 Follow-up: Outcome-Regeln auf Plan-Metadaten und harte Noop-Klassen gezogen

changed

  • **`.openclaw/workspace/scripts/nightaction-status.py`**
  • Command-Outcomes nutzen jetzt Plan-Metadaten (`block`, `category`, `execution_mode`) statt nur fester Task-IDs oder generischem Fallback auf `success`.
  • Unbekannte Command-Klassen fallen bewusst auf `failed/missing_success_criteria`, damit neue Night-Tasks nicht mehr stillschweigend false-green werden.
  • `dispatch_direct` behandelt Content-/Research-Reports weiter als legitimen Erfolg, stuft Coding-/Ops-Reports ohne Repo-Aenderung aber auf `skip/report_without_repo_change` herunter.
  • `report_only_no_apply` zaehlt nur dann als Erfolg, wenn der Plan wirklich `report_only` oder einen Report-Deliverable vorsieht.
  • **`.openclaw/workspace/scripts/nightaction-smoke-tests.sh`**
  • Smokes fuer Content-Report-Erfolg, Coding-Report-ohne-Repo-Change, gueltiges `report_only_no_apply` und fehlende Success-Kriterien ergaenzt.

verified

  • `python3 -m py_compile `.openclaw/workspace/scripts/nightaction-status.py`
  • `bash `.openclaw/workspace/scripts/nightaction-smoke-tests.sh`
  • Re-Derive des Problemfalls `2026-03-27` bestaetigt:
  • `NA-003` -> `skip/report_without_repo_change`
  • `NA-004` -> `skip/report_without_repo_change`
  • `NA-DATA-001` / `NA-DATA-002` bleiben `failed/output_failure_signal`
  • `NA-DATA-003` bleibt `success/queue_filled`
codexopenclaw

NA-13: Night-Action-Erfolge auf echte Outcomes umgestellt

changed

  • **`.openclaw/workspace/scripts/nightaction-status.py`**
  • zentrale Outcome-Ableitung pro Task-Klasse eingebaut statt roher `command_ok`/`dispatch_ok`-Weitergabe.
  • neues Subcommand `feedback` angelegt, damit Feedback-JSON und Status-JSON dieselben Regeln verwenden.
  • klare Regeln fuer `command`, `dispatch_direct` und `head_review_local` eingebaut:
  • Scraper brauchen echte Daten ohne Failure-Signal.
  • `NA-DATA-003` wird bei `queue_delta=0` zu `skip/queue_noop`.
  • `report_only_no_apply` und `coding_no_patches` werden zu ehrlichem `skip`.
  • rohes `dispatch_ok` zaehlt nur noch bei substanziell sichtbarem Report als Erfolg.
  • `raw_status`/`raw_reason`, `outcome_class`, `counts_as_success` und `raw_counts` in die kanonischen Feedback-/Status-Snapshots aufgenommen.
  • **`.openclaw/workspace/agents/cron/nightaction-execute.sh`**
  • Inline-Python fuer Feedback-Snapshots entfernt und auf das neue `nightaction-status.py feedback` umgestellt.
  • **`.openclaw/workspace/scripts/nightaction-smoke-tests.sh`**
  • Smoke-Test um abgeleiteten Noop-Case erweitert: `command_ok` + `queue_delta=0` muss jetzt als `skip/queue_noop` rausfallen.
  • **`.openclaw/workspace/memory/nightaction-feedback-2026-03-27.json`**
  • historischer False-Green bereinigt: `NA-DATA-001` und `NA-DATA-002` stehen jetzt korrekt auf `failed/output_failure_signal`.
  • **`.openclaw/workspace/memory/nightaction-status-2026-03-27.json`**
  • Rueckblick fuer `2026-03-27` neu geschrieben; Readiness zeigt jetzt korrekt nur noch `1/3` kritische Tasks als bestanden.
  • **`.openclaw/workspace/memory/nightaction-feedback-2026-03-28.json`**
  • aktueller Feedback-Snapshot auf Outcome-Felder und klare Reasons wie `scrape_completed`, `queue_filled`, `report_delivered` gezogen.
  • **`.openclaw/workspace/memory/nightaction-status-2026-03-28.json`**
  • aktueller Status-Snapshot auf dieselben Outcome-Regeln synchronisiert.
  • **`.openclaw/workspace/memory/nightaction-feedback-latest.json`**
  • Latest-Feedback auf das neue Schema gehoben.
  • **`.openclaw/workspace/memory/nightaction-status.json`**
  • Latest-Status auf das neue Schema gehoben.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `NA-13` als erledigt markiert und den neuen Ist-Zustand dokumentiert.
  • **`.openclaw/workspace/memory/2026-03-28.md`**
  • Tageslog fuer den Umbau und den historischen Fix ergaenzt.

verified

  • `python3 -m py_compile `.openclaw/workspace/scripts/nightaction-status.py`
  • `bash -n `.openclaw/workspace/agents/cron/nightaction-execute.sh`
  • `bash `.openclaw/workspace/scripts/nightaction-smoke-tests.sh`
  • `python3 `.openclaw/workspace/scripts/nightaction-status.py` summary --date 2026-03-27`
  • `python3 `.openclaw/workspace/scripts/nightaction-status.py` summary --date 2026-03-28`
codexopenclaw

Workspace-Memory fuer Todo-Alias nachgezogen

changed

  • **`.openclaw/workspace/MEMORY.md`**
  • Arbeitskonvention ergaenzt: `to do liste` meint im Zweifel den Bereich `~/.openclaw/workspace/tasks/`, primaer `tasks/todo.md`.
  • **`.openclaw/workspace/memory/2026-03-28.md`**
  • Tagesnotiz fuer den Alias plus Wiederaufnahmepunkt `NA-13` eingetragen.
codexopenclaw

XS-11: @clawledge Mention-Scan auf Playwright-Scraper umgestellt und wieder aktiviert

changed

  • **`thelonginvestor/scripts/x-scraper-playwright.mjs`**
  • neuen Roh-Search-Command `search [query]` eingebaut, damit X-Suchen nicht mehr auf den toten X-API-Helfern haengen.
  • **`thelonginvestor/scripts/x-clawledge-mention-scan.mjs`**
  • neues lokales Mention-Scan-Script fuer `@clawledge` angelegt.
  • zieht Treffer ueber den Playwright-Scraper, wirft Self-Posts und offensichtlichen Spam raus, baut Reply-Drafts und schreibt plausible Use-Case-Mentions in `clawledge/scripts/pending/mentions-YYYY-MM-DD.json`.
  • **`.openclaw/cron/jobs.json`**
  • `clawledge:mention-scan` wieder aktiviert.
  • Payload von altem X-API-Workflow auf deterministischen Shell-/Scraper-Pfad umgestellt.
  • Job auf `dashscope-coding/qwen3.5-plus`, `thinking: off`, `lightContext: true`, `timeoutSeconds=420` gezogen.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `XS-11` als erledigt markiert und mit Live-Status dokumentiert.
  • **`.openclaw/workspace/WORKFLOW_AUTO.md`**
  • 10:30-Jobtext auf den neuen Playwright-Mention-Scan gezogen.
  • **`.openclaw/workspace/memory/2026-03-28.md`**
  • Tageslog fuer die Reaktivierung und die ersten Mention-Treffer ergaenzt.

verified

  • `~/.openclaw/tools/node/bin/node --check `thelonginvestor/scripts/x-scraper-playwright.mjs`
  • `~/.openclaw/tools/node/bin/node --check `thelonginvestor/scripts/x-clawledge-mention-scan.mjs`
  • `python3 -c "import json; json.load(open('`.openclaw/cron/jobs.json'));` print('jobs.json OK')"`
  • Dry-Run:
  • `X_USER_DATA_DIR=`.openclaw/browser/openclaw/user-data` X_HEADLESS=1 ~/.openclaw/tools/node/bin/node `thelonginvestor/scripts/x-clawledge-mention-scan.mjs` --since-hours 168 --max 8 --json --dry-run`
  • Ergebnis: `2` frische relevante Mentions, `2` Use-Case-Kandidaten, kein Spam-Noise mehr.
  • Live manueller Run:
  • `X_USER_DATA_DIR=`.openclaw/browser/openclaw/user-data` X_HEADLESS=1 ~/.openclaw/tools/node/bin/node `thelonginvestor/scripts/x-clawledge-mention-scan.mjs` --since-hours 168 --max 8`
  • Ergebnis: `2` Pending-Kandidaten nach `clawledge/scripts/pending/mentions-2026-03-28.json` geschrieben.
codexopenclaw

Carpark OG-only live geschaltet und todo.md von erledigten Altlasten bereinigt

changed

  • **`.openclaw/workspace/tasks/todo.md`**
  • erledigte `[x]`-Altlasten aus den aktiven Bereichen entfernt (`OPS-8`, `PF-2`, `NA-14` bis `NA-18`, Telegram-Privacy-Fix, `AB-1` bis `AB-6`).
  • `Scheduler-Horizont` aus der offenen Liste gezogen und den entschiedenen 2-4-Tage-Livehorizont nur noch als Bereichsstatus belassen.
  • `CBA-5` auf den neuen Ist-Stand gezogen: aktive Kampagne laeuft jetzt OG-only, waehrend der restliche Intake fuer Batch `5`/`6` offen bleibt.
  • **`carpark-brain-attack/src/data/campaignLevels.js`**
  • Legacy-Tutorial-Import aus der aktiven Kampagne entfernt; der Produktivpfad nutzt jetzt ausschliesslich `OG_PHOTO_LEVELS`, sortiert nach `par`, `sourceImage` und `sourceNumber`.
  • Par-Caps fuer niedrige OG-Bretter aufgehoben, damit auch `OG_bild1_36` und `OG_bild1_38` im aktiven Pool landen.
  • **`spielideengenerator/public/carpark/src/data/campaignLevels.js`**
  • Mirror analog auf denselben OG-only-Kampagnenpfad umgestellt.
  • **`carpark-brain-attack/src/game/levelMigration.js`**
  • `LEVEL_ORDER_VERSION` auf `8` gehoben, damit alter Fortschritt nicht auf die neue OG-only-Reihenfolge gemappt wird.
  • **`spielideengenerator/public/carpark/src/game/levelMigration.js`**
  • Mirror analog auf `LEVEL_ORDER_VERSION = 8` gezogen.

verified

  • `~/.openclaw/tools/node/bin/node --check `carpark-brain-attack/src/data/campaignLevels.js`
  • `~/.openclaw/tools/node/bin/node --check `spielideengenerator/public/carpark/src/data/campaignLevels.js`
  • `~/.openclaw/tools/node/bin/node --check `carpark-brain-attack/src/game/levelMigration.js`
  • `~/.openclaw/tools/node/bin/node --check `spielideengenerator/public/carpark/src/game/levelMigration.js`
  • lokaler Count-Check auf `campaignLevels.js`
  • aktive Kampagne jetzt `39` Levels, davon `39` `photo-original`, `0` `legacy-tutorial`
  • `npm run build` in `spielideengenerator`
  • `npx vercel deploy --prod --yes`
  • Deployment `dpl_4o4Q2zrsck4EzHEwSh8fP4W7YsBn` bereit und auf `https://www.spielgenerator.de` aliased
  • Live-Check
  • `https://www.spielgenerator.de/carpark/src/data/campaignLevels.js` liefert `CAMPAIGN_VERSION = 9` und OG-only-Importpfad
  • `https://www.spielgenerator.de/carpark/src/game/levelMigration.js` liefert `LEVEL_ORDER_VERSION = 8`
claudeopenclaw

INFRA: Server-Migration Verify + Telegram-Fixes + X-Scraper Lock-Fix

changed

  • **`~/.openclaw/agents/main/sessions/sessions.json`**
  • Verwaiste Session `agent:main:telegram:group:@telegram` entfernt — sendete faelschlich an offiziellen Telegram-Kanal (`-1001005640892`) statt an User.
  • **`~/.openclaw/openclaw.json`**
  • `@foliopingbot` aus `groups.-5282701263.allowFrom` entfernt — Gateway erwartet numerische Telegram User-IDs, keine @usernames.
  • **`thelonginvestor/scripts/x-scraper-playwright.mjs`**
  • PID-Alive-Check in Lock-Logik eingebaut: `process.kill(pid, 0)` prueft ob Lock-Holder noch lebt. Wenn Prozess tot (SIGKILL etc.) → Lock sofort entfernt statt 2h Stale-Timeout abzuwarten.
  • **Gateway neugestartet** — sauberer Start ohne Telegram-Warnungen.
  • **Stale Lock entfernt** (`~/.openclaw/browser/x-scraper.lock`) — verwaist nach SIGKILL des watchlist-Scans.
  • **Temp-Key aufgeraeumt** (`/root/.ssh/temp_key*` geloescht).
  • **Password-Auth** fuer Termius-Mobilzugang aktiviert (fail2ban + Port 2222 als Schutz).

context

  • Server-Migration CAX21→CAX31 war bereits produktiv (Gateway, Timer, Crontab, Tailscale alles aktiv).
  • Infra-Restcheck hat 3 Issues gefunden und gefixt.
  • Funnel/Hook E2E verifiziert (Tailscale → 8788 → Gateway → OK).

verified

  • `node --check `thelonginvestor/scripts/x-scraper-playwright.mjs` OK
  • `curl http://localhost:28456/` → 200
  • `ss -tlnp | grep 28456` → bound
  • `ss -tlnp | grep 8788` → bound
  • Gateway-Log nach Restart: keine `@foliopingbot`-Warnung, keine `@telegram`-403.
codexopenclaw

CBA-6: Batch-6-OG-Intake auf acht solver-gruene Boards gezogen

changed

  • **`carpark-brain-attack/PICTURES/intake/6.json`**
  • `OG_6_65`, `OG_6_67`, `OG_6_73`, `OG_6_75`, `OG_6_81`, `OG_6_83`, `OG_6_90` und `OG_6_91` aus `pending` auf `accepted` gezogen und nach manuellem Fotoabgleich mit echten Fahrzeugkoordinaten hinterlegt.
  • bei `OG_6_83` die linke gelbe Senkrechte nach dem ersten Solver-Fang von Laenge `3` auf `2` korrigiert.
  • bei `OG_6_65` die linke gelbe Senkrechte nach dem ersten Solver-Fang ebenfalls von Laenge `3` auf `2` korrigiert.
  • die kaputte `referenceCandidate`-Spur fuer Batch `6` bewusst nur als Hintergrund stehen gelassen statt blind uebernommen.
  • **`carpark-brain-attack/src/data/ogPhotoLevels.js`**
  • `OG_6_65`, `OG_6_67`, `OG_6_73`, `OG_6_75`, `OG_6_81`, `OG_6_83`, `OG_6_90` und `OG_6_91` neu in den OG-Bestand uebernommen.
  • **`spielideengenerator/public/carpark/src/data/ogPhotoLevels.js`**
  • Mirror analog mit denselben acht Batch-6-Boards synchronisiert.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `CBA-5` auf den echten Stand von Batch `5` plus Start von Batch `6` gezogen.

verified

  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 75 --sync-par`
  • `OG_6_75` solver-gruen, `par 35`, `minMoves 35`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 83 --sync-par`
  • `OG_6_83` solver-gruen, `par 12`, `minMoves 12`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 65 --sync-par`
  • `OG_6_65` solver-gruen, `par 19`, `minMoves 19`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 67 --sync-par`
  • `OG_6_67` solver-gruen, `par 32`, `minMoves 32`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 73 --sync-par`
  • `OG_6_73` solver-gruen, `par 34`, `minMoves 34`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 81 --sync-par`
  • `OG_6_81` solver-gruen, `par 39`, `minMoves 39`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 90 --sync-par`
  • `OG_6_90` solver-gruen, `par 8`, `minMoves 8`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 91 --sync-par`
  • `OG_6_91` solver-gruen, `par 14`, `minMoves 14`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 75`
  • Source + Mirror mit `OG_6_75` aktualisiert
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 83`
  • Source + Mirror mit `OG_6_83` aktualisiert
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 65`
  • Source + Mirror mit `OG_6_65` aktualisiert
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 67`
  • Source + Mirror mit `OG_6_67` aktualisiert
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 73`
  • Source + Mirror mit `OG_6_73` aktualisiert
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 81`
  • Source + Mirror mit `OG_6_81` aktualisiert
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 90`
  • Source + Mirror mit `OG_6_90` aktualisiert
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/6.json` --only 91`
  • Source + Mirror mit `OG_6_91` aktualisiert

befund

  • Batch `6` ist nicht mehr nur vorbereitet, sondern produktiv begonnen.
  • Acht Boards aus Seite `6` sind jetzt schon sauber im Bestand; fuer die restlichen Crops bleibt manueller Fotoabgleich sinnvoller als Referenz-Automatik.
  • Die lokale Rush-Hour-Referenzdatei ist fuer diese Seite als Geometriehilfe nur eingeschraenkt brauchbar; weitere Boards brauchen weiterhin echten Fotoabgleich statt Auto-Apply.
codexopenclaw

Prioritaeten in todo.md auf X-Scraper-Fix und Carpark-OG-Intake nachgezogen

changed

  • **`.openclaw/workspace/tasks/todo.md`**
  • neuen Fokusblock `X Scraper / Cron-Audit` nach ganz oben gezogen.
  • `XS-13` als expliziten naechsten Arbeitsblock angelegt: die drei roten Playwright-Intraday-Jobs `x-scraper:premarket`, `x-scraper:nyse-open` und `x-scraper:market-close` sind jetzt klar priorisiert.
  • Carpark-Folgepfad als `CBA-5` direkt dahinter verankert: nach dem X-Scraper-Fix soll der OG-Intake mit `PICTURES/intake/5.json` weitergehen.
  • `ARCH-2` auf den neuen Fokus querverwiesen, damit Cron-Audit und X-Scraper-Stabilisierung nicht mehr als zwei getrennte Baustellen nebeneinanderstehen.
codexopenclaw

CBA-5: Batch-5-OG-Intake gestartet, OG_5_135 uebernommen

changed

  • **`carpark-brain-attack/PICTURES/intake/5.json`**
  • `OG_5_135` aus dem vorhandenen Referenzkandidaten auf `accepted` gezogen.
  • `136` und `144` nach kurzem Versuch bewusst wieder auf `pending` mit `referenceCandidate` zurueckgesetzt, weil die Referenzlayouts solver-seitig echte Kollisionen erzeugten.
  • **`carpark-brain-attack/src/data/ogPhotoLevels.js`**
  • `OG_5_135` neu in den OG-Bestand uebernommen.
  • **`spielideengenerator/public/carpark/src/data/ogPhotoLevels.js`**
  • Mirror analog mit `OG_5_135` synchronisiert.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `CBA-5` auf den echten Batch-5-Zwischenstand gezogen: `135` ist drin, `136`/`144` bleiben offen, dazu `143`, `151`, `152`, `159`, `160`.

verified

  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` verify --batch `carpark-brain-attack/PICTURES/intake/5.json` --only 135`
  • `OG_5_135` solver-gruen, `par 3`, `minMoves 3`
  • `~/.openclaw/tools/node/bin/node `carpark-brain-attack/scripts/og-intake.mjs` apply --batch `carpark-brain-attack/PICTURES/intake/5.json` --only 135`
  • Source + Mirror mit `OG_5_135` aktualisiert

befund

  • Batch `5` ist nicht mehr nur vorbereitet, sondern produktiv begonnen.
  • Die lokalen Referenzkandidaten fuer `136` und `144` sind hilfreich als Startpunkt, aber noch nicht uebernahmefaehig; dort braucht es echten manuellen Fotoabgleich statt blindem Apply.
codexopenclaw

XS-13: Intraday-X-Scraper auf sequenzielle Lane-Runs umgebaut

changed

  • **`thelonginvestor/scripts/x-scraper-playwright.mjs`**
  • neue Intraday-Scope-Flags `--limit-symbols` und `--limit-accounts` eingebaut.
  • Portfolio-/Watchlist-Logs zeigen jetzt die wirklich geslicten Umfaenge statt nur den Vollbestand.
  • **`thelonginvestor/scripts/x-scraper-cron-run.mjs`**
  • neuer deterministischer Lane-Runner fuer `premarket`, `nyse-open` und `market-close`.
  • fuehrt X-Scrapes jetzt sequenziell statt parallel aus und fasst das Ergebnis lokal in eine kurze stdout-Zusammenfassung fuer Cron/Telegram zusammen.
  • Intraday-Lanes laufen bewusst schlanker als der Morning-Sweep:
  • `premarket`: Portfolio `8` Symbole + Watchlist `4` Accounts
  • `nyse-open`: Portfolio `6` Symbole
  • `market-close`: eigenes Profil + Portfolio `8` Symbole + `x-scraper-to-queue`
  • **`.openclaw/cron/jobs.json`** (via `openclaw cron edit`)
  • `x-scraper:premarket`, `x-scraper:nyse-open` und `x-scraper:market-close` von freien LLM-Prompts auf exakte Lane-Commands umgestellt.
  • alle drei Jobs jetzt auf `dashscope-coding/qwen3.5-plus`, `thinking: off`, `lightContext: true`, `timeoutSeconds=900`.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `XS-13` und `ARCH-2` auf den technischen Fix-Stand mit lokal verifizierten Lane-Runs gezogen.

verified

  • `~/.openclaw/tools/node/bin/node --check `thelonginvestor/scripts/x-scraper-playwright.mjs`
  • `~/.openclaw/tools/node/bin/node --check `thelonginvestor/scripts/x-scraper-cron-run.mjs`
  • lokaler Dry-Run:
  • `x-scraper-cron-run.mjs --lane nyse-open --dry-run` -> `1m10s`
  • `x-scraper-cron-run.mjs --lane premarket --dry-run` -> `3m30s`
  • lokaler Real-Run:
  • `x-scraper-cron-run.mjs --lane market-close` -> `2m43s`
  • dabei `12` Profil-Tweets + `79` Portfolio-Tweets nach Supabase geschrieben; `x-scraper-to-queue` lief sauber durch und erzeugte keine neuen Drafts

befund

  • Die frueheren Intraday-Ausfaelle waren nicht nur "zu langsame Browser", sondern vor allem ein Orchestrierungsproblem: mehrere Playwright-Kommandos wurden parallel gestartet, kollidierten am globalen X-Lock und liefen danach in Cron-Timeouts.
  • Der neue Lane-Runner beseitigt genau diese Parallel-Lock-Kollisionen; offen bleibt nur noch die erste echte Cron-Live-Bestaetigung, damit die alten roten Scheduler-States nachziehen.
codexopenclaw

Cron-Audit: Session-Cleanup enthaertet, Evening-Auto-Post auf maschinelles Skip-Handling gezogen

changed

  • **`.openclaw/cron/jobs.json`** (via `openclaw cron edit`)
  • `maintenance:session-cleanup` auf einen strikten, shell-getriebenen Maintenance-Pfad umgestellt:
  • expliziter `openclaw sessions cleanup --all-agents --enforce --json`-Run
  • nur noch `NO_REPLY`, wenn <=10 Sessions gepruned wurden
  • `timeoutSeconds` von `60` auf `180`
  • `lightContext: true`, `thinking: off`, Modell `dashscope-coding/qwen3.5-plus`
  • `twitter:auto-post-evening` ebenfalls auf einen strikt maschinellen Shell-Pfad umgestellt:
  • `NO_REPLY` sowohl bei echtem Erfolg als auch bei sauberem `SKIP`
  • `SKIP` wird bei belegtem Slot, leerer Queue oder Preflight-Blockade als normaler Nicht-Fehler behandelt
  • knapper Memory-Eintrag fuer `OK`/`SKIP` direkt im Shell-Pfad
  • `timeoutSeconds` von `120` auf `180`
  • `lightContext: true`, `thinking: off`, Modell `dashscope-coding/qwen3.5-plus`

verified

  • `openclaw cron run fb5ffe6e-9fa4-48d8-b2b9-d87d8d303570`
  • manueller Cleanup-Run jetzt `ok`, `48.2s`, `consecutiveErrors=0`
  • lokaler Shell-Smoke fuer den Evening-Pfad mit Dry-Run:
  • `postfast-dispatch.mjs ... --slot-template evening --dry-run`
  • aktueller Befund: `STDOUT=NO_REPLY` bei `[SKIP] evening ... bereits belegt durch queue:eg-20260327-ab2ed4`

befund

  • `maintenance:session-cleanup` war nicht fachlich kaputt, sondern als LLM-Cron mit zu knapper Laufzeit unnoetig fragil.
  • `twitter:auto-post-evening` war als roter Job irrefuehrend, obwohl ein Teil der Faelle normale Nicht-Post-Situationen wie Slot belegt oder PostFast-Limit sind; diese Zustande werden jetzt sauber als `NO_REPLY`/`SKIP` behandelt.
codexopenclaw

Playwright-News-Lauf gehaertet und Night-Action-Live-Check abgeschlossen

changed

  • **`thelonginvestor/scripts/pw-news-orchestrator.mjs`**
  • schwere Browser-Ressourcen (`image`, `font`, `media`) werden fuer Yahoo-News-Seiten jetzt blockiert.
  • starres Nightly-Pacing durch kleine, konfigurierbare Inter-Ticker-Delays plus kuerzere Scroll-Settling-Zeit ersetzt.
  • Lauf-Parameter werden zu Run-Beginn geloggt, damit Cron-Diagnosen kuenftig schneller sind.
  • **`thelonginvestor/scripts/send-briefing.mjs` + `.openclaw/tli-briefing/send-briefing.mjs`**
  • sicherer `--preview`/`--dry-run`-Modus eingebaut, der das Briefing auf stdout rendert, aber nichts an Telegram sendet.
  • News-Highlights bekommen jetzt ein kleines Relevanz-Ranking statt stumpf die ersten 3 neuesten Unique-Ticker zu nehmen.
  • generische Yahoo-Roundups (`Sector Update`, `Most Active Stocks`, `What You Need To Know` usw.) werden dabei gegen ticker-/firmennaehere Headlines abgewertet.
  • **`.openclaw/cron/jobs.json`** (via `openclaw cron edit`)
  • Payload von `tli:pw-news-scraper` so nachgezogen, dass der Agent den Script-Run mit langem Tool-Timeout fahren und Fehler nicht mehr mit blindem `NO_REPLY` kaschieren soll.
  • Payload von `tli:daily-briefing` analog gehaertet, damit Send-Fehler nicht mehr still als `ok` im Cron enden.
  • **`.openclaw/workspace/tasks/todo.md`**
  • `PW-1`/`PW-2` auf den echten 2026-03-28-Status nach dem ersten produktiven Fehl-Lauf gezogen.
  • `OPS-8` nach bestaetigten user-systemd-Laeufen abgeschlossen.

verified

  • `~/.openclaw/tools/node/bin/node --check `thelonginvestor/scripts/pw-news-orchestrator.mjs`
  • lokaler Dry-Run des Orchestrators:
  • vorher `292s`
  • nach Fix `141s`
  • manueller Debug-Run ueber OpenClaw:
  • `openclaw cron run pw-news-scraper-a3b7`
  • `28` Ticker, `486` neue Artikel, `147s`, Exit `0`, danach korrekt `NO_REPLY`
  • Briefing-Preview:
  • `TLI_BRIEFING_DATE=2026-03-28 node ~/.openclaw/tli-briefing/send-briefing.mjs --preview`
  • rendert ohne Telegram-Send und zieht aktuell als Top-3 `ABCL`, `ZVRA`, `ERII`
  • Night-Action-Timer auf dem neuen Setup real bestaetigt:
  • ``
  • ``
  • ``
codexopenclaw

PostFast Scheduler-Horizont eingebaut, Live-Slots per Slot-Guard entkoppelt

changed

  • **`thelonginvestor/scripts/postfast-dispatch.mjs`**
  • `--slot-template` (`morning`, `us-open-en`, `evening`, `queue-core`) und `--horizon-days` fuer lane-aware Zukunftsplanung in `Europe/Berlin` eingebaut.
  • Slot-Generator/Resolver fuer `09:15`, `15:45`, `18:30` ergaenzt, inklusive Occupancy-Guard gegen bereits belegte Queue-/PostFast-Slots.
  • Freshness-Gates nach Queue-Kind eingezogen, damit fuer Zukunftsslots keine alten `public_news`/`market_commentary`/`ragebait` mehr blind verplant werden.
  • PostFast-Preflight kann Limits jetzt gegen bereits geladene Remote-Posts plus im aktuellen Run reservierte Zukunftsslots rechnen.
  • **`.openclaw/cron/jobs.json`** (via `openclaw cron edit`)
  • `twitter:auto-post-morning`, `twitter:auto-post-us-open-en` und `twitter:auto-post-evening` rufen den Dispatcher jetzt jeweils mit ihrem Lane-`--slot-template` auf, damit ein spaeter vorgeplanter Horizon-Slot den Live-Job derselben Lane sauber blockiert statt doppelt zu posten.
  • **`.openclaw/workspace/tasks/todo.md`**
  • Scheduler-Horizont-Status um den echten 14-Tage-Dry-Run-Befund ergaenzt.

verified

  • `node --check `thelonginvestor/scripts/postfast-dispatch.mjs`
  • Single-slot Dry-Run mit Lane-Guard:
  • `~/.openclaw/tools/node/bin/node `thelonginvestor/scripts/postfast-dispatch.mjs` --account @th3_m0l3 --kind public_news --fallback-kind market_commentary,evergreen --max 1 --schedule now+5m --slot-template morning --dry-run`
  • Ergebnis: pickt `tw-20260328-29da86`
  • Horizon Dry-Run:
  • `~/.openclaw/tools/node/bin/node `thelonginvestor/scripts/postfast-dispatch.mjs` --slot-template queue-core --horizon-days 14 --dry-run`
  • Ergebnis: `candidateSlots=41`, `scheduled=8`, `missingQueue=29`, `preflightBlocked=0`

befund

  • Die Doppelpost-Gefahr zwischen kuenftigem Horizon-Plan und den heute noch aktiven Runtime-Slots ist jetzt technisch entschärft.
  • Der eigentliche Blocker fuer einen echten 10-20-Tage-Live-Horizont ist aktuell nicht mehr der Scheduler, sondern die Queue-Tiefe unter realistischen Freshness-Grenzen; mit dem aktuellen Bestand tragen sauber nur rund 8 Zukunftsslots.

Incidents

Twitter / PostFast Scheduler-Horizont
~30 mincodex

Problem: Ein echter 10-20-Tage-Horizont war weiter nur Konzept, und die aktiven `twitter:auto-post-*`-Jobs haetten bei vorgeplanten PostFast-Slots derselben Lane doppelt gepostet

Ursache: `postfast-dispatch.mjs` kannte nur den Einzelslot `--schedule now+5m`, hatte weder lane-aware Slot-Erkennung noch Zukunftsplanung oder Freshness-Gates fuer alternde Queue-Items; die Runtime-Crons wussten nichts von bereits vorgeplanten Lane-Slots

Fix: `--slot-template` + `--horizon-days` mit Berlin-Slot-Resolver, Occupancy-Guard und kindbasierten Freshness-Limits gebaut; die drei Live-Auto-Post-Jobs per `openclaw cron edit` auf ihre Lane-Templates gezogen, und ein 14-Tage-Dry-Run zeigte danach sauber `8/41` planbare Slots statt blind alles in die Zukunft zu tackern

TLI / Playwright News Cron
~30 mincodex

Problem: Der erste produktive Yahoo-News-Run brach nach `10/28` Tickern mit `SIGKILL` ab und wurde im Cron trotzdem als `ok` verbucht

Ursache: Der Scraper lief real deutlich laenger als der implizite `exec timeout=120s` des Agenten; zusaetzlich zwang die Job-Payload bei Fehlern trotzdem `NO_REPLY`, wodurch der Fehl-Lauf als erfolgreich maskiert wurde

Fix: `pw-news-orchestrator.mjs` auf leichtere Requests und kuerzeres Pacing getrimmt (lokal `292s -> 141s`), `tli:pw-news-scraper` per `openclaw cron edit` auf laengeren Tool-Timeout + explizite Fehlerbehandlung nachgezogen und Todo/Changelog auf den echten Stand gebracht

TLI / Morning Briefing Quality
~25 mincodex

Problem: Mit den neuen Yahoo-Massen waere das Briefing weiter zu stumpf geblieben: ohne Preview liess es sich nicht gefahrlos pruefen, und die News-Highlights nahmen leicht generische Roundups statt tickernaher Headlines

Ursache: `send-briefing.mjs` hatte keinen dry-run/preview-Pfad und waehlte fuer `News Highlights` nur die drei neuesten Unique-Ticker; bei Yahoo fuehrte das schnell zu `Sector Update`-, `Most Active Stocks`- oder anderen Sammelartikeln

Fix: Preview-Modus in Dev+Prod-`send-briefing.mjs` eingebaut, News-Highlights ueber kleines Relevanz-Ranking gehaertet und den produktiven `tli:daily-briefing`-Cron analog auf ehrliche Fehlerbehandlung gezogen; Preview fuer `2026-03-28` rendert jetzt ohne Telegram und zeigt `ABCL`, `ZVRA`, `ERII` statt generischer Roundups

Cron / Maintenance + Evening Auto-Post
~20 mincodex

Problem: `maintenance:session-cleanup` lief wiederholt ins Timeout, und `twitter:auto-post-evening` stand auf rot, obwohl ein Teil der Faelle nur normale Skip-/Slot-blockiert-Situationen waren

Ursache: Der Cleanup hing unnoetig in einem LLM-Cron mit nur `60s` Laufzeit; der Evening-Job hatte keinen robusten maschinellen `SKIP`/`NO_REPLY`-Pfad und behandelte Nicht-Post-Faelle zu leicht wie Fehler

Fix: Beide Cron-Payloads per `openclaw cron edit` auf deterministische Shell-Pfade mit `qwen3.5-plus`, `lightContext: true`, `thinking: off` und `timeoutSeconds=180` gezogen; Cleanup live manuell verifiziert (`48.2s`, `ok`, `consecutiveErrors=0`), Evening lokal per Dry-Run-Smoke auf sauberes `NO_REPLY` bei belegtem Slot geprueft

X / Intraday Scraper Cron
~40 mincodex

Problem: `x-scraper:premarket`, `x-scraper:nyse-open` und `x-scraper:market-close` liefen systematisch in Timeouts oder lieferten nur partielle Daten

Ursache: Die alten Cron-Prompts starteten mehrere Playwright-Kommandos frei ueber `agentTurn`; dadurch kollidierten sie am globalen X-Lock, parallelisierte Scans blockierten sich gegenseitig und verbrannten ihr Zeitbudget zusaetzlich noch fuer eine LLM-Zusammenfassung. Gleichzeitig war der Intraday-Scope mit voller `cashtag-portfolio`-Breite zu schwer

Fix: Intraday-Lanes auf einen deterministischen Runner `x-scraper-cron-run.mjs` umgestellt, `x-scraper-playwright.mjs` um `--limit-symbols`/`--limit-accounts` fuer schlankere Intraday-Slices erweitert und die drei Jobs per `openclaw cron edit` auf exakte Lane-Commands mit `qwen3.5-plus`, `thinking: off`, `lightContext: true`, `timeoutSeconds=900` gezogen; lokal verifiziert mit `nyse-open --dry-run` (`1m10s`), `premarket --dry-run` (`3m30s`) und `market-close` real (`2m43s`)

Carpark / OG Intake Batch 6
~110 mincodex

Problem: Die erste Batch-6-Seite hing an unzuverlaessigen Rush-Hour-Referenztreffern; blindes Uebernehmen haette erneut fehlerhafte Foto-Levels in den OG-Bestand geschoben

Ursache: Die lokale Referenzdatei enthaelt fuer mehrere Level dieser Seite widerspruechliche Geometrien bzw. doppelt belegte rote Slots und eignet sich hier nur eingeschraenkt als Startpunkt

Fix: `OG_6_65`, `OG_6_67`, `OG_6_73`, `OG_6_75`, `OG_6_81`, `OG_6_83`, `OG_6_90` und `OG_6_91` direkt von den Crops manuell transkribiert, solver-geprueft (`par 19`, `32`, `34`, `35`, `39`, `12`, `8`, `14`) und danach sauber in Source + Mirror angewendet; bei `OG_6_65` und `OG_6_83` wurde der erste Solver-Fang direkt als Laengen-Korrektur (`3 -> 2`) eingearbeitet

Agent-System / Knowledge Graph Maintenance
~20 mincodex

Problem: Die naechliche Graph-Interpretation konnte bei LLM-Timeouts komplett ausfallen; ohne Retry entstand sofort ein 24h Blindspot fuer neue Episoden

Ursache: `graph_maintenance.py` brach nach dem ersten Timeout ab und betrachtete standardmaessig nur ein 2-Tage-Fenster, sodass ein verpasster Lauf nicht robust nachgeholt wurde

Fix: Timeout-only Retry-Logik mit `3` Versuchen und `30s` Pause eingebaut, erschoepfte Laeufe explizit als `retry_exhausted` markiert und das Interpretationsfenster auf `3` Tage erweitert, damit der naechste Nachtlauf verpasste Episoden nachzieht

Agent-System / Dispatch Capability Guard
~30 mincodex

Problem: Tasks wurden per Keyword-Treffer an Agents geroutet, deren technisches Profil nicht passte; so landeten Web-Recherchen bei `research_agent` oder Implementierungs-Faelle bei rein advisory-orientierten Agents

Ursache: `dispatch.py` hatte bisher nur Keyword-Scoring, aber keine Validierung gegen benoetigte Capabilities wie web-abhaengige Task-Pfade, Script-Ausfuehrung oder echte Content-Erstellung

Fix: Capability-Map plus Keyword-basierte `required_capabilities` in `dispatch.py` eingebaut, Mismatch auf den naechstbesten Agenten umgelenkt und Routing-Events in `knowledge_graph/maintenance-log.json` geloggt; verifiziert u. a. mit `research_agent -> backend_engineer`, `business_analyst -> backend_engineer` und `spielgenerator_agent -> content_agent`

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.