Skip to content

v2026.10.22

Choose a tag to compare

@github-actions github-actions released this 24 Oct 22:26
· 518 commits to main since this release
cc87cb3

Update now: run cleo self-update.

Highlights

  • Pi/CleoOS harness freeze (ADR-098).
    • cleo init and cleo upgrade no longer seed the CleoOS hub, and cleo admin scaffold-hub is hidden and deprecated.
    • CAAMP no longer defaults to Pi: Pi's registry priority is medium and the default exclusivity mode is legacy. With Pi and another high-tier provider installed, the default target is now that provider.
    • The @cleocode/cleo-os postinstall stops seeding .cant files and skills.
    • cleo tui and every caamp pi verb print a deprecation notice and otherwise work as before.
  • BRAIN and NEXUS.
    • NEXUS measures index freshness against the base branch and reports it on every index-sensitive answer. A query first refreshes a stale index inline when the size-scaled cost estimate allows it; on a large graph that refresh needs cleo run admission. An answer is refused with E_NEXUS_INDEX_STALE (exit 111) only when the index trails the checked-out HEAD by more than nexus.freshness.maxCommitsBehind (default 50), or the queried symbol is missing from a stale index. --allow-stale (nexus impact, nexus context) or CLEO_NEXUS_ALLOW_STALE=1 accepts the stale answer, and an answer from an index whose communities were skipped carries a warning.
    • Analysis is resumable, and an opt-in background reindex runs after merges (cleo nexus reindex-on-merge --enable).
    • Dead registry rows are reported. A registry row records its host, so projects clean never removes another host's rows.
    • Memory retrieval uses one fused ranking and skips auto, low-quality and invalidated rows on the vector path.
    • Accepted evidence links tasks to their commits, files and decisions in the BRAIN graph, with repository-qualified ids in multi-repo stores.
    • cleo docs add links documents with a documents edge.
  • Conduit freeze. The cleo conduit verbs, orchestrate conduit-* and the conduit-backed cleo agent verbs still work but warn that they are deprecated; agents message each other over AgentMBX (mbx_* tools, agentmbx send). CLEO no longer writes conduit messages: the conduit lifecycle hooks are not registered, spawn and handoff send no conduit events, and cleo event append defaults to the file transport. The unused cleo-conduit-core Rust crate is removed.
  • Freshness Sentinel repaired. The daily freshness sentinel runs again and fails honestly; it had failed every day since 2026-05-18.
  • Evidence.
    • Research and documentation tasks owe only the gates that fit them. Any code in their work still needs the code gates, and if a task's work can't be inspected it is treated as code.
    • Test and QA runs must have seen the task's implemented work.
    • pr:/ci: evidence is cached per repository, and pr:<owner>/<repo>#<n> names the repository.
  • node_modules symlinks are ignored. .gitignore patterns now cover the node_modules symlink a CLEO worktree links in, so git add -A can no longer commit it.

Also in this release

These shipped as commits, but their tasks are still open, so their changesets stay pending:

  • T13994, T13995, T13996: the three Pi/CleoOS freeze steps above. They stay open until the ADR-098 task T13993 completes.
  • T13666, T13667, T13949, T13951, T13981, T13986, T13987, T13991: merged, but their evidence is not recorded yet. T13991 also waits on T13987.

Added

  • a document attached with cleo docs add is linked in BRAIN by an llmtxt:<sha> --documents--> owner edge, written whatever brain.autoCapture says (provenance: T13985)
  • cleo docs add no longer writes a Doc attached memory observation; the document is linked by its documents edge (provenance: T13985)
  • cleo verify links a task to the commits, files and decisions its accepted evidence names, in the BRAIN graph (provenance: T13950)
  • Evidence file and commit graph ids carry a repository key for every repository but the store's primary one; cleo brain migrate-repo-ids --apply moves existing links (provenance: T14012)
  • memory find ranks one list across tables by recency and source, fuses vector and graph hits, and warns when the vector layer is unavailable (provenance: T13948)
  • NEXUS freshness reports how many commits the index trails the base branch, and its age (provenance: T14007)
  • Graph answers report indexed files gone from disk, and cleo doctor --all-projects flags stale NEXUS indexes per project (provenance: T14021, T13922)
  • NEXUS inline refresh is gated by a size-scaled cost estimate, not a 25-file cap and a 30% stale gate (provenance: T14014)
  • Opt-in background NEXUS reindex after a merge into the base branch (cleo nexus reindex-on-merge --enable) (provenance: T14010)
  • NEXUS analysis keeps its parse work across an abort, and honours its budget in every phase (provenance: T14009)
  • Graph answers carry data.freshness and fail with E_NEXUS_INDEX_STALE (exit 111) when the index is too far behind the base branch (provenance: T14008, T13922)
  • cleo run --urgent queues ahead of routine work, and a hooked git push is charged its measured peak (provenance: T13921)
  • Research and documentation tasks no longer owe testsPassed/qaPassed unless their work touches code (provenance: T14001, T14002)

Changed

  • core skills teach plan, execute, verify instead of RCASD stages and the IVTR loop (provenance: T13958)
  • cleo conduit, orchestrate conduit-*, nexus conduit-scan and graph living conduit-scan are deprecated and will be removed in the next release (provenance: T13982)
  • remove the unused cleo-conduit-core Rust crate (provenance: T13954)

Fixed

  • Budgeted retrieval no longer returns auto rows, low-quality or invalidated rows that only the vector search found (provenance: T13968)
  • cleo add --type epic no longer writes lifecycle rows or a .cleo/rcasd stub; orchestrate start records the research row without a stub file (provenance: T13944)
  • Evidence file nodes are keyed by the checkout that holds the file; clearer graph-link and lessons warnings (provenance: T14005)
  • E_IVTR_INCOMPLETE fixes and the parent-epic E_LIFECYCLE_GATE_FAILED fix no longer point at cleo go, cleo playbook run ivtr or cleo lifecycle complete (provenance: T13945)
  • Budgeted NEXUS analyses skip community detection instead of overrunning, parse-cache checkpoints leave the parse hot path, and parser limits are part of the cache identity (provenance: T14016)
  • An inline NEXUS refresh on a large graph asks cleo run admission even when it re-parses few files, with a footprint scaled to the graph (provenance: T14019)
  • cleo nexus status reports unreachable registry rows; projects clean --unhealthy matches them (provenance: T14011)
  • projects clean never removes a registry row whose project lives on another machine (provenance: T14013)
  • Auto-row quarantine guards are rule ids, not SQL; lessons survive a broken brain store (provenance: T14003)
  • CLEO stops writing conduit messages: no lifecycle hooks, no spawn or handoff events, and agent events default to the file transport (provenance: T13953)
  • spawn prompts send agents to AgentMBX for coordination and to cleo docs for planning documents; the CONDUIT subscription block and .cleo/rcasd paths are gone (provenance: T13943)
  • the parent-epic stage gate is opt-in (lifecycle.stageGate, default off), so strict projects no longer strand an epic's children (provenance: T13970)
  • The pr/ci evidence cache is per repository, and pr:/# names the repository (provenance: T13912)
  • A Claude Code turn end no longer ends the CLEO session; the SessionEnd hook does (provenance: T13913)
  • An admission wait closed by memory pressure names the host's largest memory users, and an install is charged one process (provenance: T13914)
  • cleo done --plan never takes test or lint targets from the working tree; a no-change-set task is told its doc or decision route (provenance: T13917)
  • A declared evidence.gitRoot no longer hides the task's worktree, so a test-run report produced there binds (provenance: T13926)
  • The first memory-pressure waiting line says when the wait gives up, and the named memory users leave out CLEO's own runs (provenance: T13965)
  • test-run and qa-run bindings set aside untracked files outside the change, and refuse at complete once one is committed (provenance: T14000)
  • A test-run or qa-run that never saw the task's implemented work is refused as its evidence (provenance: T14004)
  • The own-work search is reused per task within a process, skips done tasks in release plan, and reads origin branches (provenance: T14006)
  • Process-group lookup works on macOS when one pid is out of range (provenance: T14015)
  • Release note: re-verify pr/ci evidence recorded before the per-repository PR cache in projects that span repositories (provenance: T14018)
  • node_modules symlinks are ignored: .gitignore patterns drop the trailing slash (provenance: T14022)