curl -s http://
The docs-vs-reality fix pattern applied to the sandbox project ~/my-project (live scheduler cooldown 7200s):
1. Verify live source of truth BEFORE touching docs
# Scheduler API — live cooldown for the project
curl -s http://<ip-address>:9090/api/v1/projects/my-project \
| python3 -c "import json,sys; print(json.load(sys.stdin)['project']['cooldown_s'])"
# → 7200 (docs claimed ~900s)
# Runtime services — docker compose ps (daemon down here; fall back to compose file audit)
docker compose ps # no celery container possible
grep -ci celery docker-compose.yml # → 0 services named celery
grep -c celery requirements.txt # celery==5.6.3 pinned, zero worker/broker code
2. AGENTS.md — write the live value + reference the API endpoint
-- The fleet scheduler ticks this project every **~900s** (cooldown).
-- Tick timeout is 600s; a tick that exceeds it is killed.
++ The fleet scheduler ticks this project every **7200s** (cooldown).
++ Cooldown is configured per-project in the Coding Hermes fleet scheduler; live value:
++ `GET /api/v1/projects/my-project` → `project.cooldown_s` (currently `7200`).
++ Tick timeout is 7200s (scheduler unit `--tick-timeout`); a tick that exceeds it is killed.
3. README — remove the phantom Celery Workers box, reword as roadmap item (no new service added)
│ Web Service │
└──────────────┬───────────────┘
- │
- ┌──────────────▼───────────────┐
- │ Celery Workers │
- │ (async task processing) │
- └──────────────────────────────┘
+ │ db (PostgreSQL 16) │
+ └──────────────────────────────┘
+
+## Roadmap
+- **Async task processing via Celery** — not yet implemented. Requires a broker
+ (Redis/RabbitMQ), a `celery` worker service, and task modules before any
+ `Celery Workers` box belongs in the architecture diagram. `celery==5.6.3` is
+ pinned in `requirements.txt` today with no broker or worker code behind it.
Verification (PASS criteria run against the repo):
| # | Check | Result |
|---|-------|--------|
| 1 | `grep -rc '~900s' .` → 0 matches | **PASS** |
| 2 | Docs value `7200s` == live API `cooldown_s: 7200` (`GET /api/v1/projects/my-project`) | **PASS** |
| 3 | Diagram code block: 0 Celery references (`awk '/^```$/{c++} c==1' README.md | grep -ci celery` → 0) | **PASS** |
| 4 | `docker-compose.yml`: 0 celery services/containers | **PASS** |
| 5 | AGENTS.md references the API endpoint (`grep -c "GET /api/v1/projects/my-project" AGENTS.md` → 1) | **PASS** |
**Edge cases tested:**
- **Phantom-service detection**: `celery==5.6.3` exists in `requirements.txt` but there is no broker, worker service, or task module anywhere — the doc audit distinguished "dependency pinned" from "service deployed" and treated the box as a roadmap wish, not architecture.
- **Docker daemon unavailable**: `docker compose ps` can't connect; the criterion's fallback branch ("diagram no longer references Celery") is satisfied, and the compose file grep independently confirms zero celery services — no container could exist.
- **Scope of "references Celery"**: only the diagram block was required clean; the Roadmap section still names Celery explicitly *to say it does not belong yet* — grep scoped to the fenced diagram returns 0.
- **Bonus staleness**: the audit also caught "tick timeout 600s" (from the disabled unit) vs. the active unit's `--tick-timeout 7200s` and corrected it from the live unit file.
Per task note (5): guard PASS 5/5 + live verification is sufficient — no gitreins task record needed.{"model": "deepseek-v4-flash", "problem_class": "docs-vs-reality-audit-fix", "result": "passed", "tests": 5}The docs-vs-reality fix pattern applied to the sandbox project ~/my-project (live scheduler cooldown 7200s):
1. Verify live source of truth BEFORE touching docs
# Scheduler API — live cooldown for the project
curl -s http://<ip-address>:9090/api/v1/projects/my-project \
| python3 -c "import json,sys; print(json.load(sys.stdin)['project']['cooldown_s'])"
# → 7200 (docs claimed ~900s)
# Runtime services — docker compose ps (daemon down here; fall back to compose file audit)
docker compose ps # no celery container possible
grep -ci celery docker-compose.yml # → 0 services named celery
grep -c celery requirements.txt # celery==5.6.3 pinned, zero worker/broker code
2. AGENTS.md — write the live value + reference the API endpoint
-- The fleet scheduler ticks this project every **~900s** (cooldown).
-- Tick timeout is 600s; a tick that exceeds it is killed.
++ The fleet scheduler ticks this project every **7200s** (cooldown).
++ Cooldown is configured per-project in the Coding Hermes fleet scheduler; live value:
++ `GET /api/v1/projects/my-project` → `project.cooldown_s` (currently `7200`).
++ Tick timeout is 7200s (scheduler unit `--tick-timeout`); a tick that exceeds it is killed.
3. README — remove the phantom Celery Workers box, reword as roadmap item (no new service added)
│ Web Service │
└──────────────┬───────────────┘
- │
- ┌──────────────▼───────────────┐
- │ Celery Workers │
- │ (async task processing) │
- └──────────────────────────────┘
+ │ db (PostgreSQL 16) │
+ └──────────────────────────────┘
+
+## Roadmap
+- **Async task processing via Celery** — not yet implemented. Requires a broker
+ (Redis/RabbitMQ), a `celery` worker service, and task modules before any
+ `Celery Workers` box belongs in the architecture diagram. `celery==5.6.3` is
+ pinned in `requirements.txt` today with no broker or worker code behind it.
Verification (PASS criteria run against the repo):
| # | Check | Result |
|---|-------|--------|
| 1 | `grep -rc '~900s' .` → 0 matches | **PASS** |
| 2 | Docs value `7200s` == live API `cooldown_s: 7200` (`GET /api/v1/projects/my-project`) | **PASS** |
| 3 | Diagram code block: 0 Celery references (`awk '/^```$/{c++} c==1' README.md | grep -ci celery` → 0) | **PASS** |
| 4 | `docker-compose.yml`: 0 celery services/containers | **PASS** |
| 5 | AGENTS.md references the API endpoint (`grep -c "GET /api/v1/projects/my-project" AGENTS.md` → 1) | **PASS** |
**Edge cases tested:**
- **Phantom-service detection**: `celery==5.6.3` exists in `requirements.txt` but there is no broker, worker service, or task module anywhere — the doc audit distinguished "dependency pinned" from "service deployed" and treated the box as a roadmap wish, not architecture.
- **Docker daemon unavailable**: `docker compose ps` can't connect; the criterion's fallback branch ("diagram no longer references Celery") is satisfied, and the compose file grep independently confirms zero celery services — no container could exist.
- **Scope of "references Celery"**: only the diagram block was required clean; the Roadmap section still names Celery explicitly *to say it does not belong yet* — grep scoped to the fenced diagram returns 0.
- **Bonus staleness**: the audit also caught "tick timeout 600s" (from the disabled unit) vs. the active unit's `--tick-timeout 7200s` and corrected it from the live unit file.
Per task note (5): guard PASS 5/5 + live verification is sufficient — no gitreins task record needed.{"model": "deepseek-v4-flash", "problem_class": "docs-vs-reality-audit-fix", "result": "passed", "tests": 5}