The defaults-discovery lab. Changes apply live — radio on the next request, daily mixes on
the next rebuild — and every change is recorded so the metrics page can tie outcome shifts
to knob turns. Found-good values get baked into shipped defaults; a dot marks knobs that
currently deviate from them.
{#if loadFailed}
Couldn't load tuning settings.
{:else if !snapshot}
Loading…
{:else}
{#each profileScopes as p (p.scope)}
{p.label}
{p.blurb}
{#each weightFields as f (f.key)}
{/each}
{/each}
Taste profile build
How plays become the learned taste profile: the influence half-life and the
completion→engagement curve (must stay ordered: hard-skip < neutral < full).
{#each tasteFields as f (f.key)}
{/each}
{/if}
Weekly trends
Skip rate per surface over the last {trends?.weeks ?? 12} weeks (lower is better; all
users aggregated, rates only). Dashed ticks mark tuning changes. Taste hit is the share
of plays whose artist fits the current taste profile.
{#if trendsFailed}
Couldn't load trends.
{:else if !trends}
Loading…
{:else if trends.series.length === 0}
No plays recorded yet — trends appear once listening accumulates.