This window contains almost no code, and that is the point of it.
On 2026-03-10 two ADRs land in the same commit: ADR-001 picks the text-to-speech engine, ADR-002 fixes the core language as Kotlin. Those are the two decisions that are expensive to unwind later — everything downstream is shaped by them.
The same afternoon the foundation epic is scoped to story granularity. Twelve stories, named and bounded: KMP project scaffolding, shared module structure, core data models, SQLite integration, an Android SQLite DAO, a YAML config manager, a minimal Compose UI, the KMP ViewModel pattern, a JNI scaffold stub, a connectivity indicator, error-handling patterns, and an integration smoke test. A use case for mobile remote execution opens alongside them.
Nothing in that list is speculative. Each story is a thing you can finish and point at. The alternative — a big epic with “build the foundation” written on it — is how a project ends up three months in with nothing to show.
The only commit in the window is a submodule bump. So this entry deliberately has no delivered features: the record here is decisions and scope, and the evidence for it lives in the vault rather than in git. Saying so is more useful than dressing up a submodule bump as progress.
Lessons learned
- Scope to story granularity before writing code, not after. Twelve named stories on day one meant the work could be batched and reviewed as units. Scoping mid-flight is how an epic becomes a moving target.
- Language and engine are the decisions that cannot be unwound cheaply. Everything else in a stack can be swapped in a fortnight. Those two are load-bearing.
- A vault transition is evidence of a decision; it is not evidence of a feature. Keeping those two claims separate is what makes a devlog worth trusting.