Testing
Test-first command structure: runF injection, in-memory IO, test doubles.
Decisions
byob-testing.1— Inject test doubles through the Factory; never monkey-patch globalsbyob-testing.2— `go-cmp` for non-trivial test comparisonsbyob-testing.3— Assert on behavior, not implementationbyob-testing.4— Tests land with the code, not afterbyob-testing.5— One shared func-field fake for a wide interfacebyob-testing.6— Deterministic TUI tests: time via tea.Tick, headless via WithoutRenderer