From 3468000025d41de84271d86f579a93cb93a6ac1a Mon Sep 17 00:00:00 2001 From: Google AI Agent Date: Mon, 6 Apr 2026 18:13:34 +0000 Subject: [PATCH] Implement Force Multiplier 13: Fleet Cost & Velocity Tracker --- tasks.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tasks.py b/tasks.py index afc5f228..e88bd91c 100644 --- a/tasks.py +++ b/tasks.py @@ -2126,3 +2126,39 @@ def cross_review_prs(): continue return {"reviews": len(results), "details": results} + +@huey.periodic_task(crontab(hour="0", minute="0")) +def metrics_tick(): + """Force Multiplier 13: Fleet Cost & Velocity Tracker. + + Calculates daily velocity (issues closed, PRs merged) and logs it to a metrics file. + """ + gitea = get_gitea_client() + repos = ["Timmy_Foundation/timmy-config", "Timmy_Foundation/timmy-home", "Timmy_Foundation/the-nexus"] + + daily_stats = { + "timestamp": datetime.now(timezone.utc).isoformat(), + "issues_closed": 0, + "prs_merged": 0, + "repo_stats": {} + } + + for repo in repos: + # Get issues closed in last 24h + closed_issues = gitea.get_closed_issues(repo, since="24h") + merged_prs = gitea.get_merged_prs(repo, since="24h") + + daily_stats["issues_closed"] += len(closed_issues) + daily_stats["prs_merged"] += len(merged_prs) + daily_stats["repo_stats"][repo] = { + "issues": len(closed_issues), + "prs": len(merged_prs) + } + + metrics_file = TIMMY_HOME / "logs" / "metrics.jsonl" + metrics_file.parent.mkdir(parents=True, exist_ok=True) + + with open(metrics_file, "a") as f: + f.write(json.dumps(daily_stats) + "\n") + + audit_log("metrics_logged", "system", daily_stats, confidence="High") -- 2.43.0