Skip to content

v1.12.0

Latest

Choose a tag to compare

@github-actions github-actions released this 25 Oct 11:42
· 2 commits to master since this release
4fe626e

Changed

  • Abstract samples members that already relate (#147). Before, each member came from a different random category, so the model was handed unrelated memories and asked what connects them. It always found something by climbing to a theme: one live run linked a failed MCP integration to a person's family history. Each attempt now seeds on a recent memory, and its members are the seed's graph neighbours (any relation but exemplifies) plus near neighbours at cosine ≥ abstraction_relate_floor (default 0.50). Members from new categories are preferred. With fewer than two related members, the model is not asked at all.
    • Why 0.50: on one store, random pairs scored p90 0.43 and edge-linked pairs a median of 0.37–0.42, so the graph carries most of the signal.
    • Existing abstractions are never members, so syntheses don't compound on syntheses.
  • An abstraction must name a concrete shared mechanism. abstract-synthesis v3 asks for JSON (mechanism, members, name, abstraction) and makes "none" the expected answer. The new checkMechanism keeps a synthesis only when its mechanism contains a term that at least two cited members' own text uses. The term must not be an abstract noun such as "complexity", "friction" or "identity", and in pools of 20 or more it must appear in no more than 25% of memories. Members that restate one fact (term-set Jaccard ≥ 0.25) count as one member: the first measured run wrote a third retelling of two near-identical memories. Refused syntheses are counted in phases.abstract.rejected.
  • The phase now writes few abstractions, on purpose. I measured 20 attempts on one store with qwen3:14b. With this prompt it wrote none: the model answered "none" for 18 related groups, and its one synthesis was a restatement, which was refused. A variant without the "most groups have none" line wrote 8, of which about half were the same theme-glue under concrete-sounding names. A phase that runs unattended should be quiet rather than wrong. Retrieval feedback is the better signal for loosening it later.
  • Abstractions start at salience 0.5 (ABSTRACTION_SALIENCE), down from 0.8, so an unverified synthesis no longer outranks most organic memories. They link exemplifies only to the members the mechanism spans, and each edge's evidence names the shared terms.