You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SafeScope stays at the appsettings default [1] (the whole default library) when the first-boot seeder can't render β every track reads as station imagingΒ #645
appsettings.json defaults Station:SafeScope:LibraryIds to [1] β the default library. SafeLoopSeeder creates the safe library (id 2 on a fresh box) and then writes the SafeScope overlay [2] into station.settings β but only after its "Please Stand By" render succeeds (SafeLoopSeeder.cs ~:60-90: render β Failed return β the overlay write at :87 never runs).
So on a fresh station whose TTS endpoint is unreachable at first boot, the overlay is never written and the config default stays in force: library 1 β the operator's entire music library β is the safe scope until a later boot's seeder succeeds.
π₯ Consequences (all "safe-scope excluded" rules fire on real music)
F149.2 (v5.5.0, T355): the rotation ledger ignores every airing (never-aired counts stay at 100 %).
F150 (v5.5.0, T365βT367): every thumb answers ignored.
F152 (Deep Cuts): the pool count excludes everything.
Found while smoking T367 on a scratch box with Tts__Endpoint pointed at a dead port: every station thumb came back ignored; pinning Station__SafeScope__LibraryIds__0=2 fixed it. Pre-existing fragility (the gh-#99 exclusion has carried it since v2.x), surfaced by the Gardener because three new features now key on the scope.
β Done when
Either (a) the seeder writes the overlay as soon as the safe library exists (before the render β the library id is the fact the scope needs; the render's outcome doesn't change it), or (b) the appsettings default is empty and the safe scope is only ever the seeded library. (a) is the smaller diff and keeps "an operator-set SafeScope is never overwritten".
π What
appsettings.jsondefaultsStation:SafeScope:LibraryIdsto[1]β the default library.SafeLoopSeedercreates thesafelibrary (id 2 on a fresh box) and then writes the SafeScope overlay[2]intostation.settingsβ but only after its "Please Stand By" render succeeds (SafeLoopSeeder.cs~:60-90: render βFailedreturn β the overlay write at :87 never runs).So on a fresh station whose TTS endpoint is unreachable at first boot, the overlay is never written and the config default stays in force: library 1 β the operator's entire music library β is the safe scope until a later boot's seeder succeeds.
π₯ Consequences (all "safe-scope excluded" rules fire on real music)
ignored.Found while smoking T367 on a scratch box with
Tts__Endpointpointed at a dead port: every station thumb came backignored; pinningStation__SafeScope__LibraryIds__0=2fixed it. Pre-existing fragility (the gh-#99 exclusion has carried it since v2.x), surfaced by the Gardener because three new features now key on the scope.β Done when
Either (a) the seeder writes the overlay as soon as the
safelibrary exists (before the render β the library id is the fact the scope needs; the render's outcome doesn't change it), or (b) the appsettings default is empty and the safe scope is only ever the seeded library. (a) is the smaller diff and keeps "an operator-set SafeScope is never overwritten".Refs: SafeLoopSeeder.cs, OptionsMonitorSafeScopeProvider, gh-#99, SPEC F149.2/F150/F152.
https://claude.ai/code/session_01AmM47neuvsJph3ZT4brTCV