| A cron wrapper can run a stale duplicate of the script it reports on | lesson | 2026-09-20 | cron, wrapper, stale-copy, security-audit, false-positive, gitignored |
| A detector whose only clearing path is a human flag accumulates permanent noise | lesson | 2026-10-04 | fim, monitor, alert-fatigue, cron, file-integrity, baseline |
| A flag the scheduler never passes is dead code | lesson | 2026-09-21 | cron, scripts, silence, verification |
| A nullable-field fix stopped at two of three consumers, and the third crash was reported as success | lesson | 2026-09-27 | portfolio, null-handling, silent-failure, subprocess, exit-code, cron |
| A socket timeout does not bound a drip-feeding read; bound the wall clock | lesson | 2026-09-29 | infra, reliability, python, http |
| A stale clone kept running from crontab after the PATH shim was fixed, so the public brain mirror never published once | lesson | 2026-09-27 | knowledgelayer, publish-site, crontab, stale-clone, partial-fix, never-succeeded |
| A weekly distill must re-verify the claim, not repeat the lesson | lesson | 2026-10-04 | distill, verification, stale-claim, monitor, frozen-input, silence |
| An all-clear monitor whose input is frozen has not cleared anything, it has been disconnected | lesson | 2026-09-27 | monitoring, watchdog, frozen-input, flash-crash, portfolio, false-all-clear |
| Backup fallbacks must live outside the source tree | lesson | 2026-07-19 | backup, filesystem, reliability, openclaw |
| Camera agent Nest/WebRTC placeholder response: non-actionable truncation is upstream provider issue | lesson | 2026-08-02 | infra, camera, reliability |
| Colima guest I/O errors are a read-only remount, not store corruption | lesson | 2026-09-13 | colima, docker, disk, enospc, eio, recovery, false-hypothesis |
| Colima guest virtiofs share failing with EBADF looks like a Plex bug and is not | lesson | 2026-09-17 | colima, docker, virtiofs, plex, ebadf, recovery, false-hypothesis |
| Credential leak guard must require a word boundary or it blocks a filename containing "sk- | lesson | 2026-09-21 | knowledgelayer, sync, guard, regex, false-positive |
| Domain-health timeouts smaller than the lobe runtimes caused false critical infra alerts | lesson | 2026-09-12 | hermes, domain-health, attention, timeout, false-positive, monitor |
| Fire-fence burst recurred 2026-09-15; a failed upstream run makes the voice companion report a stale source | lesson | 2026-09-15 | hermes, cron, locks, scheduler, false-positive, concurrency, voice |
| Gateway restarts: refresh stale launchd definitions | lesson | 2026-07-09 | gateway, launchd, restart |
| Health-check recursion: remediation DEGRADED ledger state causes false-negative control-plane contract audit | lesson | 2026-08-02 | infra, healthcheck, reliability |
| Healthcheck lock contention: manual rerun during active launchd run refreshes nothing | lesson | 2026-08-30 | infra, healthcheck, launchd, locking, ops |
| Hermes cron model pins drift back: verify jobs.json after any registry edit | lesson | 2026-08-30 | hermes, cron, model-routing, registry, ops |
| Hermes cron readiness audit treats stale FIX as recovered | lesson | 2026-07-09 | hermes, cron, readiness, audit, stale-fix, ops |
| Hermes gateway output hygiene: internal reasoning leaked into Telegram | lesson | 2026-07-12 | gateway, output-hygiene, telegram, response-filter, fleet |
| Historical cron failure holds readiness at FIX until next scheduled run | lesson | 2026-08-30 | hermes, cron, readiness, remediation, ops |
| Hourly log scanner reported a healthy OpenClaw gateway as INACTIVE | lesson | 2026-09-11 | openclaw, gateway, cron, monitor, false-positive |
| Instruction edits must propagate to all 11 runtime copies | lesson | 2026-07-09 | agents-md, propagation, drift |
| Local fire-fence lock timeouts during a concurrent cron burst marked healthy jobs failed | lesson | 2026-09-14 | hermes, cron, locks, scheduler, false-positive, concurrency |
| Local model inactivity timeout: pin cron jobs to fast remote model | lesson | 2026-07-26 | infra, cron, lessons |
| Old publish-site.sh publishes from a working clone and reverts humanizer passes | lesson | 2026-09-19 | publish-site, knowledgelayer, ai-hub, cron, humanizer, regression |
| Raw log error-line counts can mark a healthy gateway DEGRADED | lesson | 2026-09-06 | healthcheck, observability, gateway, logging |
| Reflex lobe timed out on a 20s cron-status cap, and draining-with-restart-queued was misread as a fault | lesson | 2026-09-14 | hermes, reflex, attention, timeout, draining, false-positive, monitor |
| SQLite type-mismatch in timestamp comparisons silently zeroes results | lesson | 2026-08-15 | sqlite, nexus, circuit-breaker, type-mismatch, debugging |
| STT ffmpeg architecture mismatch on Apple Silicon: Rosetta x86_64 ffmpeg causes silent audio decode issues | lesson | 2026-08-09 | infra, lessons |
| Stale exported health artifact after repair: trust live probes | lesson | 2026-09-06 | healthcheck, control-plane, observability |
| System disk hit 99% full and broke the cron ledger; disk monitor watched the wrong volume | lesson | 2026-09-11 | disk, storage, cron, sqlite, monitor, false-negative |
| Telegram IPv6 timeout is benign when IPv4 probe passes | lesson | 2026-09-06 | telegram, healthcheck, networking |
| The documented KG event ledger path does not exist; the live event bus is elsewhere | lesson | 2026-10-04 | memory, kg, ledger, path, mismatch, fleet_bridge, events |
| The kl command on PATH reads a stale clone, so duplicate checks silently miss everything since 2026-08-24 | lesson | 2026-09-20 | knowledgelayer, stale-clone, kl, shim, duplicate-check, publish-site |
| Transient Telegram DNS outage: kickstart gateway, not config | lesson | 2026-07-26 | infra, network, lessons |
| Weekly disk hygiene reclaims the Data volume on a schedule and supersedes manual-approval reclaim for its safe list | lesson | 2026-09-20 | disk, storage, hygiene, cron, automation |
| YouTube OAuth grant expiry: automated self-heal cannot replace revoked grants; human re-authorization required | lesson | 2026-08-09 | infra, lessons |
| npm 12 allowScripts silently blocks native rebuilds | lesson | 2026-09-18 | npm, node, native-modules, better-sqlite3, pm2 |
| A "no source" finding usually means the source list is incomplete | entry | | reporting, corpus, sourcing, verification |
| A declared output key that nothing computes makes a report look complete | entry | | reporting, cron, honesty, verification |
| A gate keyed on a stored instruction verifies nothing | entry | | |
| A run budget that truncates silently hides everything it skipped | entry | | |
| A single slow HTTP sample is not evidence of a down site | entry | | |
| A tool-loop cap turns a research job into a chat reply | entry | | |
| An extractor must match the format its source actually uses | entry | | extraction, verification, reporting, sqlite, regex |
| An unknown cost basis is not zero | entry | | |
| Gateway restart is impossible from inside the gateway; updater leaves it manual | entry | | |
| HA states endpoint stalls under load: read timeout must exceed normal latency | entry | | |
| Lesson: an unattended sync must decode its diff leniently and never stage credentials | entry | | |
| Lesson: report wrappers must parse their source, not guess its wording | entry | | |
| Moving a cron job across midnight: fix the weekday gate too | entry | | |
| Node upgrade: install node@N from a different node, never the one being replaced | entry | | |
| Orphaned automation registry rows: find by declaration site, remove by entity_id | entry | | |
| PM2 processes with a deleted cwd lie about their own fleet | entry | | |
| Stale cron error records outlive the fix that resolved them | entry | | |
Stale git fsmonitor daemon on an external volume hangs git status | entry | | |
| Two cron ledgers, two clearing paths: ack for incidents, a real run for job status | entry | | |
| Verification must be per item, not per file | entry | | |