Skip to content

v0.85.1

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Nov 22:39

A patch that completes the curator's new form: the line on the day's wellbeing now keys on a class the model sets on each fact, not on a predicate name the sidecar never writes (#1456), and a recall quote survives when the guard cuts its source (#1451). The LongMemEval harness runs again (#1454), and the live voice path sends its app id like every other model call (#1455). A model twin swapped in right after its original was stamped now takes the seed of its library package (#1250). A recall block that only repeats an answer already in the window now counts as a repeat even when that answer carried its sidecar block (#1458).

Fixed

  • voice: the gpt_live session handshake names its app (#1455). The live model's session socket opened with the credential alone, so the phone was the one model request without an app attribution, and the duplex block refused x_title and http_referer, so a set could not add one. The gpt_live block now takes both keys and sends them on the upgrade request as X-Title and HTTP-Referer, as an llm cell does. When a key is unset, its header is not sent. The voice template now carries the attribution itself: x_title and http_referer sit at the top of params as env defaults (${OPENROUTER_X_TITLE:-MeClaw}, ${OPENROUTER_HTTP_REFERER:-https://meclaw.ai}), and a gpt_live block that names neither inherits them, so an instance a set switches to duplex through override_params names its app without knowing the keys. A value in the block wins.
  • LongMemEval recall harness: a question whose first session is empty is measured (#1454). The memory store builds its schema the first time it wakes, and only a written turn wakes it. A question whose first haystack session has no turns (23 of the 500 in longmemeval_s) read the store before that and ended after two seconds with no such table: episodes. Before the first write the snapshot is now zero without a read. After it, a missing table still ends the question. When a question ends early, the annotation sessions that are still running now stop after their current call. They used to keep calling the annotator for minutes, alongside the next question.
  • curator: recall_in_wall decides after the overflow guard, against the wall rows that are sent (#1451). Stage one only marks the recall pairs of earlier rounds as candidates; once the guard has cut the window, a pair is left out only when every quote it carries still stands raw in a wall row that survived the cut. Before, the check ran against the whole wall before the guard, so when the guard cut the quoted turn, the turn and its recall were both gone -- a recall whose quoted turn the guard cut now stays in the window. The pair leaves before the window is ordered, so a recall of the oldest sent round is no longer folded into the person's words and sent a second time while the snapshot names it dropped. The knob ships off, and off nothing changes. A new test runs the curator with all ten knobs of a set's curator form on at once: the overrides pass the door of a birth, the calls run clean, and each knob keeps the effect its own test claims.
  • curator: the wellbeing line keys on a class the model sets on the fact, not on a predicate (#1456). wellbeing_line opened only on a fact mark with the predicate health, or needs with the stance unfulfilled, but the sidecar writes predicates as open keys (has_symptom, reports_symptom, health_status, ...) and never wrote either, so the line never opened in a real conversation. A sidecar fact may now carry the closed class wellbeing: true when it says how the person is doing right now, in body or mind: the memory contract names it with two examples, the offered schema declares it as an optional boolean, extract-glue stages it only as true and interprets nothing, and curator/intake keeps it on the fact mark with fact_mark_kind "1". The line in ./history and ./policy (one text, byte for byte) now takes the newest classed fact of the day at any predicate; the dead health and needs branches are gone. Off (wellbeing_line "0", fact_mark_kind "0"), nothing changes.
  • mutation: a model twin swapped in right after its original was stamped still takes the library seed (#1250). The swap reads the original's provenance from the colony's registry index, whose rows the writer commits asynchronously; a swap that arrived before the writer had committed the original's stamp found no package and handed the twin the seed/ of the original's directory instead. A mutation now fences the writer before it reads the index, so every stamp enqueued before it counts.
  • curator: recall_in_wall matches a recall of an answer that carries a sidecar block (#1458). The wall's answers were hashed with their sidecar block, while the memory hive quotes only the spoken words, so no quote of an answer ever matched and every recall block holding one stayed in the window. The answer is now hashed without the block, cut at the same fence the splitter cuts. The knob ships off, and off nothing changes.
  • Template versions (#1451): third digit, curator@1.24.1; third digit for the pins that follow, assistant@3.12.6, builder@1.32.6, builder-librarian@2.2.108, cogny@5.14.1, figure@2.0.20, meclaw-os@2.4.6, member@2.9.6, memory-hive@3.21.2, org@2.2.21, simple-agent@2.2.18, talky@6.18.1.
  • Template versions (#1455): second digit, voice@2.9.0; third digit, freeswitch@3.1.4.