Some checks failed
Architecture Lint / Linter Tests (pull_request) Successful in 28s
Smoke Test / smoke (pull_request) Failing after 23s
Validate Config / YAML Lint (pull_request) Failing after 19s
Validate Config / JSON Validate (pull_request) Successful in 21s
Validate Config / Python Syntax & Import Check (pull_request) Failing after 55s
Validate Config / Python Test Suite (pull_request) Has been skipped
Validate Config / Shell Script Lint (pull_request) Failing after 44s
Validate Config / Cron Syntax Check (pull_request) Successful in 10s
Validate Config / Deploy Script Dry Run (pull_request) Successful in 10s
Validate Config / Playbook Schema Validation (pull_request) Successful in 27s
PR Checklist / pr-checklist (pull_request) Failing after 4m19s
Architecture Lint / Lint Repository (pull_request) Failing after 29s
Implements jidoka (自働化) — the principle of automation with human dignity:
when a defect is detected, the machine stops itself and calls for human
intervention rather than silently degrading.
This changeset adds:
- **bin/jidoka-gate.sh** — standalone quality gate script. Samples the last
N successful completions from agent metrics JSONL, verifies PR quality
(exists, has file changes, mergeable), counts failures. If ≥ threshold,
creates a halt flag at ~/.hermes/logs/<agent>-jidoka-halt and sends a
Telegram alert. Exit code 1 signals failure; 0 signals pass.
- **agent-loop integration** (agent-loop.sh, claude-loop.sh, gemini-loop.sh):
* JIDOKA config vars (JIDOKA_CHECK_INTERVAL default 10, counter & flag paths)
* On every VERIFIED completion, atomically increment shared counter via
Python fcntl lock
* When counter ≥ JIDOKA_CHECK_INTERVAL: invoke jidoka-gate.sh
* On gate failure: create halt flag (if missing), exit worker immediately
* After all workers return, main loop exits with non-zero if halt flag present
- **watchdog respect** (claudemax-watchdog.sh):
* start_loop() now checks for <agent>-jidoka-halt flag before attempting
to restart an agent loop, preventing auto-resume after jidoka halt
Acceptance criteria:
✓ jidoka-gate.sh runs quality checks on last N completions
✓ Kills the loop process if quality drops below threshold
✓ Creates halt flag file that watchdog respects
✓ Telegram alert sent immediately on halt
Config via env:
- JIDOKA_CHECK_INTERVAL (default 10)
- JIDOKA_SAMPLE_SIZE (default 5)
- JIDOKA_FAIL_THRESHOLD (default 3)
- GITEA_TOKEN (read from ~/.hermes/gitea_token or ~/.config/gitea/token)
- TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID (read from env or files under ~/.hermes/)
Part of timmy-config #346
Closes #346