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.
Tradeoff curves
Where a design knob has a cost that bends — energy, latency, memory — against an interval or size, the curve and its knee live here, so the chosen default is traceable to a shape rather than a guess.
Docs index:
../README.md. Project overview:../../README.md.
| Curve | What it decides |
|---|---|
wifi-auto-sync.md |
auto_sync interval vs Wi-Fi energy (a 1/T hyperbola) — why the default is 10 min and opportunistic, not a wall-clock timer. |
epd-refresh-latency.md |
E-ink refresh latency vs rows driven — the full / full-area-partial / windowed-Y cost model behind typing responsiveness and the boot splash→editor swap. |
sync-commit-staging.md |
Commit-staging strategy vs working-tree size — add_all(["*"]) (O(tree) FAT walk) vs explicit-path (O(churn)); the walk-vs-writes split that decides whether explicit staging is worth it. |