What happened
The scheduled onboard timer (otter-docs-onboard.timer, daily 03:30) was disabled, so the fleet went un-regenerated. As of 2026-08-13 all three manifest repos were ~1880h (78 days) stale — last onboard 2026-05-27:
[BAD ] telekora: age=1880.7h STALE
[BAD ] icarus: age=1880.7h STALE
[BAD ] v3: age=1880.4h STALE
The tool whose job is keeping docs fresh had itself gone stale, silently — caught only by a manual audit.
Done
Re-enabled the timer (systemctl enable --now otter-docs-onboard.timer); catch-up run fired, LLM/embed endpoints (:11434/:11435) up.
Ask (prevent recurrence)
A disabled/failing freshness loop should be self-alerting, not something a human stumbles on months later:
- Have
status --manifest (already exits non-zero on STALE) run from the fleet health surface / sentinel, so 78-day staleness pages instead of hiding.
- Consider guarding:
install-hooks / onboard warns if the timer isn't enabled.
Acceptance
- Staleness beyond N days surfaces an alert automatically (sentinel or a cron that greps
status exit code).
What happened
The scheduled onboard timer (
otter-docs-onboard.timer, daily 03:30) was disabled, so the fleet went un-regenerated. As of 2026-08-13 all three manifest repos were ~1880h (78 days) stale — last onboard 2026-05-27:The tool whose job is keeping docs fresh had itself gone stale, silently — caught only by a manual audit.
Done
Re-enabled the timer (
systemctl enable --now otter-docs-onboard.timer); catch-up run fired, LLM/embed endpoints (:11434/:11435) up.Ask (prevent recurrence)
A disabled/failing freshness loop should be self-alerting, not something a human stumbles on months later:
status --manifest(already exits non-zero on STALE) run from the fleet health surface / sentinel, so 78-day staleness pages instead of hiding.install-hooks/onboardwarns if the timer isn't enabled.Acceptance
statusexit code).