Files
SoulStream/handoff/rounds/ins-r39-expect.txt
T
KeelrLeek 9f0601027c android: the handoff — the pending rounds, the pipeline, and what is unverified
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.
2026-09-14 07:57:41 -05:00

41 lines
3.2 KiB
Plaintext

/* ── the faces no walk had seen ─────────────────────────────────────
Each of these fails if round thirty-one's fix is undone: stop reading
`slot.error` and Home's line empties; drop the `gapErr` branch and
the Gaps line falls back to "See what's missing" and can be tapped
for ever; put `lyr.failed` back and the face says "No lyrics found"
about a lookup that never answered; take `say()` out of `stateLine`
and the raw string is on the row again. Every one asserts the
sentence a person reads AND that the Rust string is not in it — the
second half is the round-thirty-one rule, and the half that survives
any rewording of the first. */
"faces-home-down": (i) => i.homeSlots > 0 && i.homeErr === i.homeSlots
&& /^Couldn't reach the catalog, so there's nothing new/.test(i.catDown)
&& !/New from your artists/.test(i.secs),
"faces-gap-down": (i) => /Couldn't reach the catalogue — tap to try again/.test(i.gapLine) && !i.gapCards,
"faces-gap-again": (i) => /more released/.test(i.gapLine) && !/Couldn't reach/.test(i.gapLine) && i.gapCards >= 3,
"faces-album-down": (i) => /^The catalog did not answer/.test(i.why) && /The network didn't answer/.test(i.why)
&& !/io:|connection reset/.test(i.why) && i.again && !i.trks,
"faces-album-again": (i) => !i.why && !i.again && i.trks > 0,
/* the pair that proves the distinction is real and not decoration */
"faces-artist-down": (i) => /only what this phone holds is here/.test(i.catNote) && /didn't answer/.test(i.stubText)
&& !/io:|address information/.test(i.catNote + i.stubText),
"faces-artist-none": (i) => !i.catNote && /had nothing to add/.test(i.stubText) && !/didn't answer/.test(i.stubText),
"faces-playlist-down": (i) => /^Couldn't read this playlist/.test(i.why) && /library folder isn't readable/.test(i.why)
&& i.again && !i.plrows && !/database file/.test(i.why),
"faces-playlist-again": (i) => !i.why && !i.again && i.plrows > 0,
"faces-lyrics-down": (i) => i.lyrFailed === "yes" && !i.lyrLines && /^Couldn't look up the words/.test(i.lyrNote)
&& i.lyrTools && !/io:|address information/.test(i.lyrNote),
"faces-lyrics-again": (i) => i.lyrFailed === "no" && i.lyrLines >= 3 && !i.lyrNote,
"faces-xfer-failed": (i) => i.title.startsWith("Transfers")
&& /failed · They refused the transfer \(File not shared\)/.test(i.xferFail)
&& !/transfer rejected/.test(i.xferFail),
"faces-library-toast": (i) => /library folder isn't readable right now/.test(i.toast) && i.retry === "Try again"
&& !/database file/.test(i.toast),
"faces-library-again": (i) => i.title.startsWith("You") && !i.toast && !i.retry,
/* the disarm, proved: no toast, no armed action, no stub, Home's slots
healthy and its rails back — so the first run below is not quietly
running on something this block left standing */
"faces-clear": (i) => !i.toast && !i.why && !i.catDown && !i.retry
&& i.homeSlots > 0 && i.homeErr === 0
&& /New from your artists/.test(i.secs) && /^(Good |Still)/.test(i.title),