Skip to content

feat(host): host probe family, propose-tier maintenance, weekly digest, startup greeting - #608

Merged
alari76 merged 1 commit into
mainfrom
feat/host-monitoring
Aug 30, 2026
Merged

feat(host): host probe family, propose-tier maintenance, weekly digest, startup greeting#608
alari76 merged 1 commit into
mainfrom
feat/host-monitoring

Conversation

@alari76

@alari76 alari76 commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Phase E of the Joe value-expansion plan (§5): the host as a monitored asset, with maintenance autonomy stopping exactly where the plan says it should. Also implements the requested startup welcome message.

Design

  • host probe in the existing deployment framework (one more probe type, not a fourth stack): memory available % from /proc/meminfo, 1-min load per core, apt upgradable + security-update counts (cached 6 h — enumeration is slow), and /var/run/reboot-required. All sudo-free; a source that can't be read reports null (unknown), never a false breach. Pure evaluateHostProbe(config, raw) for testability.
  • Observe → propose, and no further: breaches that need privileges to fix carry the exact operator-run command in the breach text (sudo apt-get update && sudo apt-get upgrade, reboot window). Routine-execute is deliberately not implemented — the action-class list starts empty per the plan, and the hard floor is untouched.
  • Weekly host digest — memory, load, updates, reboot state, plus deployment-probe health — delivered to Joe as a notification. Runs as an hourly tick task with the last-sent timestamp persisted in archive settings (tick-task state is in-memory; without persistence every restart would re-send).
  • Startup greeting (user request): ensureOrchestratorRunning queues a [STARTUP] notification through the durable outbox whenever it actually (re)starts the agent process — delivered once the process is alive and idle, so no readiness races, and no greeting when the session was already running. Template v8 rewrites the greeting guidelines: respond to the notification with a brief welcome enumerating capabilities (workflows on active repos, deployment + host monitoring, incident response, spawning sessions, trust learning), skipping what isn't configured, ending with one specific next step.

Testing

  • host-probe.test.ts (6 tests): healthy metrics, memory/load breaches, operator-run proposals, opt-outs + custom thresholds, unknown-not-breached, digest content.
  • orchestrator-manager.test.ts +1: greeting queued on create and dead-restart, not when alive.
  • Full suite: 3057 tests pass; build + lint clean.

🤖 Generated with Claude Code

…t, startup greeting

Phase E of the Joe value-expansion plan: the machine itself is under care.

- New 'host' probe type in the deployment framework: memory available %
  (/proc/meminfo), 1-min load per core, apt upgradable/security counts
  (enumeration cached 6h — apt is slow), /var/run/reboot-required. All
  sudo-free; unreadable sources report as unknown, never breached
- Maintenance ladder rungs 1-2 implemented: observe (probe flow) and
  propose (privileged remediations carry the exact operator-run command
  in the breach text). Routine-execute deliberately unimplemented — the
  approved action-class list starts empty; hard floor stands
- Weekly host digest (memory/load/updates/reboot + deployment-probe
  health) via an hourly tick task with the last-sent timestamp persisted
  in archive settings, so restarts don't re-send
- Joe startup greeting: ensureOrchestratorRunning queues a durable
  [STARTUP] outbox notification whenever it (re)starts the process;
  Joe responds with a brief welcome outlining capabilities (template v8
  greeting guidelines rewritten to enumerate them)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@alari76
alari76 merged commit 67bdf39 into main Aug 30, 2026
2 checks passed
@alari76
alari76 deleted the feat/host-monitoring branch August 30, 2026 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant