Files
Timmy-time-dashboard/timmy_automations/config/automations.json
Claude (Opus 4.6) 1be1324a0d
Some checks failed
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
[claude] Implement AutoLoRA continuous improvement loop (#1105) (#1118)
2026-03-23 18:18:32 +00:00

304 lines
10 KiB
JSON

{
"version": "1.0.0",
"description": "Master manifest of all Timmy automations",
"_health_snapshot": {
"note": "Quick health check before coding — CI, P0/P1 issues, flakiness"
},
"last_updated": "2026-03-23",
"automations": [
{
"id": "cycle_retro",
"name": "Cycle Retrospective",
"description": "Logs structured retrospective data after each development cycle",
"script": "scripts/cycle_retro.py",
"category": "daily_run",
"enabled": true,
"trigger": "post_cycle",
"executable": "python3",
"config": {
"retro_file": ".loop/retro/cycles.jsonl",
"summary_file": ".loop/retro/summary.json",
"summary_window": 50,
"epoch_enabled": true
},
"outputs": [
".loop/retro/cycles.jsonl",
".loop/retro/summary.json"
]
},
{
"id": "loop_guard",
"name": "Loop Guard",
"description": "Idle detection with exponential backoff to prevent burning cycles on empty queues",
"script": "scripts/loop_guard.py",
"category": "daily_run",
"enabled": true,
"trigger": "pre_cycle",
"executable": "python3",
"config": {
"queue_file": ".loop/queue.json",
"idle_state_file": ".loop/idle_state.json",
"backoff_base_seconds": 60,
"backoff_max_seconds": 600,
"backoff_multiplier": 2,
"cycle_duration_seconds": 300
},
"outputs": [
".loop/idle_state.json"
]
},
{
"id": "triage_score",
"name": "Mechanical Triage Scoring",
"description": "Pure heuristic scoring of open issues based on scope, acceptance criteria, and alignment",
"script": "scripts/triage_score.py",
"category": "daily_run",
"enabled": true,
"trigger": "scheduled",
"schedule": "every_10_cycles",
"executable": "python3",
"config": {
"ready_threshold": 5,
"quarantine_lookback": 20,
"queue_file": ".loop/queue.json",
"retro_file": ".loop/retro/triage.jsonl",
"quarantine_file": ".loop/quarantine.json"
},
"outputs": [
".loop/queue.json",
".loop/retro/triage.jsonl",
".loop/quarantine.json"
]
},
{
"id": "deep_triage",
"name": "Deep Triage",
"description": "LLM-driven intelligent issue refinement, breaking down large issues, adding acceptance criteria",
"script": "scripts/deep_triage.sh",
"category": "triage",
"enabled": true,
"trigger": "scheduled",
"schedule": "every_20_cycles",
"executable": "bash",
"depends_on": ["loop_introspect"],
"config": {
"queue_file": ".loop/queue.json",
"retro_file": ".loop/retro/deep-triage.jsonl",
"prompt_file": "scripts/deep_triage_prompt.md",
"timmy_consultation": true,
"timmy_timeout_seconds": 60
},
"outputs": [
".loop/queue.json",
".loop/retro/deep-triage.jsonl"
]
},
{
"id": "loop_introspect",
"name": "Loop Introspection",
"description": "Self-improvement engine that analyzes retro data and produces structured recommendations",
"script": "scripts/loop_introspect.py",
"category": "triage",
"enabled": true,
"trigger": "scheduled",
"schedule": "every_20_cycles",
"executable": "python3",
"config": {
"cycles_file": ".loop/retro/cycles.jsonl",
"deep_triage_file": ".loop/retro/deep-triage.jsonl",
"triage_file": ".loop/retro/triage.jsonl",
"quarantine_file": ".loop/quarantine.json",
"insights_file": ".loop/retro/insights.json",
"trend_window_days": 7
},
"outputs": [
".loop/retro/insights.json"
]
},
{
"id": "agent_workspace",
"name": "Agent Workspace Manager",
"description": "Creates and maintains isolated git clones, port ranges, and data directories per agent",
"script": "scripts/agent_workspace.sh",
"category": "workspace",
"enabled": true,
"trigger": "manual",
"executable": "bash",
"config": {
"agents_dir": "/tmp/timmy-agents",
"canonical_repo": "~/Timmy-Time-dashboard",
"gitea_remote": "http://localhost:3000/rockachopa/Timmy-time-dashboard.git",
"agents": ["hermes", "kimi-0", "kimi-1", "kimi-2", "kimi-3", "smoke"],
"port_base_dashboard": 8100,
"port_base_serve": 8200
},
"outputs": []
},
{
"id": "kimi_bootstrap",
"name": "Kimi Workspace Bootstrap",
"description": "One-time setup script for new Kimi agent workspaces",
"script": ".kimi/scripts/bootstrap.sh",
"category": "workspace",
"enabled": true,
"trigger": "manual",
"executable": "bash",
"config": {},
"outputs": []
},
{
"id": "kimi_resume",
"name": "Kimi Resume",
"description": "Quick status check and resume prompt for Kimi workspaces",
"script": ".kimi/scripts/resume.sh",
"category": "workspace",
"enabled": true,
"trigger": "manual",
"executable": "bash",
"config": {},
"outputs": []
},
{
"id": "backfill_retro",
"name": "Backfill Retrospective",
"description": "One-time script to seed retrospective data from Gitea PR history",
"script": "scripts/backfill_retro.py",
"category": "metrics",
"enabled": true,
"trigger": "manual",
"executable": "python3",
"config": {
"retro_file": ".loop/retro/cycles.jsonl",
"summary_file": ".loop/retro/summary.json",
"gitea_api": "http://localhost:3000/api/v1"
},
"outputs": [
".loop/retro/cycles.jsonl",
".loop/retro/summary.json"
]
},
{
"id": "pre_commit_checks",
"name": "Pre-commit Checks",
"description": "CI hygiene validation before commits — import checks, model config, syntax, formatting",
"script": "scripts/pre_commit_checks.py",
"category": "metrics",
"enabled": true,
"trigger": "pre_commit",
"executable": "python3",
"config": {
"check_imports": true,
"check_model_config": true,
"check_test_syntax": true,
"check_platform_paths": true,
"check_docker_tests": true,
"check_black_formatting": true
},
"outputs": []
},
{
"id": "daily_run_orchestrator",
"name": "Daily Run Orchestrator",
"description": "The 10-minute ritual — fetches candidate issues and produces a concise Daily Run agenda plus day summary",
"script": "timmy_automations/daily_run/orchestrator.py",
"category": "daily_run",
"enabled": true,
"trigger": "manual",
"executable": "python3",
"config": {
"config_file": "timmy_automations/config/daily_run.json",
"candidate_labels": ["daily-run"],
"size_labels": ["size:XS", "size:S"],
"max_agenda_items": 3,
"lookback_hours": 24,
"agenda_time_minutes": 10
},
"outputs": []
},
{
"id": "golden_path",
"name": "Golden Path Generator",
"description": "Generates coherent 30-60 minute mini-sessions from real Gitea issues — triage, fixes, and tests",
"script": "timmy_automations/daily_run/golden_path.py",
"category": "daily_run",
"enabled": true,
"trigger": "manual",
"executable": "python3",
"config": {
"target_minutes": 45,
"size_labels": ["size:XS", "size:S", "size:M"],
"min_items": 3,
"max_items": 5
},
"outputs": []
},
{
"id": "weekly_narrative",
"name": "Weekly Narrative Summary",
"description": "Generates a human-readable weekly summary of work themes, agent contributions, and token economy shifts",
"script": "timmy_automations/daily_run/weekly_narrative.py",
"category": "daily_run",
"enabled": true,
"trigger": "scheduled",
"schedule": "weekly",
"executable": "python3",
"config": {
"lookback_days": 7,
"output_file": ".loop/weekly_narrative.json",
"gitea_api": "http://localhost:3000/api/v1",
"repo_slug": "rockachopa/Timmy-time-dashboard"
},
"outputs": [
".loop/weekly_narrative.json",
".loop/weekly_narrative.md"
]
},
{
"id": "health_snapshot",
"name": "Health Snapshot",
"description": "Quick health check before coding — CI status, P0/P1 issues, test flakiness, token economy",
"script": "timmy_automations/daily_run/health_snapshot.py",
"category": "daily_run",
"enabled": true,
"trigger": "pre_cycle",
"executable": "python3",
"config": {
"critical_labels": ["P0", "P1", "priority/critical", "priority/high"],
"flakiness_lookback_cycles": 20,
"ci_timeout_seconds": 5
},
"outputs": []
},
{
"id": "retrain",
"name": "AutoLoRA Continuous Improvement Loop",
"description": "Weekly sovereignty loop — exports trajectories, filters quality, appends to training dataset, triggers LoRA fine-tune, loads new adapter, and logs iteration metrics",
"script": "timmy_automations/retrain/retrain.py",
"category": "autolora",
"enabled": true,
"trigger": "scheduled",
"schedule": "weekly_sunday",
"executable": "python3",
"epic": "#1091",
"pipeline": "AutoLoRA Sovereignty Loop (Step 6 of 7)",
"config": {
"weeks_ago": 1,
"base_model": "hermes4-14b",
"dry_run": false,
"logs_dir": "logs",
"dataset_path": ".loop/retrain/training_data.jsonl",
"adapter_dir": ".loop/retrain/adapters",
"training_log_path": ".loop/retrain/training_log.jsonl",
"training_summary_path": ".loop/retrain/training_log.md"
},
"outputs": [
".loop/retrain/training_data.jsonl",
".loop/retrain/dataset_index.json",
".loop/retrain/training_log.jsonl",
".loop/retrain/training_log.md",
".loop/retrain/adapters/"
]
}
]
}