Peter Steinberger
8b0735e89f
refactor(memory)!: remove the QMD backend; builtin is the only memory engine ( #120936 )
...
* refactor(memory): remove qmd backend
Make builtin the sole memory-core engine, rename the retained session helper barrel, retire QMD config with doctor migrations, and remove QMD runtime/UI/policy surfaces.
* docs(memory): remove qmd backend guidance
Delete the QMD concept page, rewrite memory documentation for builtin retrieval, and remove QMD from navigation and taxonomy source.
* refactor(memory): remove qmd-only leftovers
* refactor(memory): finish qmd integration cleanup
* build(deps): align root string-width types
* build(deps): model root string-width tooling
* refactor(memory): align qmd removal ui and docs
* fix(memory): preserve qmd external paths in doctor
* test(memory): remove obsolete backend probe case
* test(plugin-sdk): refresh private type baseline
2026-08-09 03:05:47 -07:00
Peter Steinberger
8cb53c7b55
perf(doctor): keep bundled doctor contract closures dependency-light ( #120698 )
...
* perf(doctor): keep bundled doctor contract closures dependency-light
Doctor contract enumeration cold-loads each plugin's doctor-contract-api
closure via jiti, so a static value import of openclaw/plugin-sdk/runtime-doctor
pulled the state-db/kysely graph (~4.3s per closure) into
listPluginDoctorLegacyConfigRules / listPluginDoctorStateMigrationEntries.
- migrate all light doctor-contract closures (66 files) to the
dependency-light openclaw/plugin-sdk/runtime-doctor-migrations subpath
- voice-call: load detect/repairOpenClawStateDatabaseSchema* lazily inside
the migration bodies; keep only a type-only static runtime-doctor import
- matrix: split pure credential record shapes/normalizers into
credentials-state.ts so the doctor closure no longer imports the sync
plugin-state store through credentials-read
- guard: doctor-contract-closure-guard.test.ts now forbids static value
imports of runtime-doctor in closures alongside agent-runtime
* fix(matrix): keep credential revocation record type module-local
Knip production scan flags the export as consumer-less; the type is only
referenced by the exported union and revocation guard signature.
2026-08-08 17:51:31 -07:00
Peter Steinberger
7380875375
fix(memory): keep degraded status actionable ( #116074 )
...
* fix(memory): diagnose degraded auth owners
* fix(memory): use shared sqlite opener
2026-07-29 16:58:57 -04:00
Peter Steinberger
2942678214
refactor(memory): split retained state migrations ( #113542 )
2026-07-25 01:03:35 -07:00
Peter Steinberger
1e93465a2a
refactor(sqlite): enforce one database connection boundary ( #113418 )
...
* refactor(sqlite): centralize database opens
* test(sqlite): mock connection owner boundary
2026-07-24 15:15:17 -07:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Peter Steinberger
9d97e10efe
refactor: move non-session runtime journals to SQLite ( #109427 )
...
* refactor: migrate runtime JSONL state to SQLite
* chore: refresh SQLite migration validation
* fix: preserve safe audit migration order
* fix: sanitize retired audit archives safely
* fix: satisfy SQLite storage architecture gates
* fix: serialize plugin doctor state migrations
* fix: bound memory event SQLite projections
* fix: rotate memory event projections safely
* fix: preserve imported event retention age
* fix: harden memory event export projection
* fix: canonicalize memory event migrations
* fix: harden legacy journal migrations
* fix: report unsafe legacy journal paths
* fix: preserve journal ownership during migration
* fix: keep legacy file imports doctor-only
* fix: align SQLite audit CI coverage
* refactor: keep state helpers module-private
* fix: harden legacy state migration recovery
* fix: reconcile SQLite state audit migration
* test: use neutral audit redaction fixtures
* fix: close SQLite migration recovery gaps
* refactor: split audit migration recovery helpers
* test: prove completed audit pads stay out of backups
* fix: preserve audit record ordinals across blank lines
* fix: align SQLite audit CI contracts
* build: package SQLite audit E2E entries
* fix: preserve audit ordinals in backup snapshots
2026-07-18 11:42:14 +01:00
Josh Lehman
48863e1b83
fix: prevent doctor hangs on large Memory Core migrations ( #109355 )
...
* fix(memory): avoid quadratic FTS migration scans (#108442 )
* test(memory): narrow SQLite query-plan detail type
2026-07-17 12:40:00 -07:00
Peter Steinberger
e873a7f955
refactor(memory): move QMD coordination to SQLite ( #109636 )
...
* refactor(memory): move QMD coordination to SQLite
* chore: keep release notes in PR body
* chore: annotate lease SQLite primitive
2026-07-16 22:01:34 -07:00
Peter Steinberger
30ae21fca7
fix: prevent SQLite lock stalls and schema drift ( #108663 )
...
* fix: harden SQLite state storage
* build: allow strict SQLite migration SQL
* test: align SQLite and model-default assertions
2026-07-16 01:45:06 -07:00
Peter Steinberger
863443fac8
fix(memory): recover derived sidecar conflicts ( #108652 )
2026-07-15 23:55:07 -07:00
felirami
c1191cdf2f
fix(memory-core): preserve canonical cache rows during legacy migration ( #107243 )
...
* fix(memory-core): preserve canonical cache rows on migration
* fix(memory-core): guard cache migration dimensions
* fix(memory-core): validate cache embedding lengths
* fix(memory-core): validate cache migration dimensions
* refactor(memory-core): keep cache guard compact
---------
Co-authored-by: felirami <felirami@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 09:40:35 -07:00
Peter Steinberger
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Peter Steinberger
4da0eb19c5
fix(state): converge legacy startup migrations ( #107002 )
...
* fix(state): converge legacy startup migrations
Co-authored-by: Eva <eva@100yen.org >
* refactor(state): split legacy migration helpers
* fix(memory): persist legacy source acknowledgements
* fix(state): remove stale migration imports
* fix(memory): recognize numbered migration archives
* fix(matrix): downgrade archived migration residue
* fix(memory): satisfy migration lint
---------
Co-authored-by: Eva <eva@100yen.org >
2026-07-13 20:05:24 -07:00
Sally O'Malley
cdb58cafb5
fix(migrations): converge recoverable legacy state ( #104529 )
...
Signed-off-by: sallyom <somalley@redhat.com >
2026-07-11 11:19:12 -07:00
Peter Steinberger
eafe2a8d0b
refactor: consolidate duplicated plugin state and doctor migration plumbing onto SDK seams ( #99850 )
...
* refactor(plugin-sdk): add createPersistentDedupeCache and migrate channel presence caches
* refactor(matrix): adopt SDK approval reaction target store
* refactor(plugin-sdk): share doctor legacy-state migration fs helpers
* refactor(memory-core): dedupe qmd cache entry envelope validation
* chore(plugin-sdk): pin surface budgets for shared dedupe and doctor helpers
* test(matrix): use future approval expiry fixtures for reaction targets
* test(matrix): use future approval expiry fixtures for reaction targets
2026-07-04 01:51:03 -07:00
mushuiyu886
414c250af9
fix #95495 : [Bug]: 2026.6.9 silently relocates memory store with no migration, forcing a full re-embed (1499 files) with zero upgrade-time warning ( #95631 )
...
* fix(memory): import legacy sidecar indexes into agent db
* fix(memory): move legacy sidecar import to doctor migration
* fix(memory): restore sidecar vector rows during doctor migration
* fix(memory): keep legacy sidecar when skipping import
* fix(memory): keep legacy sidecar import within extension boundary
* fix(memory-core): keep legacy sidecar migration retry-safe
* fix(memory-core): backfill sidecar FTS rows
* fix(memory-core): preserve sidecar when vector import defers
* fix(memory-core): cover custom sidecar migrations
* fix(memory-core): keep legacy config migration under doctor
* fix(memory-core): reject sidecar metadata conflicts
* fix(memory-core): keep partial legacy config sidecars
* fix(memory-core): preserve partial config retries
* fix(memory-core): keep partial config task migrations
* fix(memory-core): avoid phantom sidecar agents
* fix(memory-core): reject incomplete sidecar indexes
* fix(memory-core): keep malformed sidecars retryable
* fix(doctor): use canonical state dir for plugin migrations
* fix(memory-core): honor disabled vector sidecar migration
* fix(memory-core): treat provider-none sidecars as fts-only
* fix(memory-core): preserve setup-failed sidecars
* test(memory-core): use non-mutating sort assertions
* test(memory-core): compare sorted chunk ids
* test(memory-core): compare sorted chunk ids
* test(memory-core): stringify sorted chunk ids
* fix(qa): skip chromium bootstrap for explicit browser channels
* fix(qa): skip chromium bootstrap for explicit browser channels
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-06-24 17:47:44 +08:00
Peter Steinberger
08ae0e6d29
refactor: store Zalo hosted media in plugin state
...
Move Zalo hosted outbound media metadata and expiry into plugin state, add SDK chunked hosted media storage, and keep CI/type/lint gates green after rebase.
2026-06-06 22:56:48 -07:00
Peter Steinberger
3f5e001844
fix: store memory-core dreams state in sqlite ( #91056 )
2026-06-06 18:38:45 -07:00