Everything written this session that has not been through the device: rounds 43 to 48 (each patch adversarially verified, 43's transient-notice expectation fixed), a partial round 49, the pipeline scripts, the Android Auto design and the icon comparison mock. Also the two harness changes that were never A/B'd — adaptive waits, which may only shorten a declared wait and never lengthen it, and a ship that runs the mock walk and the deploy at the same time. The A/B and its 255-step baseline are in handoff/tools; main stays at what the phone has actually walked.
35 lines
2.3 KiB
Plaintext
35 lines
2.3 KiB
Plaintext
toast says it in English.
|
|
|
|
**What the walk has seen.** The round that wrote all of the above was straight
|
|
about what it had not proved: six of these fixes shipped with no expectation at
|
|
all, because neither `loadHome` nor `loadLyrics` was reachable from the `__ss`
|
|
handle the walk drives the app through, and both answer a second ask with
|
|
nothing — `loadHome` is gated on `started`, `loadLyrics` on the track's own
|
|
`key` — so no amount of tapping re-runs them. They are driven now: Home's
|
|
`catalogDown`, the Gaps line, a catalog record's stub, the artist page's two
|
|
different sentences, a playlist that would not read, the lyrics `failed` face,
|
|
and `failed · <sentence>` on a transfer row. Each is armed with
|
|
`__ssMock.fail`, asserted both by the words a person reads and by the Rust
|
|
string being absent from them, and disarmed by the step that proves the face
|
|
heals. The handle grew four names for it and no more — `home` and `loadHome`,
|
|
`lyr` and `loadLyrics` — because a test seam that exports the internals
|
|
wholesale stops being a seam. The toast's own **Try again** is pressed for the
|
|
first time too, through You → **Rescan library**: `lib.error` is written by
|
|
`loadLibrary` alone, and that row is the only door in the app that reaches it
|
|
a second time.
|
|
|
|
What is still unseen, honestly. **Three sites draw a raw backend string**, so
|
|
the rule above has holes: `screens/Browse.svelte` — a peer's shares that would
|
|
not read, which is a full error face, Try again and all, that was simply missed
|
|
— and `screens/Import.svelte`, twice. `SyncRoom.svelte` is a fourth, by way of
|
|
`saveTapSync`'s catch. **Six error faces have no expectation either**: Browse's,
|
|
Community's "The server did not answer.", Room's "Not in this room.", Album's
|
|
"That record is gone.", Playlist's "Playlist not found." and Peer's "Not
|
|
compared yet." — all reachable, the first two through the mock's weather and
|
|
the rest by pushing a nav entry with a dead id. And of the probe's fields, six
|
|
are still read out on every step and asserted on none: `accent`, `xlive`, `hd`,
|
|
`hwant`, `navMs` and `a11yWho`. The cheapest real win left in the harness is a
|
|
global `hd === hwant` check on every named step — the history mirror is how the
|
|
blank page after a confirmed delete was found — but it would fire during the
|
|
first-run reloads and needs its own thinking about the suppress window first.
|