Skip to content

update cannot reset a persisted shape the new daemon refuses at startup #2230

Description

@ScriptedAlchemy

What happens

A daemon built from origin/master exits at startup when the profile's Git correlation store is at schema version 5, the shape that beta.53 and beta.54 write. The error is the typed reset refusal:

Error: config error: git correlation persisted shape requires reset: the store records Git correlation schema version 5; this build stores Git evidence as per-session rows at version 6

refused authority: git correlation
this binary does not open or migrate that shape; reset it (its old data is deleted, nothing is backed up):
  tracedecay update              refreshes the binary and daemon, then resets every refused profile authority
  tracedecay wipe --all --yes    resets the complete profile database state now

The refusal names tracedecay update as the remedy, but update cannot reach its reset. run_update_flow resets refused authorities only in reset_refused_profile_authorities, which runs after with_exclusive_maintenance_window has restored the daemon. The restore waits up to 3 minutes for a daemon that exits on every start, then fails. The reset never runs. Under real systemd, Restart=always makes the unit loop.

The shape change is #2202 (1b8ca37877), which is not in beta.54. So once it ships, every operator who runs tracedecay update from beta.54 hits this: update exits 1 and the managed daemon stays down until they run tracedecay wipe --all --yes by hand.

Reproduction (isolated home, fake systemctl that runs the unit's ExecStart under a capped scope)

  1. Install the managed service with the beta.53 release binary, so the daemon writes a schema-5 profile.
  2. Replace the installed binary with a build of origin/master (aba3191152 plus unrelated CLI changes) and run tracedecay update.
Waiting for the restored daemon to reach RunningEnabled (service StoppedEnabled, socket missing, protocol not required)…   (x8)
Error: config error: update failed: ...; daemon state restoration also failed: config error: TraceDecay daemon did not return to RunningEnabled: service is StoppedEnabled, socket '.../home/.tracedecay/daemon.sock' is missing, and protocol readiness is not required
exit=1

The daemon log for the restored start contains only the reset refusal above. It never reaches daemon_listening.

Expected

tracedecay update across a persisted-shape change ends with a running daemon and core tools that work. That needs one of two things: the daemon answers the protocol and refuses per request (the path reset_refused_profile_authorities probes), or the updater resets the refused authority before it waits on the restore.

Found while verifying the update-path fixes (updater restore identity, tracked host without its CLI).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions