44
55## AI Cost Tracking
66
7- ![ PyPI] ( https://img.shields.io/badge/pypi-costs-blue ) ![ Version] ( https://img.shields.io/badge/version-0.1.12 -blue ) ![ Python] ( https://img.shields.io/badge/python-3.9+-blue ) ![ License] ( https://img.shields.io/badge/license-Apache--2.0-green )
8- ![ AI Cost] ( https://img.shields.io/badge/AI%20Cost-$5.10 -orange ) ![ Human Time] ( https://img.shields.io/badge/Human%20Time-11.0h -blue ) ![ Model] ( https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey )
7+ ![ PyPI] ( https://img.shields.io/badge/pypi-costs-blue ) ![ Version] ( https://img.shields.io/badge/version-0.1.13 -blue ) ![ Python] ( https://img.shields.io/badge/python-3.9+-blue ) ![ License] ( https://img.shields.io/badge/license-Apache--2.0-green )
8+ ![ AI Cost] ( https://img.shields.io/badge/AI%20Cost-$5.25 -orange ) ![ Human Time] ( https://img.shields.io/badge/Human%20Time-11.2h -blue ) ![ Model] ( https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey )
99
10- - 🤖 ** LLM usage:** $5.1000 (34 commits)
11- - 👤 ** Human dev:** ~ $1101 (11.0h @ $100/h, 30min dedup)
10+ - 🤖 ** LLM usage:** $5.2500 (35 commits)
11+ - 👤 ** Human dev:** ~ $1122 (11.2h @ $100/h, 30min dedup)
1212
1313Generated on 2026-05-11 using [ openrouter/qwen/qwen3-coder-next] ( https://openrouter.ai/qwen/qwen3-coder-next )
1414
@@ -76,13 +76,18 @@ The doctor probes 8 things and never writes anything: `git_repo`,
7676` 1 ` if any check fails, ` 0 ` if only warnings (warnings are advisory).
7777Use it after ` koru --init ` and whenever a session starts mis-behaving.
7878
79- Natural-language intake is built in:
79+ Natural-language intake and housekeeping are built in:
8080
8181``` bash
8282koru task " Dodaj feature importu raportów"
8383koru agent --list # show Windsurf/Cursor/Claude Code/aider/OpenRouter lanes
8484koru agent # print and save the current LLM handoff prompt
8585koru agent --launch # launch the best available CLI agent when possible
86+ koru scan # auto-generate tickets from repo signals (TODOs, pytest errors)
87+ koru scan --apply # create the proposed tickets in planfile
88+ koru gc # preview stale tickets eligible for cleanup
89+ koru gc --apply # delete old done/failed/blocked tickets
90+ koru gate authorize PLF-070 --mode advisory --reason " ..." # record a gate waiver
8691```
8792
8893The no-args ` koru ` prompt includes detected project markers
@@ -231,6 +236,26 @@ change queue execution semantics.
231236pip install "koru[watch]"
232237` ` `
233238
239+ # # Queue garbage collection — `koru gc`
240+
241+ Over time, completed and failed tickets accumulate in the sprint YAML.
242+ `koru gc` cleans them up :
243+
244+ ` ` ` bash
245+ koru gc # dry-run: preview what would be removed
246+ koru gc --apply # actually delete stale tickets
247+ koru gc --max-age 7 # only keep tickets younger than 7 days
248+ koru gc --keep-last 5 # always keep the 5 newest done tickets
249+ koru gc --status done,failed # only clean these statuses (default: done,failed,blocked)
250+ koru gc --no-archive # skip JSONL archive before deletion
251+ koru gc --format json # machine-readable output
252+ ` ` `
253+
254+ Before deletion, tickets are archived to
255+ ` .planfile/.koru/gc/gc-YYYYMMDD-HHMMSS.jsonl` (disable with `--no-archive`).
256+ The `--keep-last N` flag protects the N most recently finished tickets per
257+ status even when they exceed `--max-age`.
258+
234259# # Filesystem contract
235260
236261**koru never writes outside `<project>/.planfile/`.** This is a hard
@@ -243,6 +268,7 @@ rule for the production code path; any deviation is a bug.
243268│ └── current.yaml # planfile-owned (source of truth)
244269└── .koru/ # koru-owned, opt-in, gitignore-friendly
245270 ├── runs/ # one log per ` koru --queue ` invocation
271+ ├── gc/ # JSONL archives from ` koru gc --apply `
246272 ├── prompts/ # captured ` --interactive ` answers
247273 ├── llm-cache/ # opt-in LlmExecutor response cache
248274 └── README.md # in-place explainer
0 commit comments