Run 4: memory discipline verified (1833 KB flat, no OOM) but 0 hits with the small maps demonstrably retained — window-repetition theory refuted, sub-second bar failed (splice 2.83 s cold / ~2 s steady). Decision: wire the splice in anyway (~9-10 s cold real-repo :sync vs 611 s/OOM for every alternative). Run 5: cache removal confirmed free; the ~1.85 MB "resident" was mwindow's live window set, which makes the mwindow opts in shipping git_sync.rs load-bearing.
Notes
Longer-form essays on the thinking behind specific Typoena choices — the arguments too big for an ADR and too durable for a commit message.
Docs index:
../README.md. Project overview:../../README.md.
| Note | What it argues |
|---|---|
ctrl-g-perceived-latency.md |
Durability before delivery — surfacing "commit landed" at ~0.2 s makes the 5–10 s Ctrl-G push feel instant. |
git-sync-images-and-repo-size.md |
Why we don't shrink the notes repo — its 153 MB of media is remanso's image CDN, so rewriting history to slim the on-device clone breaks the web app. |
boot-time-budget.md |
Where the ~4.3 s to cursor goes — and why the ≤ 3 s v1.0 target is hard: one ~1.9 s full refresh is unavoidable at cold boot, so the splash is nearly free. |
sync-latency.md |
Where the ~16 s cold :sync goes — Wi-Fi + SNTP + one TLS push; why optimistic-retry cut a whole handshake, and why the rest is close to the protocol floor. |
sync-commit-handoff.md |
Handoff: the on-device commit must become an O(depth) TreeBuilder walk — add_all/index.write re-hash the whole 570 MB-pack tree (611 s / OOM) and the real repo has never synced. Design + firmware plumbing + bench steps for the next session. |