From 8e390a1dc50a39ea757677f74280ec3e0bdeeee9 Mon Sep 17 00:00:00 2001 From: Google AI Agent Date: Mon, 6 Apr 2026 18:12:53 +0000 Subject: [PATCH] Implement Force Multiplier 12: Automated Issue Decomposition --- tasks.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tasks.py b/tasks.py index afc5f228..59fa3092 100644 --- a/tasks.py +++ b/tasks.py @@ -2126,3 +2126,33 @@ def cross_review_prs(): continue return {"reviews": len(results), "details": results} + +@huey.periodic_task(crontab(hour="*/12")) +def decomposition_tick(): + """Force Multiplier 12: Automated Issue Decomposition (Epic Splitting). + + Identifies large issues (EPICs) and flags them for decomposition into sub-tasks. + """ + gitea = get_gitea_client() + repos = ["Timmy_Foundation/timmy-config", "Timmy_Foundation/timmy-home", "Timmy_Foundation/the-nexus"] + + for repo in repos: + issues = gitea.get_open_issues(repo) + for issue in issues: + labels = [l['name'] for l in issue.get('labels', [])] + body = issue.get('body', '') + + # Identify EPICs or large task lists + is_epic = "EPIC" in labels or "EPIC" in issue['title'] + has_large_tasklist = body.count("- [ ]") > 5 + + if (is_epic or has_large_tasklist) and "needs-decomposition" not in labels: + audit_log("decomposition_flagged", "system", {"repo": repo, "issue": issue['number']}, confidence="High") + gitea.add_label(repo, issue['number'], "needs-decomposition") + + # Add comment suggesting decomposition + msg = "### Automated Decomposition Suggestion\n" + msg += "This issue has been flagged as an **EPIC** or contains a large task list. " + msg += "To improve velocity and reduce cycle time, I recommend splitting this into smaller, atomic issues.\n\n" + msg += "I will attempt to generate a decomposition plan in the next cycle." + gitea.create_issue_comment(repo, issue['number'], msg) -- 2.43.0