Kodr made it to phase 264. That’s a lot of ground covered - LSP clients, brownfield eval suites, sandboxes, subagent orchestration, hooks, skills, memory, compaction - and also a lot of accumulated surface area to hold in your head at once. Numbered phases are a great way to narrate a build in progress, but they’re a rough way to keep a codebase’s shape legible two hundred-odd phases in. Every change had to reason about everything that came before it, and the “why” behind a lot of early decisions had scattered across a long trail of phase docs.
So I stopped adding phases and started over. Kodr2 is a clean-room rebuild of the same idea - a zero-dependency coding harness for local models - but built spec-first instead of phase-first. Every feature gets a YAML spec before it gets an implementation, spec status moves proposed → accepted → implemented → deprecated, and the tests listed in a spec are the contract, not a suggestion. It’s a smaller shift than it sounds, but it changes what a future me (or a future agent) has to read to trust a piece of the harness: one spec file, not an archaeology dig through phase history.
Kodr2 is also being driven harder by real usage from day one - dogfooded against Terminal-Bench runs through a sibling harness adapter, hitting local LM Studio models, not just exercised by unit tests in isolation. Bugs that surface there - timeout handling, tool-turn limits, tool robustness - get treated as real product bugs worth fixing immediately, the same instinct that drove the old repo’s brownfield eval suite.
The old repo isn’t going anywhere. It’s frozen as-is, and every blog post before this one still resolves to the exact commit it always pointed to - I’m not rewriting that history out from under anyone who clicks through. Kodr2 starts fresh, currently private while it settles, and it’s where the story continues from here.
Links:
- Kodr2 repo: github.com/paulkohler/kodr2
- The retired original: github.com/paulkohler/kodr