Skip to content

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

Description

@genwave-radio

πŸ”Ž What

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)

  • gh-Safe loop/Station Id must never allow ranking/taste votingΒ #99 / F84.7: the taste thumb's safe-content exclusion refuses every track.
  • 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".

Refs: SafeLoopSeeder.cs, OptionsMonitorSafeScopeProvider, gh-#99, SPEC F149.2/F150/F152.

https://claude.ai/code/session_01AmM47neuvsJph3ZT4brTCV

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions