v9.3.614
What's Changed
- Detect wrapped PluginConfig keys in contract check by @joshuaswarren in #1379
- Align WebDAV PROPFIND symlink handling by @joshuaswarren in #1380
- Run OpenClaw security scanner from trusted source by @joshuaswarren in #1381
- Preserve final-stop cursor on observe failure by @joshuaswarren in #1382
- Preserve packaged Codex final flush cursor by @joshuaswarren in #1383
- Preserve AMB leaderboard compare failures by @joshuaswarren in #1384
- Pin GitHub host keys for release deploy pushes by @joshuaswarren in #1385
- Fail pnpm lockfile check on unexpected errors by @joshuaswarren in #1386
- Handle malformed Claude session end cursors by @joshuaswarren in #1388
- Validate changelog edits by section ranges by @joshuaswarren in #1389
- Verify Gitleaks download checksum by @joshuaswarren in #1390
- Preserve mixed OpenAI message parts by @joshuaswarren in #1391
- Create SQLite export parent directory by @joshuaswarren in #1392
- Preserve rollback file modes by @joshuaswarren in #1393
- Avoid overeager graph edge decay cron by @joshuaswarren in #1394
- Map inspector action provenance by recall result by @joshuaswarren in #1395
- Reject unsafe benchmark seed sequences by @joshuaswarren in #1396
- Reject invalid training export timezone offsets by @joshuaswarren in #1397
- Surface routing rules read failures by @joshuaswarren in #1398
- Quote conversation chunk metadata scalars by @joshuaswarren in #1399
- Validate surprise buffer snapshot before promotion by @joshuaswarren in #1400
- Deny cross-namespace reads at hard limit by @joshuaswarren in #1401
- Reject unsafe eval benchmark ids by @joshuaswarren in #1402
- Serialize concurrent task updates by @joshuaswarren in #1403
- Import missing lossless message parts on retry by @joshuaswarren in #1404
- Clear stale utility learning weights by @joshuaswarren in #1405
- Persist active recall cache-hit transcripts by @joshuaswarren in #1406
- Classify AWS secret access keys by @joshuaswarren in #1407
- Read implicit default materialize namespace from legacy root by @joshuaswarren in #1408
- Validate MemoryAgentBench trialLimit inputs by @joshuaswarren in #1409
- Replace stale temporal index memberships by @joshuaswarren in #1410
- Ensure target Meilisearch collections by @joshuaswarren in #1411
- Skip symlinked provenance scan roots by @joshuaswarren in #1413
- Ignore future behavior learner signals by @joshuaswarren in #1414
- Honor parsed self participant roles by @joshuaswarren in #1415
- Reject invalid recallAtK cutoffs by @joshuaswarren in #1416
- Honor custom benchmark iteration counts by @joshuaswarren in #1417
- Keep contradiction verdict metrics out of tasks by @joshuaswarren in #1418
- Reserve enrichment rate limits before provider calls by @joshuaswarren in #1419
- Persist prototype-safe observer session keys by @joshuaswarren in #1420
- Keep positive preference fact memories by @joshuaswarren in #1421
- perf(qmd): opt-in search-strategy + daemon-timeout knobs (#1335) by @joshuaswarren in #1422
- feat: task-specific gateway model chain (taskModelChain) (#1365) by @joshuaswarren in #1425
- feat(dreams): generate dream narratives via gateway model chain (#1366) by @joshuaswarren in #1426
- feat: LLM-based recall planning (recallPlannerLlmEnabled) (#1367) by @joshuaswarren in #1428
- chore(openclaw): record 2026.6.4–2026.6.6 compatibility sweep by @joshuaswarren in #1429
- feat: opt-out flag to disable legacy engram.* MCP tool aliases (#1427) by @joshuaswarren in #1430
- fix(openclaw): scope SDK-surface scanner to the plugin-author surface by @joshuaswarren in #1433
- fix(openclaw): support OpenClaw 2026.6.5-beta.2 in plugin compat range by @joshuaswarren in #1445
- fix(plugin-codex): cross-platform Codex hooks + Windows docs (#1440, #1441) by @joshuaswarren in #1443
- fix(tests): spawn config-contract validator via tsx cli.mjs, not the .bin shim by @joshuaswarren in #1446
Full Changelog: v9.3.613...v9.3.614