Migrating to v0.50.0

Two changes need a reader's attention: the two installer scripts swapped names so the public one is the file its URL implies, and the field naming where an external CPU figure came from gained a third value. The sections are independent, so apply the ones you use in any order.

Installer pathsSection anchor link

  • Before: bash install/install.sh installed the runner as a systemd user unit or a launchd agent.
  • After: bash install/service-install.sh does that. install/install.sh is now the public CLI installer -- the script https://sparkwing.dev/install.sh serves, which downloads a signed release and verifies it before installing.
  • Why: the repository had no copy of the installer adopters actually run, so the script the release signs and the script the site serves could not be compared. install/install.sh is that copy, and the runner installer moved aside to give it the name.
  • Gotchas: the old path still runs, so a stale command installs the CLI rather than failing. Self-hosting instructions that pipe answers into install/install.sh need the new path.

External source gained a third valueSection anchor link

  • Before: ResourceState.ExternalSource was measured or unmeasured, so a consumer could switch on the two and cover the field.
  • After: it is also unattributed -- a real host reading that carries some of sparkwing's own runs' CPU. Branch on unmeasured and treat every other named value as a real reading. An empty value means the daemon predates the field, so whether the figure was measured is unknown.
  • Why: the set is open. A consumer switching on the values one build knows renders a later one as its fallback, and the fallback that reads as safe -- "measured" -- is the one that hides a figure the daemon could not stand behind.
  • Gotchas: a switch with no default renders unattributed as nothing at all. Read QueueState.ExternalAttribution for how often the daemon could not attribute and why, and take the clean count from its attributed field rather than by subtracting the fault counts from samples.