Add backlog audit and task update command
- agents/prompts/backlog_audit.md: QA analyst prompt for checking
which pending tasks are already implemented in the codebase
- agents/runner.py: run_audit() — project-level agent that reads
all pending tasks, inspects code, returns classification
- cli/main.py: kin audit <project_id> — runs audit, offers to mark
done tasks; kin task update <id> --status --priority
- web/api.py: POST /api/projects/{id}/audit (runs audit inline),
POST /api/projects/{id}/audit/apply (batch mark as done)
- Frontend: "Audit backlog" button on ProjectView with results
modal showing already_done/still_pending/unclear categories
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
e755a19633
commit
96509dcafc
9 changed files with 548 additions and 2 deletions
|
|
@ -205,3 +205,38 @@ def test_cost_with_data(runner):
|
|||
assert r.exit_code == 0
|
||||
assert "p1" in r.output
|
||||
assert "$0.1000" in r.output
|
||||
|
||||
|
||||
# ===========================================================================
|
||||
# task update
|
||||
# ===========================================================================
|
||||
|
||||
def test_task_update_status(runner):
|
||||
invoke(runner, ["project", "add", "p1", "P1", "/p1"])
|
||||
invoke(runner, ["task", "add", "p1", "Fix bug"])
|
||||
r = invoke(runner, ["task", "update", "P1-001", "--status", "done"])
|
||||
assert r.exit_code == 0
|
||||
assert "done" in r.output
|
||||
|
||||
r = invoke(runner, ["task", "show", "P1-001"])
|
||||
assert "done" in r.output
|
||||
|
||||
|
||||
def test_task_update_priority(runner):
|
||||
invoke(runner, ["project", "add", "p1", "P1", "/p1"])
|
||||
invoke(runner, ["task", "add", "p1", "Fix bug"])
|
||||
r = invoke(runner, ["task", "update", "P1-001", "--priority", "1"])
|
||||
assert r.exit_code == 0
|
||||
assert "priority=1" in r.output
|
||||
|
||||
|
||||
def test_task_update_not_found(runner):
|
||||
r = invoke(runner, ["task", "update", "NOPE", "--status", "done"])
|
||||
assert r.exit_code != 0
|
||||
|
||||
|
||||
def test_task_update_no_fields(runner):
|
||||
invoke(runner, ["project", "add", "p1", "P1", "/p1"])
|
||||
invoke(runner, ["task", "add", "p1", "Fix bug"])
|
||||
r = invoke(runner, ["task", "update", "P1-001"])
|
||||
assert r.exit_code != 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue