Alexander Whitestone
|
efc5335f4c
|
feat: add autonomous backlog triage loop (Fixes #1071)
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 |
|