loopd: heartbeat tick on the background slot

Co-Authored-By: ornith-1.5-35b-a3b <agent@wntrmute.dev>
This commit is contained in:
2026-10-03 16:48:23 -07:00
co-authored by ornith-1.5-35b-a3b
parent 4dd3b87db3
commit ea0708e305
7 changed files with 377 additions and 1 deletions
+26
View File
@@ -1217,3 +1217,29 @@ ls -l "$BOXMAKER_HOME/jobs/"
Then start `loopd` again.
**Check.** `loopd serve` prints `serving on` and `{home}/jobs/runs.jsonl` exists (empty is fine).
## heartbeat-prompt-unreadable
**What you see.** `loopd` is serving, but heartbeat turns do not run. It logs this line once,
until the file reads:
```text
loopd: heartbeat.md: Permission denied (os error 13); see docs/runbook.md#heartbeat-prompt-unreadable
```
**Why.** `[heartbeat] prompt` is next to the config file (default `heartbeat.md`). The scheduler
skips the tick rather than send an empty or guessed user message. A missing file is the same:
restore the starter from `config/heartbeat.md` in the repository.
**Confirm.**
```sh
ls -l "$(dirname "$LOOPD_CONFIG")/heartbeat.md"
```
**Fix.** Restore mode `0644` (or whatever the owner uses for the other prompts) and content.
The next tick after a successful read logs nothing extra and runs the standing `heartbeat`
session.
**Check.** `sessions/heartbeat/0.jsonl` gains a new `User` whose text starts with `It is ` and an
RFC 3339 timestamp.