Skip to content

fix: improve LTM preference injection — skip relevance scoring, dedicated budget, meaningful confidence#358

Merged
BYK merged 3 commits into
mainfrom
fix/ltm-preference-injection
May 16, 2026
Merged

fix: improve LTM preference injection — skip relevance scoring, dedicated budget, meaningful confidence#358
BYK merged 3 commits into
mainfrom
fix/ltm-preference-injection

Conversation

@BYK
Copy link
Copy Markdown
Owner

@BYK BYK commented May 16, 2026

Summary

  • Preference-only fast path in forSession(): skips FTS5/vector relevance scoring for preferences (which are unconditional user directives, not contextual knowledge). Sorts by confidence DESC, updated_at DESC with no count cap — fixes cross-project preferences being silently dropped.
  • Dedicated 2% preference budget independent of the 5% context-bound LTM budget, so preferences no longer compete with gotchas/patterns for token space.
  • Meaningful confidence on create: ltm.create() and CuratorOp create ops now accept confidence. Curator prompt updated with explicit semantics (1.0=unconditional directive, 0.9=strong preference, 0.8=moderate, 0.6=mild).
  • lore data rerank CLI command to re-score legacy preference entries by directive-detection patterns. Also auto-runs after lore data recover.

Problem

Most user preferences were not injected into sessions because:

  1. Cross-project preferences had no safety net in forSession() and were dropped when they scored 0 on relevance (e.g., "never push to main" has zero FTS5 overlap with a React session)
  2. NO_CONTEXT_FALLBACK_CAP=10 capped first-turn preferences
  3. Preferences competed with context-bound entries for the same 5% budget
  4. confidence was always hardcoded to 1.0, making it useless for ranking

Files Changed

File Change
packages/core/src/ltm.ts Preference fast path, confidence param on create(), rerankPreferences()
packages/core/src/curator.ts confidence on CuratorOp create type, wired through applyOps
packages/core/src/prompt.ts Curator prompt with confidence semantics
packages/core/src/config.ts New preferenceLtm budget field (default 0.02)
packages/core/src/gradient.ts getPreferenceLtmBudget() function
packages/core/src/index.ts Export new function
packages/gateway/src/pipeline.ts Dedicated preference budget, simplified context-bound budget
packages/gateway/src/cli/data.ts lore data rerank command, auto-rerank after recover
packages/core/test/ltm.test.ts 11 new tests covering fast path, confidence, and reranking

Testing

  • 1553 tests pass, 0 failures
  • All 4 packages typecheck clean
  • After deploying, run lore data rerank to fix existing preference entries

BYK added 3 commits May 16, 2026 11:56
…ated budget, meaningful confidence

Preferences were silently dropped because cross-project entries had no safety net
in forSession() and relevance scoring (FTS5/vector) penalized generic directives
like 'never push to main' that have zero keyword overlap with session context.

Changes:
- Add preference-only fast path in forSession() that skips relevance scoring
  entirely, sorts by confidence DESC then recency, and has no count cap
- Give preferences a dedicated 2% budget independent of the 5% context-bound
  LTM budget so they no longer compete with gotchas/patterns
- Add confidence parameter to ltm.create() and CuratorOp create type so the
  curator can set meaningful confidence (1.0=directive, 0.9=strong, 0.8=moderate)
- Update curator prompt with explicit confidence semantics
- Add rerankPreferences() to re-score legacy entries by directive-detection
  patterns and 'lore data rerank' CLI command
- Auto-rerank after 'lore data recover' so imported entries get proper confidence
…d confidence in dedup, deduplicate budget function
@BYK BYK merged commit 983f866 into main May 16, 2026
7 checks passed
@BYK BYK deleted the fix/ltm-preference-injection branch May 16, 2026 12:08
@craft-deployer craft-deployer Bot mentioned this pull request May 16, 2026
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant