The real jcalixte/notes clone (570 MB pack, 1179 files) proved both index strategies are O(N_tree) and unshippable: index.write re-hashes the tree (611 s), and the index-free read_tree is 77 s cold and OOMs the mmap cache (zlib crash). Record the run in the tradeoff curve, revise the verdict to an O(depth) TreeBuilder walk, and add a handoff note with the design, firmware call sites, and bench steps for the next session.
1.4 KiB
1.4 KiB
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. |