Value ledger
Evidence-first verdict on every Kelix module. The value sentence is: you write a well-specified goal, walk away, and come back to verified commits.
Decision rule (REQ-VL2):
| Verdict | Rule |
|---|---|
| SHARPEN | Receipt exists and module is on the critical path of the value sentence |
| KEEP | Receipt exists but module is off the critical path — freeze (no new code/docs unless a bug) |
| SCRAP | No receipt — delete in a named backlog task |
Critical path: init → plan (interview) → lint/spec-gate → run → verify → verified commits on run branch. Adapters and state/backlog selection are on-path; fleet, memory, skills, MCP, sync, PR automation, and Kiro-specific glue are off-path unless the receipt proves otherwise.
Line counts from wc -l on cited paths (2026-07-02 worktree).
| Module | Lines of code | Receipt | Verdict |
|---|---|---|---|
| loop | 686 (src/kelix/loop.py) |
tests/test_loop.py; dogfood 12/12 verified (final-report § D1); circuit-breaker no-diff burn (test_circuit_breaker_on_no_diff); worktree isolation after killed agent (DECISIONS.md D13) |
SHARPEN |
| verify | 82 (src/kelix/verify.py) |
tests/test_verify.py; dogfood 12/12 verified (final-report § D1) |
SHARPEN |
| plan+interview | 573 (src/kelix/plan.py) |
tests/test_plan.py; first real kelix plan interview for v0.4 (DECISIONS.md D19) |
SHARPEN |
| lint | 397 (src/kelix/lint.py) |
tests/test_lint.py slop rejection; run spec-gate for ready tasks (tests/test_loop.py test_run_spec_gate_*) |
SHARPEN |
| state/roadmap/backlog | 490 (src/kelix/state.py, roadmap.py, backlog.py) |
tests/test_state.py, tests/test_roadmap.py, tests/test_backlog.py; STATE.md-driven proof run (DECISIONS.md D21, run 20260702-104227) |
SHARPEN |
| adapters | 273 (src/kelix/adapters.py) |
tests/test_adapters.py; dogfood via cursor-agent headless (docs/proof/final-report.md, docs/agents/cursor.md) |
SHARPEN |
| fleet | 549 (src/kelix/fleet.py) |
Zero claim collisions (final-report § D2, fleet-session1-retrospective.md); tests/test_fleet.py |
SHARPEN |
| memory | 359 (src/kelix/memory.py) |
tests/test_memory.py; episodes persisted across dogfood run (dogfood-retrospective.md) |
KEEP |
| skills | 237 (src/kelix/distill.py) + skills slot in memory.py/prompt.py |
tests/test_loop.py distillation mock; tests/test_metrics.py efficacy rollup; no live learning receipt — every v0.1 prompt showed “(no skills yet)” (DECISIONS.md D17) |
KEEP |
| claims | 161 (src/kelix/claims.py) |
tests/test_claims.py; fleet wave/claim receipts (final-report § D2) |
KEEP |
| mcp_server | 182 (src/kelix/mcp_server.py) |
tests/test_mcp_server.py; no live MCP agent run in proof docs |
KEEP |
| kiro | 80 (src/kelix/kiro.py) |
tests/test_kiro.py with substituted binary; no live Kiro CLI run (final-report § Unverified) |
KEEP |
| security | 87 (src/kelix/security.py) |
tests/test_security.py, tests/test_injection_drill.py; injection drill backlog diff (proof/injection-drill-backlog.diff) |
KEEP |
| art | 133 (src/kelix/art.py) |
tests/test_ci_integration.py run-complete theming (KE25) |
KEEP |
| sync/ (removed KV2) | — | Mocked transport only — no live Linear API (final-report line 132) | SCRAP (done KV2) |
| pr (removed KV3) | — | Stubbed gh in tests only; value path is verified commits on run branch (final-report line 134, V-CUT CONTEXT) |
SCRAP (done KV3) |
Owner veto
Edits to this file before V-SHARPEN / V-SIMPLE execution phases run are
binding. Change any row’s verdict or receipt column, commit, and downstream
KV2–KV5 tasks read the updated ledger — they do not re-litigate. Predetermined
owner SCRAPs (sync/ removed KV2, pr.py removed KV3) are documented above.