#Update Has Broken LCM/Losslessclaw skill

1 messages · Page 1 of 1 (latest)

ionic wharf
#

I updated to the latest version of openclaw and it has broken my context engine:

14:16:19+00:00 error diagnostic {"subsystem":"diagnostic"} lane task error: lane=main durationMs=519 error="Error: Context engine "lossless-claw" factory returned an invalid ContextEngine: info.id must match registered id "lossless-claw"."
14:16:19+00:00 error diagnostic {"subsystem":"diagnostic"} lane task error: lane=session:agent:main:main durationMs=523 error="Error: Context engine "lossless-claw" factory returned an invalid ContextEngine: info.id must match registered id "lossless-claw"."
14:16:19+00:00 error Embedded agent failed before reply: Context engine "lossless-claw" factory returned an invalid ContextEngine: info.id must match registered id "lossless-claw".

It was working in the previous version

wet jasperBOT
delicate jackalBOT
#

Yep, this looks like a real compatibility break.

What changed, OpenClaw now strictly validates the resolved context engine. Your plugin is registering as lossless-claw, but the object it returns has an info.id that is not exactly lossless-claw, so it now hard-fails. Older builds were looser, which is why it worked before.

First, please paste:

openclaw --version

Then I’d check/fix it in this order:

openclaw plugins inspect lossless-claw --json
openclaw plugins update lossless-claw
openclaw gateway restart
#

If you are running a linked/local dev copy of the plugin, the factory needs to return:

api.registerContextEngine("lossless-claw", () => ({
  info: { id: "lossless-claw", name: "Lossless Claw", ownsCompaction: true },
  ...
}))

Temporary unblock, switch back to the built-in engine:

plugins: {
  slots: {
    contextEngine: "legacy"
  }
ionic wharf
#

15:24:39 [plugins] [lcm] Ignoring sessions matching 1 pattern(s): agent:*:cron:**
15:24:39 [plugins] [lcm] Plugin loaded (enabled=true, db=/home/hl-metabase/.openclaw/memory/lossless-claw/lcm.db, threshold=0.6)
15:24:39 [plugins] [lcm] Registered context engine id=lossless-claw (plugins.slots.contextEngine must point to "lossless-claw"; plugin ids alone do not activate a context engine)
15:24:39 [plugins] [lcm] Compaction summarization model: openai-codex/gpt-5.1-codex-mini (override)
{
  "workspaceDir": "/home/hl-metabase/.openclaw/workspace",
  "plugin": {
    "id": "lossless-claw",
    "name": "Lossless Context Management",
    "description": "DAG-based conversation summarization with incremental compaction, full-text search, and sub-agent expansion",
    "version": "0.4.0",
    "format": "openclaw",
    "source": "/home/hl-metabase/.openclaw/extensions/lossless-claw/index.ts",
    "rootDir": "/home/hl-metabase/.openclaw/extensions/lossless-claw",
    "origin": "global",
    "enabled": true,
    "explicitlyEnabled": true,
    "activated": true,
    "activationSource": "explicit",
    "activationReason": "selected context engine slot",
    "status": "loaded",
    "toolNames": [],
    "hookNames": [],
    "channelIds": [],
    "cliBackendIds": [],
    "providerIds": [],
    "speechProviderIds": [],
    "realtimeTranscriptionProviderIds": [],
    "realtimeVoiceProviderIds": [],
    "mediaUnderstandingProviderIds": [],
    "imageGenerationProviderIds": [],
    "videoGenerationProviderIds": [],
    "musicGenerationProviderIds": [],
    "webFetchProviderIds": [],
    "webSearchProviderIds": [],
    "contextEngineIds": [
      "lossless-claw"
    ],

#

"memoryEmbeddingProviderIds": [],
    "agentHarnessIds": [],
    "gatewayMethods": [],
    "cliCommands": [],
    "services": [],
    "commands": [],
    "httpRoutes": 0,
    "hookCount": 0,
    "configSchema": true,
    "configUiHints": {
      "contextThreshold": {
        "label": "Context Threshold",
        "help": "Fraction of context window that triggers compaction (0.0\u20131.0)"
      },
      "incrementalMaxDepth": {
        "label": "Incremental Max Depth",
        "help": "How deep incremental compaction goes (0 = leaf only, -1 = unlimited)"
      },
      "freshTailCount": {
        "label": "Fresh Tail Count",
        "help": "Number of recent messages protected from compaction"
      },
      "dbPath": {
        "label": "Database Path",
        "help": "Path to LCM SQLite database (default: ~/.openclaw/lcm.db)"
      },
      "ignoreSessionPatterns": {
        "label": "Ignored Sessions",
        "help": "Glob patterns for session keys to exclude from LCM storage"
      },
      "statelessSessionPatterns": {
        "label": "Stateless Sessions",
        "help": "Glob patterns for session keys that can read from LCM but never write to it"
      },

#

"skipStatelessSessions": {
        "label": "Skip Stateless Sessions",
        "help": "When enabled, matching stateless session keys skip LCM persistence and grant writes"
      },
      "summaryModel": {
        "label": "Summary Model",
        "help": "Model override for LCM summarization (e.g., 'gpt-5.4' to reuse the session provider, or 'openai-resp/gpt-5.4' for a full cross-provider ref)"
      },
      "summaryProvider": {
        "label": "Summary Provider",
        "help": "Provider override used only when summaryModel is a bare model name (e.g., 'openai-resp')"
      },
      "expansionModel": {
        "label": "Expansion Model",
        "help": "Model override for lcm_expand_query sub-agent (e.g., 'anthropic/claude-haiku-4-5')"
      },
      "expansionProvider": {
        "label": "Expansion Provider",
        "help": "Provider override for lcm_expand_query sub-agent (e.g., 'anthropic')"
      }
    },
    "configJsonSchema": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "contextThreshold": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "incrementalMaxDepth": {
          "type": "integer",
          "minimum": -1
        },
        "freshTailCount": {
          "type": "integer",
          "minimum": 1
        },
        "leafMinFanout": {
          "type": "integer",
          "minimum": 2
        },
        "condensedMinFanout": {
          "type": "integer",
          "minimum": 2
        },
        "condensedMinFanoutHard": {
          "type": "integer",
          "minimum": 2
        },

#

"dbPath": {
          "type": "string"
        },
        "ignoreSessionPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "statelessSessionPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "skipStatelessSessions": {
          "type": "boolean"
        },
        "largeFileThresholdTokens": {
          "type": "integer",
          "minimum": 1000
        },
        "summaryModel": {
          "type": "string"
        },
        "summaryProvider": {
          "type": "string"
        },
        "expansionModel": {
          "type": "string"
        },
        "expansionProvider": {
          "type": "string"
        }
      }
    },
    "imported": true
  },
  "shape": "non-capability",
  "capabilityMode": "none",
  "capabilityCount": 0,
  "capabilities": [],
  "typedHooks": [],
  "customHooks": [],
  "tools": [
    {
      "names": [],
      "optional": false
    },
    {
      "names": [],
      "optional": false
    },
    {
      "names": [],
      "optional": false
    },
    {
      "names": [],
      "optional": false
    }
  ],
  "commands": [],
  "cliCommands": [],
  "services": [],
  "gatewayMethods": [],
  "mcpServers": [],
  "lspServers": [],
  "httpRouteCount": 0,
  "bundleCapabilities": [],
  "diagnostics": [],
  "policy": {
    "allowedModels": [],
    "hasAllowedModelsConfig": false
  },
  "usesLegacyBeforeAgentStart": false,
  "compatibility": []
}

delicate jackalBOT
#

That’s the smoking gun.

Your log shows lossless-claw 0.4.0, which is pretty old. Current upstream is 0.9.1, and newer OpenClaw now validates the context-engine contract more strictly, so an older LCM build can register fine but still fail when the factory returns the engine object.

So this is very likely plugin version mismatch, not corrupted context data.

I’d do this next:

openclaw --version
openclaw plugins update lossless-claw
openclaw gateway restart

If plugins update says it is untracked or won’t update cleanly, reinstall it:

#
openclaw plugins install @martian-engineering/lossless-claw --force
openclaw gateway restart

Why the logs look contradictory:

  • Registered context engine id=lossless-claw = registration succeeded
  • info.id must match registered id "lossless-claw" = the returned engine object still reports a different info.id

So both can be true.

If it still fails after update/reinstall, paste:

openclaw --version
openclaw plugins inspect lossless-claw --json
#

Yep, this extra output still points to the same conclusion.

Your config is fine:

  • plugin is loaded
  • plugin is activated
  • slot selection is working

So the failure is not discovery/config, it’s the engine object returned by that old lossless-claw build. With 0.4.0, I’d stop digging and just replace it.

Try this:

openclaw --version
openclaw plugins install @martian-engineering/lossless-claw --force
openclaw gateway restart
#

If you prefer updater first:

openclaw plugins update lossless-claw
openclaw gateway restart

But honestly, with that version gap, I’d go straight to the install ... --force path.

If you still get the same error after that, paste:

openclaw --version
openclaw plugins inspect lossless-claw --json

At that point I’d treat it as a real regression/compat bug and point you to file an issue: https://github.com/openclaw/openclaw/issues

#

We’ve got enough now, no need to paste more of that JSON. The rest is just plugin schema/metadata.

The important bit was already:

  • version: "0.4.0"

That’s the part that points to an old LCM build against a newer OpenClaw runtime.

At this point, the next useful thing is not more inspect output, it’s whether this fixes it:

openclaw plugins install @martian-engineering/lossless-claw --force
openclaw gateway restart

Then paste only:

#
openclaw --version

and, if it still fails, the new error after reinstall. That’ll be way more useful than the rest of the plugin JSON.

#

Yep, and this is exactly why plugins inspect is a dead end here.

That JSON shows the plugin manifest/schema, not the live ContextEngine.info object returned by the factory, so it will not show the bad info.id that OpenClaw is complaining about.

So, I wouldn’t paste more of that output. The next step is still:

openclaw plugins install @martian-engineering/lossless-claw --force
openclaw gateway restart

Then send just:

openclaw --version