Skip to content

Local AI upgrade can strand old model receipts; migrate known IDs or offer confirmed recovery #1881

Open

Description

@joelagnel

Bug

The Local AI "receipt" is the app-owned installation manifest at <LocalDataDirectory>\LocalAI\state.json. It records the installed model ID, runtime, and artifact information so setup can verify and reconcile the existing installation.

#1760 renamed the Bolt model ID from nemotron-3.5-bolt-74b-a9b-iq2-lilicorr to nemotron-3.5-bolt-74b-a9b-24gb without a compatibility alias or receipt migration. It has merged. Existing installations can retain the old ID because local app data persists through Store updates. The current reconciler requires an exact match between the receipt's ModelCatalogId and the selected model ID. A mismatch fails setup and directs the user to uninstall.

This issue concerns the portable Local AI artifact manifest (state.json). The native Gateway ownership record (gateway-binding.json) and the clean-state setup warning shown in the screenshot are tracked separately in #1882. #1883 was a later duplicate and is closed; that screenshot is not evidence of an old-model-ID mismatch.

#1869 introduced a second upgrade incompatibility: its Bolt vision recipe adds a required projector asset, so earlier public text-only Bolt receipts lack the new asset record and cannot be reconciled as that recipe. The PR explicitly accepted this breaking behavior without a migration or reset path. This is another existing-install case for the same recovery problem; it does not explain #1882's reported clean-AppData failure.

This is an upgrade compatibility gap. The app should recover a known valid old recipe without destroying its verified artifacts. If an installation genuinely cannot be reused, it should explain the problem and offer a confirmed, Local-AI-only reset.

Reproduction

  1. Install Bolt with a build before fix(inference): rename Bolt model ID to public 24gb name #1760, leaving a valid Local AI manifest with the old model ID.
  2. Update to a build containing fix(inference): rename Bolt model ID to public 24gb name #1760 without clearing local app data.
  3. Start Local AI or retry its setup against the current catalog.

Source-level evidence: the old ID is absent from the current catalog, and LocalAiInstallReconciler.ValidateRecipeMatch compares manifest.ModelCatalogId to plan.Model.Id exactly. A current-head Windows upgrade reproduction still needs to be captured.

Expected behavior

  • Recognize known old model IDs and migrate or accept their receipts after validating the installed artifacts and ownership.
  • If a receipt cannot be safely reused, explain why and offer a reset with an explicit confirmation that names what will be removed and preserved.
  • Make recovery available on first app launch or Local AI setup after an update for both Store and Inno installations. Do not rely on an interactive Store installation step.
  • Reset only app-owned Local AI state and Gateway route. Preserve the WSL Gateway, pairing, and download cache. If route ownership cannot be proved, fail safely and give actionable recovery guidance.

Actual behavior

A stale model ID can prevent reconciliation. Setup reports that the managed installation does not match the selected recipe and instructs the user to uninstall. Neither the Store update path nor installer.iss validates and repairs this manifest. Inno's post-install hook currently handles legacy background-launch migration.

Environment

Evidence and related work

Acceptance criteria

  • Regression coverage for valid pre-fix(inference): rename Bolt model ID to public 24gb name #1760 Bolt ID receipts and pre-fix(setup): Nemotron Bolt is hidden below 33 GB free and cannot read images #1869 public text-only Bolt receipts upgraded to the current catalog, including startup and setup behavior.
  • A known-compatible receipt is preserved and migrated or accepted without redownloading or resetting Local AI.
  • An irreconcilable receipt produces a clear, user-confirmed recovery path on first launch/setup after upgrade; cancellation leaves data intact.
  • Confirmed reset works from the setup UI without lock contention and does not delete state when Gateway route ownership is uncertain.
  • Verify the recovery path on both Store and Inno upgrades.

Activity

  1. added
    clawsweeper:intake:bugPreliminary submission classification; full source review pending.
    P0Emergency: data loss, security bypass, crash loop, or unusable core runtime.
    clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.
    impact:ux-release-blockerA non-technical user is blocked without terminal, logs, config, or support.
    issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.
    and removed
    clawsweeper:intake:bugPreliminary submission classification; full source review pending.
    on Oct 26, 2026
  2. clawsweeper commented on Oct 26, 2026

    @clawsweeper

    Codex review: this still needs some work.

    Summary
    Keep this issue open: current main still rejects both historical Bolt identities and earlier public text-only receipts, while the open reset PR covers only part of recovery; collaborator authorship also prevents automatic closure.

    Reproducibility: Current source establishes old-ID lookup and reconciliation failures plus missing-projector rejection for historical public receipts; no tests or live upgrade reproduction ran during this read-only review.

    Regression provenance
    Possible regression — suspected (reviewed change). No predecessor PR is attributed.

    Next step
    Establish failing historical-receipt startup/setup regressions and coordinate verified preservation with the inline confirmed recovery work in #1771.

    Review details

    Best possible solution:

    Preserve verified historical recipes and offer an inline, confirmed Local AI-only Fix or Reset action when safe reuse fails.

    Do we have a high-confidence way to reproduce the issue?

    Current source establishes old-ID lookup and reconciliation failures plus missing-projector rejection for historical public receipts; no tests or live upgrade reproduction ran during this read-only review.

    Is this the best way to solve the issue?

    Receipt-aware compatibility is safer than deleting valid artifacts, and irreconcilable state should use the existing guarded ownership and cleanup services with explicit confirmation.

    AGENTS.md: found and applied where relevant.

    Remaining risk / open question:

    • The complete Store and Inno upgrade experience has not been reproduced on current-head Windows.
    • Safe reuse must distinguish historical IDs, artifact pins, aliases, and public text-only recipes without weakening receipt validation.
    • The overlapping reset PR still documents setup-lock and native ownership limitations.

    Codex review notes: model internal, reasoning medium; reviewed against ed1444b0de69.

    Label changes

    Label changes:

    No label changes.

    Label justifications:

    • P0: The source-proven upgrade incompatibility can block ordinary users from resuming Local AI, with setup directing them to uninstall and no verified in-product recovery.
    • impact:ux-release-blocker: Recovery currently requires uninstall, manual state intervention, or support; an inline repair or confirmed reset is needed.
    Evidence reviewed

    Acceptance criteria:

    • ./build.ps1
    • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore
    • dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore
    • dotnet test ./tests/OpenClaw.Connection.Tests/OpenClaw.Connection.Tests.csproj
    • dotnet test ./tests/OpenClaw.SetupEngine.Tests/OpenClaw.SetupEngine.Tests.csproj

    What I checked:

    How this review workflow works
    • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
    • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
    • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
    • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
    • Maintainers can also comment @clawsweeper review to request a fresh review only.
    • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge; those execution lanes are retired.
    • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

    Reviewed October 26, 2026, 7:02 PM ET / 23:02 UTC.

  3. added
    clawsweeper:intake:bugPreliminary submission classification; full source review pending.
    clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.
    clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.
    clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.
    and removed
    clawsweeper:intake:bugPreliminary submission classification; full source review pending.
    on Oct 26, 2026
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

    P0Emergency: data loss, security bypass, crash loop, or unusable core runtime.bugSomething isn't workingclawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:ux-release-blockerA non-technical user is blocked without terminal, logs, config, or support.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions