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.
This commit is contained in:
1 parent
867fd42972
commit
9f0601027c
400 files changed
+26401
-3
No files matched your search
@@ -0,0 +1,64 @@
|
||||
/* ── the long session: what the app is still HOLDING ─────────────
|
||||
Minutes is all a walk has ever been. These are the numbers that
|
||||
decide what hours look like: the thumbnail map and its side
|
||||
tables (from the store itself — they are module-private, so
|
||||
artTally is the only way to see them), the catalog's ten
|
||||
session maps, the queue, the transfer list, the DOM, and the
|
||||
live listeners and timers.
|
||||
|
||||
The listener and timer counts come from a registry that a step
|
||||
installs IN THE PAGE, not from here: they are -1 until it is
|
||||
installed, which means every step before the session block, every
|
||||
step after it puts itself away again, and the whole phone walk,
|
||||
where it is never installed at all. They count what was
|
||||
registered AFTER the install and is still ATTACHED — window,
|
||||
document, or an element that is connected — so the absolute
|
||||
number is small and depends on how much of the walk ran first;
|
||||
it is the DELTA across the laps that means anything. Attached
|
||||
rather than add-minus-remove because that counter is a liar in
|
||||
this app: {#key nav.seq} replaces the .screen element on every
|
||||
navigation, so each new screen gets its own scroll handler and
|
||||
the old element is simply dropped.
|
||||
|
||||
grew* is the same number against whatever the block latched into
|
||||
window.__ssBase, and -1 when nothing has. Every backslash here is
|
||||
doubled and there is not one backtick, comment included — this
|
||||
block lives inside a template literal. */
|
||||
tallyArt: (function () {
|
||||
/* one census per probe, kept in __ssLast for the fields below:
|
||||
a field of an object literal cannot see its siblings, and
|
||||
this insert is the only part of the probe this round owns.
|
||||
All of it is a read; nothing here fetches or evicts. */
|
||||
window.__ssCensus = function () {
|
||||
var out = { art: 0, chars: 0, accents: 0, pending: 0, cat: 0, queue: 0, xfer: 0, nodes: 0, ears: -1, timers: -1, ticks: -1 };
|
||||
try { var a = __ss.artTally(); out.art = a.art; out.chars = a.chars; out.accents = a.accents; out.pending = a.pending; /* waiting is a SUBSET of pending, never a second queue */ } catch (e) {}
|
||||
try {
|
||||
var c = __ss.catalog;
|
||||
var ks = ['artists', 'albums', 'extras', 'profiles', 'seeds', 'albumInfo', 'popular', 'heroSeeds', 'overviews', 'listeners'];
|
||||
for (var i = 0; i < ks.length; i++) out.cat += Object.keys(c[ks[i]] || {}).length;
|
||||
} catch (e) {}
|
||||
try { out.queue = __ss.player.queue.length; } catch (e) {}
|
||||
try { out.xfer = Object.keys(__ss.transfers.items).length; } catch (e) {}
|
||||
try { out.nodes = document.getElementsByTagName('*').length; } catch (e) {}
|
||||
try { var k = window.__ssCount(); out.ears = k.listeners; out.timers = k.timeouts; out.ticks = k.intervals; } catch (e) {}
|
||||
return out;
|
||||
};
|
||||
window.__ssLast = window.__ssCensus();
|
||||
return window.__ssLast.art;
|
||||
})(),
|
||||
tallyChars: (function () { try { return window.__ssLast.chars; } catch (e) { return 0; } })(),
|
||||
tallyAcc: (function () { try { return window.__ssLast.accents; } catch (e) { return 0; } })(),
|
||||
tallyPend: (function () { try { return window.__ssLast.pending; } catch (e) { return 0; } })(),
|
||||
tallyCat: (function () { try { return window.__ssLast.cat; } catch (e) { return 0; } })(),
|
||||
tallyQueue: (function () { try { return window.__ssLast.queue; } catch (e) { return 0; } })(),
|
||||
tallyXfer: (function () { try { return window.__ssLast.xfer; } catch (e) { return 0; } })(),
|
||||
tallyNodes: (function () { try { return window.__ssLast.nodes; } catch (e) { return 0; } })(),
|
||||
tallyEars: (function () { try { return window.__ssLast.ears; } catch (e) { return -1; } })(),
|
||||
tallyTimers: (function () { try { return window.__ssLast.timers; } catch (e) { return -1; } })(),
|
||||
tallyTicks: (function () { try { return window.__ssLast.ticks; } catch (e) { return -1; } })(),
|
||||
grewArt: (function () { try { return window.__ssLast.art - window.__ssBase.art; } catch (e) { return -1; } })(),
|
||||
grewCat: (function () { try { return window.__ssLast.cat - window.__ssBase.cat; } catch (e) { return -1; } })(),
|
||||
grewEars: (function () { try { return window.__ssLast.ears - window.__ssBase.ears; } catch (e) { return -1; } })(),
|
||||
grewTimers: (function () { try { return window.__ssLast.timers - window.__ssBase.timers; } catch (e) { return -1; } })(),
|
||||
grewTicks: (function () { try { return window.__ssLast.ticks - window.__ssBase.ticks; } catch (e) { return -1; } })(),
|
||||
grewNodes: (function () { try { return window.__ssLast.nodes - window.__ssBase.nodes; } catch (e) { return -1; } })(),
|
||||
Reference in new issue
Block a user