You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Changed
Local-mode brain_search now runs the full retrieval stack. After rebundling the in-process
engine against the INTKB upgrades, local search runs native-FTS5 + qmd reciprocal-rank fusion
inside adapter.query(), then replicates the API's freshness/category rerank in src/local-server.ts (read-only store lookup for {category, updatedAt}, fused scores normalized to [0,1] before the freshness multiply, raw-order fallback if the store can't open). Local mode stays
network-free while matching the team path's ranking; two 2026-07-16 incident queries that returned 0
hits now return the correct governed memory with a qmd:// citation. (#48)
Added
Per-platform install instructions. The README and onboarding/README.md now spell out that the
plugin runs in Claude Code or Cowork (same /plugin install), takes a manual mcpServers
config on Claude Desktop, and cannot run in claude.ai in a browser or the phone apps — plus a Windows path (/plugin commands + %USERPROFILE%\.teamkb\team.json) alongside the macOS
one-click installer.
Fixed
SessionEnd multi-learning slots + hook wiring.deriveCandidateId now takes learningIndex (0..4): key = (tenant, sessionId, session-end, index) so up to 5 learnings
per session stay distinct while re-distill of the same index collapses. Autocapture hook
resolves session_id / sessionId / transcript-path fallback and requires brain_capture({ sessionId, learningIndex }) in the distiller prompt. Client no longer
invents already_exists from bare HTTP 200 without intake. Skill docs corrected (inbox
does dedupe at intake).
Session-stable capture idempotency + frozen outbox contract (Property 1/2 seam). deriveCandidateId uses session keys when sessionId is provided; without sessionId keeps
content-hash UUIDv5 for manual /brain-save. Outbox freezes final POST body; drain replays
file bytes only. Surfaces intake / alreadyExists from the server.
/brain now retries with keywords when a full-sentence question returns nothing. Retrieval is
keyword-AND, so a natural question ("what did the team ship this week?") could return zero even when
the topic is well covered — a new user running the suggested proof query saw an empty result and
assumed the setup was broken. The /brain skill now drops filler/question words and retries once
with the strong keywords before reporting empty, and the onboarding proof query is now a keyword
query (shipped this week) in the README and the macOS installer. (The deeper retrieval-side
OR-fallback is tracked separately.)
README + GitHub description corrected for rebundled local retrieval and the two-mode network
story. The brain_search tool-surface row now states local search runs native-FTS5 + qmd RRF
fusion then a freshness/category rerank (it was silent on both); the stale governed-second-brain
umbrella links point to bobs-big-brain-umbrella; and the blanket "No daemon, no network"
description becomes "local needs no daemon or network; team connects to the one brain over your
tailnet" (the old line mis-described team mode). (#49)
Added (internal)
Advisory MiniMax-M3 two-lane PR reviewer (.github/workflows/minimax-review.yml + REVIEW.md).
A defect lane (secret/credential leaks, mode-boundary breaks, rebundle drift, honesty-word
violations) and an adversarial claims lane (audits the PR description + changed docs against the
actual diff). Advisory only — never a required check; uses the fork-safe pull_request trigger with
a same-repo guard so forked PRs never receive the API key. (#47)