[claude] Build Timmy autonomous backlog triage loop (#1071) #1141

Merged
claude merged 1 commits from claude/issue-1071 into main 2026-03-23 18:32:28 +00:00

1 Commits

Author SHA1 Message Date
Alexander Whitestone
efc5335f4c feat: add autonomous backlog triage loop (Fixes #1071)
Some checks failed
Tests / lint (pull_request) Failing after 16s
Tests / test (pull_request) Has been skipped
Implements BacklogTriageLoop in src/timmy/backlog_triage.py — Timmy
continuously scans the Gitea backlog, scores/prioritizes issues, and
assigns work to agents without waiting to be asked.

Key capabilities:
- Fetch all open Gitea issues with pagination (async httpx)
- Score each issue on scope + acceptance + alignment (0-9 scale)
- Classify: bug / feature / refactor / research / philosophy / unknown
- Decide assignment: assign_claude | assign_kimi | flag_alex | skip
  - P0/bugs + ready unassigned → @claude immediately
  - Research/investigation scope → kimi-ready label for Kimi agent
  - Blocked issues → flag @rockachopa with reason
  - Philosophy/meta / already-assigned / low-score → skip
- Post audit trail comment on each actioned issue (Alex sees reasoning)
- Daily triage summary posted as a Gitea issue (once per UTC day)
- Configurable interval (default 15 min), dry_run mode, summary toggle
- BacklogTriageLoop.start() runs as async background daemon
- Fully graceful: Gitea downtime logs warning and returns empty result

Config additions (config.py):
- backlog_triage_enabled (bool, default False)
- backlog_triage_interval_seconds (int, default 900)
- backlog_triage_dry_run (bool, default False)
- backlog_triage_daily_summary (bool, default True)

Tests: 57 new unit tests covering scoring, decision logic, audit comments,
daily summary, loop lifecycle, and API integration (mocked).

Refs #1071

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