Make the phone say what it thinks is happening #24
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
mobrule/kurageyomi#24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#1
Why
Two bugs have survived two rounds of fixes because they are timing races against a client that reports on a ten-second throttle, and nothing about them is visible from the sofa:
Guessing a third time is a bad plan. The phone should say what it thinks is happening.
What to build
A diagnostic readout, behind a new settings row (
Show diagnostics, off by default, phone-local like the others). It is a development tool and may be removed once the races are understood — build it to be cheap to delete, not to live forever.A state line, readable while swiping and pressing, so it cannot live in the sheet: the clock's current estimate; the last report's position and how long ago it arrived; whether that report was treated as news or as an echo; the last seek's target and whether it has been confirmed; the scrub run's anchor and whether it is active; the strip's
panelIndexand what it has outstanding inawaitingSettle; and whether the session accepts commands.A rolling event log of roughly the last ten events, newest first, each with a timestamp relative to the previous one. Events worth recording: a press (which control), a seek issued (target), a report arriving (position, and the verdict — news, echo, or resync), a settle (which panel, and whether it was judged the reader's or the app's), a run starting or ending (and why it ended).
The ordering is the whole point. A state snapshot alone will not show a report arriving between a press and its seek, which is the leading hypothesis for the back-twice bug.
Constraints
DESIGN.md's "no decoration that is not carrying information" is not in tension with it.Acceptance criteria
Blocked by
Merged to
main. Suites: 79 C#, 366 phone.An event log with ordering, behind a settings row, off by default and absent when off.
It earned its cost immediately: two rounds of inference had missed the back-twice bug, and one screenshot of this log named the mechanism exactly. Kept for the next race — #25's log entry gained a
staleverdict.