Skip to content

LCM 14 bump refuses profile authority; wipe --stale drops registry #2979

Description

@ScriptedAlchemy

Problem

The LCM 13 → 14 bump from #2864 was specified as a sessions-only reset ("refuse sessions only until their scoped reset"). On a real profile upgraded from v1.0.0-beta.65, the profile authority (~/.tracedecay/global.db) is refused too, because tracedecay-global-db installs the LCM schema into every registered global-db store (schema_stages.rs: tracedecay_lcm::schema::ensure_lcm_schema_in_transaction), and global.db carries its own LCM marker at 13. So tracedecay wipe --stale --yes would also delete global.db, which drops the project registry, usage accounting and remote-deletion records (per wipe --help). The operator then has to re-run tracedecay init for every project, all for an LCM row-scope change.

The runtime proof and acceptance test in #2864 (session_stores_at_shipped_lcm_schema_13_refuse_sessions_only_until_their_scoped_reset) aged only the project and profile session stores to 13. They left global.db at 14, so they never exercised the shipped shape, where every global-db store is at 13.

Reproduction (operator profile, beta.65 → beta.66)

$ tracedecay --version
tracedecay 1.0.0-beta.65+5902f717ee18774b2e72a382644ca695d79d6395
$ tracedecay status --json | jq .reset_required_stores
[]
$ timeout 900 tracedecay update ; echo $?
...
Successfully upgraded to v1.0.0-beta.66!
  pending operator action: profile authority requires reset (LCM profile schema 13 is incompatible with required schema 14; reset the profile); run `tracedecay wipe --stale --yes`
  pending operator action: profile sessions requires reset (LCM profile schema 13 ...)
  pending operator action: project sessions proj_48253b5bc867c540 requires reset (...)
  pending operator action: project sessions proj_7b2798f1d4448b5d requires reset (...)
  pending operator action: project sessions proj_a5b3d7e3ebe14ca7 requires reset (...)
  pending operator action: profile hook admissions requires reset (hook admission ledger holds a pre-log shape this binary does not open); ...
75
$ tracedecay status --json | jq '.reset_required_stores[0]'
warning: canonical worldwide-counter upload setting is unavailable: config error: application.reset-required: The LCM requires an explicit reset with `tracedecay wipe --stale --yes`: LCM profile schema 13 is incompatible with required schema 14; reset the profile
{
  "authority": "LCM",
  "found_version": 13,
  "reason": "LCM profile schema 13 is incompatible with required schema 14; reset the profile",
  "remedy": "tracedecay wipe --stale --yes",
  "required_version": 14,
  "store": "profile authority"
}

store: "profile authority" is StoreShardScopeV1::Profile (tracedecay-store-runtime/src/session_registry/maintenance.rs), i.e. global.db (51 MB here, registering 3 projects).

Expected

An LCM-only schema change resets only the stores whose LCM data changed shape (the session stores). The profile authority's project registry survives. Either global.db stops hosting LCM tables, or its LCM tables are versioned and reset independently of the registry. The acceptance fixture ages every store that a shipped binary marked, global.db included, and asserts that the registry and project list still resolve after wipe --stale --yes.

State

The operator profile is left on beta.66 in the reset-required state. wipe --stale was not run, pending an operator decision.

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