Skip to content

v0.9.31 — one-voice skills, sharper search, smear detection

Choose a tag to compare

@mironmax mironmax released this 28 Jul 08:56
· 239 commits to main since this release

Skills collapsed to one voice

kg-capture and kg-recall folded into kg-core, following the context-engineering shift for Claude-5-generation models: judgment-based instincts over rule lists, no doctrine repeated across layers (tool mechanics live only in the kg_* tool descriptions; the session protocol only in the preload header). Always-loaded skill text drops ~60%. A sandboxed A/B bench (Sonnet, 21 runs) confirmed equal task outcomes at about half the output tokens, with zero unnecessary searching. The description's longest instinct is deliberately search below the surface — a rich graph buries needed facts under fresher work, and a node found when truly needed earns the usefulness credit that keeps it alive.

Search core sees more and weighs better

Shared by kg_search and ambient recall: tokens contribute their ./_- subtokens, terms match through a light stem (schedule ≈ scheduling), adjacent subtokens form bigram terms with their own co-occurrence IDF, occurrences are field-weighted (id ×3, gist ×2, notes ×1 — a node about a concept outranks one that mentions it in passing), and IDF is sharpened so one term naming the right node isn't outvoted by several dull ones. Recall additionally gates on evidence (corroborated, near-unique, or named by the node's id/gist — lexical strays stay silent) and injects hits sharpest-first.

Write-side nudges

Creating a node probes its id + gist against its own graph through the same pipeline. A near-duplicate gets named with a fold-in suggestion; a gist that re-describes an entity the graph already names gets "an edge to it beats re-describing." Nudges only — the write always proceeds.

Smear detection and entity consolidation

Why search kept missing "project-central" vocabulary: chronicle-style capture re-describes entities in prose until IDF sees a saga, not a signal. The DEBT: line now reports smeared terms (term×count→hub), and /kg-maintain gains category 1: consolidate exactly one smeared entity per pass — durable facts into the hub, satellites reduced to their delta plus an edge. Capture doctrine gains the matching instinct: name things once.

Fixed

  • source=fork (and any future SessionStart source) now recovers the KG session from transcript markers instead of re-preloading on top of inherited context — only clear hard-resets.

Tests: tests/test_v0931.py (31 assertions); full suite green. Retuning validated by an offline replay of two weeks of real session prompts against real graphs.