[claude] Vassal Protocol — Timmy as autonomous orchestrator (#1070) #1142

Merged
claude merged 1 commits from claude/issue-1070 into main 2026-03-23 18:33:16 +00:00

1 Commits

Author SHA1 Message Date
Alexander Whitestone
2618694b22 feat: Vassal Protocol — Timmy as autonomous orchestrator (#1070)
Some checks failed
Tests / lint (pull_request) Failing after 16s
Tests / test (pull_request) Has been skipped
Implements the core Vassal Protocol infrastructure: Timmy as the
lead decision-maker for development direction, agent management,
and house health on Hermes (M3 Max).

New module: src/timmy/vassal/
  - backlog.py     — Gitea backlog fetch, triage (priority scoring +
                     agent routing: Claude / Kimi / Timmy-self)
  - dispatch.py    — Apply claude-ready / kimi-ready labels and post
                     routing comments; in-memory dispatch registry
  - agent_health.py — Detect idle/stuck agents (last-comment heuristic),
                      nudge stuck issues via Gitea comment
  - house_health.py — System resource snapshot (disk, memory via psutil,
                      Ollama reachability), stale-file cleanup
  - orchestration_loop.py — VassalOrchestrator: ties all four into a
                     single observe→triage→dispatch→monitor→house-check
                     cycle; runs as background asyncio task; broadcasts
                     via WebSocket

Config: five new vassal_* settings in Settings (all off by default:
  vassal_enabled, vassal_cycle_interval, vassal_max_dispatch_per_cycle,
  vassal_stuck_threshold_minutes, vassal_idle_threshold_minutes)

Tests: 40 new unit tests across five test files — all pass.
All gracefully degrade when Gitea / Ollama are unavailable.

Refs #1070

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 14:31:57 -04:00