← Back to PRs

#19969: feat: add per-release dual-lane release gate hunt toolkit

by vibecodooor open 2026-02-18 10:48 View on GitHub →
docs scripts size: XL
## Summary - add a per-release hunt toolkit with dual lanes (`prod-observe` + `staging-chaos`) - add release-gate orchestration script with T0-T4 phases and explicit gate status (`pass|warn|fail`) - add deterministic runtime collector + schema-validated JSON/Markdown report renderer - add hunt report types/schema and ops runbook docs - add `pnpm` scripts: `hunt:collect`, `hunt:release-gate`, `hunt:staging-chaos`, `hunt:render-report` ## Why OpenClaw updates are frequent; this introduces a repeatable release gate that can quickly detect regressions, classify findings, and produce reproducible evidence for issue/PR follow-up. ## Included behavior - deterministic snapshot collection: version, status, listener probes, and signature counts - staging chaos matrix: port collision, already-running guard, SIGUSR1 behavior, missing binary/env, transient network failure - report schema (`HuntReportV1`) + markdown rendering - baseline metadata support and known-issue allowlisting hooks ## Validation Executed locally: - `pnpm hunt:collect -- --label smoke --window-minutes 5 --output /tmp/openclaw-hunt-collect-smoke3.json` - `pnpm hunt:staging-chaos -- --release 2026.2.17 --out-dir /tmp/openclaw-hunt-chaos-regression-20260218T103959Z --port 19807` - `pnpm hunt:release-gate -- --release 2026.2.17 --skip-update --out-dir /tmp/openclaw-hunt-gate-full-20260218T104028Z` - `pnpm hunt:render-report -- --input /tmp/openclaw-hunt-gate-smoke4/report-input.json --json-out /tmp/openclaw-hunt-gate-smoke4/re-render2.json --md-out /tmp/openclaw-hunt-gate-smoke4/re-render2.md` Also validated shell syntax and formatting for added files. ## Notes - release-gate defaults to launchagent-safe restart behavior (`launchctl bootout ... || openclaw gateway restart`), with command override support. - staging chaos uses `gateway.mode=local` and isolated config/home to avoid cross-lane interference. <!-- greptile_comment --> <h3>Greptile Summary</h3> Adds a per-release dual-lane hunt toolkit with `prod-observe` and `staging-chaos` lanes, including a release-gate orchestration script (T0-T4 phases), a deterministic runtime snapshot collector, chaos fault injection scenarios, schema-validated JSON/Markdown report rendering, and supporting types and documentation. - The toolkit structure is well-organized with clear separation between collection, orchestration, chaos testing, and rendering - Shell scripts follow existing repo conventions (bash with `set -euo pipefail`, Node heredocs for complex logic) - TypeScript types and JSON schema are consistent and properly strict (`additionalProperties: false`) - `artifacts/hunt/` output directory is **not in `.gitignore`**, risking accidental commits of local gate artifacts - Staging chaos `stopChild` sends signals to the bash wrapper PID rather than the actual gateway process, which could leave orphaned processes on the staging port - Gate status logic treats all classifications (including `resolved`) as warnings, which could prevent the gate from ever returning `pass` once classifications exist <h3>Confidence Score: 3/5</h3> - Mostly safe to merge for its intended use as a local ops tool, but has process cleanup and gitignore gaps that should be addressed - The toolkit adds new operational scripts that don't affect the core application runtime. However, the orphaned process risk in staging-chaos and the missing .gitignore entry are concrete issues. The gate status logic has a correctness concern with resolved classifications. The code is otherwise well-structured and follows repo conventions. - Pay close attention to `scripts/hunt/staging-chaos.sh` (process cleanup) and `scripts/hunt/run-release-gate.sh` (gate status logic). Also `.gitignore` should be updated. <sub>Last reviewed commit: e8673e9</sub> <!-- greptile_other_comments_section --> <sub>(5/5) You can turn off certain types of comments like style [here](https://app.greptile.com/review/github)!</sub> **Context used:** - Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=fd949e91-5c3a-4ab5-90a1-cbe184fd6ce8)) - Context from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=0d0c8278-ef8e-4d6c-ab21-f5527e322f13)) <!-- /greptile_comment -->

Most Similar PRs