Skip to content

v0.6.4

Choose a tag to compare

@github-actions github-actions released this 23 Sep 15:53
· 353 commits to main since this release

Twelve fixes. Ten of them are one bug wearing different hats, and two come from Fusion field logs.

Tool results stop being cut at ingestion

compressToolResult was trimming tool output to 400 characters and 12 trailing lines as it was stored. The summary it returns is the tool_result turn, so whatever it dropped was gone — not deferred, not pageable. Twelve call sites took that bare default.

  • #477 — nine ordered listings (git log/status/branch, github pr/issue list, proc.list, window.list, browser.tabs, shell jobs) were cut to their oldest three to five rows with the header line gone. git log now returns 20 commits newest-first; proc.list keeps its PID PPID USER CPU% MEM% COMMAND header.
  • #470 — os.shell.run took the bare default while git.diff passed 64 KB, so the model could not read the end of a command it had just run. It now keeps the tail, and the wide budget is paid once on the step that consumes it rather than re-pasted into history.
  • #474 — skill.run_script dropped the exit: header first, so a script's success was invisible.
  • #475 — five MCP and vision sites discarded budgets their own code declared.
  • #473 — the loop veto was cut on the very sentence that tells the model what to do instead of repeating.
  • #472 — the forced reply quoted the no-progress streak and called it a refusal count.
  • #471 — the skills catalog truncated silently (17 of 33 skills on the reporter's install) and skills.catalogTokenBudget in config.json was parsed and ignored. Config version 70.

Memory

  • #469 — memory_links stayed empty on every multi-step turn: the allowlist was rebuilt after each tool batch and was empty by the time reflection read it. A skipped link generation now says why in the trace instead of being silent.
  • #468 — memory.embeddings.enabled was cleared by a transient daemon observation, permanently dropping hybrid recall to FTS5. The reconciler is one-way now: only a user action or a durable disk fact clears the opt-in.

Fusion

  • #487 — a worker's 45-minute clock started before it had a server slot, while the first-token budget is 30 minutes by design. A four-task fan-out on a two-slot machine lost its tail to timeouts with zero tool calls. The clock now starts at the first token; timeout and queued are separate statuses from max_steps, because their remedies differ; a task can size its own maxSteps / timeoutMs up to 4× the configured default; and every row carries queueWaitMs, so a worker nothing ever answered is distinguishable from one that queued.
  • #488 — two workers implemented the same symbol with opposite field meanings and both satisfied the contract, which checks names. provides[].shape carries one line of meaning into the consumer's brief.

Docs

  • #476 — 52 documented config defaults across 27 keys had drifted from the code, some by two orders of magnitude, with a guard test so they cannot drift again.

Verified against the built binary through a real terminal, not only in unit tests: listings, shell tails, skill-script output, the catalog marker, vision, MCP (including a 279-character resource URI round-tripping), the full veto text, memory links, and the embeddings latch measured side by side against v0.6.3 — where the flag flips to false within five seconds and here holds.