Repository navigation
v2026.10.22
·
518 commits
to main
since this release
Update now: run
cleo self-update.
Highlights
- Pi/CleoOS harness freeze (ADR-098).
cleo initandcleo upgradeno longer seed the CleoOS hub, andcleo admin scaffold-hubis hidden and deprecated.- CAAMP no longer defaults to Pi: Pi's registry priority is
mediumand the default exclusivity mode islegacy. With Pi and another high-tier provider installed, the default target is now that provider. - The
@cleocode/cleo-ospostinstall stops seeding.cantfiles and skills. cleo tuiand everycaamp piverb 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 runadmission. An answer is refused withE_NEXUS_INDEX_STALE(exit 111) only when the index trails the checked-out HEAD by more thannexus.freshness.maxCommitsBehind(default 50), or the queried symbol is missing from a stale index.--allow-stale(nexus impact,nexus context) orCLEO_NEXUS_ALLOW_STALE=1accepts 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 cleannever 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 addlinks documents with adocumentsedge.
- 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
- Conduit freeze. The
cleo conduitverbs,orchestrate conduit-*and the conduit-backedcleo agentverbs 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, andcleo event appenddefaults to the file transport. The unusedcleo-conduit-coreRust 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, andpr:<owner>/<repo>#<n>names the repository.
node_modulessymlinks are ignored..gitignorepatterns now cover thenode_modulessymlink a CLEO worktree links in, sogit add -Acan 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 addis linked in BRAIN by anllmtxt:<sha> --documents--> owneredge, written whatever brain.autoCapture says (provenance: T13985) cleo docs addno longer writes a Doc attached memory observation; the document is linked by its documents edge (provenance: T13985)cleo verifylinks 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 --applymoves 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-projectsflags 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.freshnessand 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 runadmission even when it re-parses few files, with a footprint scaled to the graph (provenance: T14019) cleo nexus statusreports unreachable registry rows;projects clean --unhealthymatches them (provenance: T14011)projects cleannever 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)