Notable changes to openclaw-ops. Format loosely follows Keep a Changelog.
scripts/remediation-board.shnow supports typed remediation items (incident,hack,upstream-watch,cron-error,upgrade-blocker,security-hardening), machine incident imports, hypotheses, steps tried, current workarounds, upstream links, close criteria, and markdown incident-note export.- The remediation workflow now explicitly requires a local board item for any real OpenClaw error/regression, hack/workaround, security concern, or recurring ops finding, preventing local operational issues from silently escaping the repair loop. Upstream links are optional metadata, not the primary workflow.
scripts/workspace-auto-commit.sh— local-only git snapshot helper for~/.openclaw/workspace*repos. It supports targeted--workspace PATH,--all,--dry-run, and JSON output, and never pushes.scripts/workspace-git-audit.sh— audits OpenClaw workspace repos for git status, dirty counts, and auto-commit cron coverage;--show-cronprints suggested cron setup commands for uncovered repos.docs/architecture.md— documents the single-owner restart policy and conventions for extending detection patterns rather than adding parallel watchdogs.CONTRIBUTING.mdwith guidance on what to contribute and what to avoid (especially: don't add new restart-capable watchdogs)..github/ISSUE_TEMPLATE/new-failure-pattern.md— structured way for users to report new failure modes worth detecting..github/ISSUE_TEMPLATE/bug-report.md— generic bug report template.scripts/watchdog.shcheck_agent_layer_health()now also detectscodex app-server client is closed— a common failure mode where the bundled codex subprocess drops its stdio connection mid-call. Gateway HTTP/healthreturns 200 but no agent calls succeed.docs/troubleshooting.md: new "Agent Silent But Gateway Healthy (Codex Backend Failure)" entry documenting symptoms, detection, recovery, and the fallback-chain trap.
scripts/watchdog.shcheck_agent_layer_health()now dedupes by timestamp before counting. A single real failure emits 4-5 log lines across different loggers (lane=main, lane=session:..., model-fallback/decision, agents/harness) — counting raw matches inflated the apparent failure rate by 4-5x and would have false-triggered the restart threshold.scripts/check-update.sh: the--fixmode now actually checks each command's exit code via a newtry_fix()helper. Previously the patterncmd 2>/dev/null && fixed || badfollowed by an unconditionalFIXES_APPLIED=$((FIXES_APPLIED + 1))claimed success even when the underlying command failed silently. Closes #3 (thanks @tyeth).scripts/check-update.sh: summary now distinguishes "X applied, Y failed" and exits non-zero if any fix failed, so callers (CI,post-update.sh) can tell.
.gitignorenow excludes*.bakand*.bak.*patterns so script-generated backup files don't get committed.
For history before this changelog was started, see git log.