v2026.5.113
·
1406 commits
to main
since this release
Features
- cleo tree --human: default footer legend (icons + counts) — JSON unchanged (T10114)
- B1 typed render contracts — TreeResponse, TableResponse, ListResponse, RenderableEnvelope (T10126) (T10138) (T10139) (T10140) (T10141) (#531)
- B2 typed icon enums — StatusIcon, KindIcon, BadgeIcon, RelationIcon with ASCII fallback (T10127) (#543)
- B3 static UI primitives — Tree, Table, Section, Badge, Legend in @cleocode/animations/render (T10128) (T10142) (T10143) (T10144) (T10145) (T10146) (#549)
- B5 renderEnvelopeForHuman() public API + (command, kind) → renderer registry + generic fallback (T10130) (#544)
- B9 generic cleo tree — walks parent + groups edges to full depth, KindIcon + ⊂ relation prefix (T10134) (#563)
- cleo backup recover brain CLI verb + operator runbook (Saga T10281 SG-BRAIN-DB-RESILIENCE) (T10304)
- db-inventory SSoT artifact + contracts type (T10305)
- cleo doctor db-substrate — fleet/integrity/orphan walker (Saga T10281 / Epic T10282) (T10307)
- Orphan project-root DB detection in cleo doctor db-substrate (Saga T10281 / E1) (T10308)
- cleo doctor legacy-backups — retention walker + ADR-013 §9 policy (Saga T10281 / Epic T10282) (T10309)
- doctor db-substrate: per-DB pragma drift detection (Saga T10281 / Epic T10283) (T10310)
- cleo doctor db-substrate — per-DB Drizzle migration coverage cross-check (Saga T10281 / Epic T10283) (T10311)
- Pin SQLite version + reference upstream bug-tracker in specs/sqlite-pragmas.json (T10313)
- ratify .cleo/backups/sqlite/ as the canonical SQLite backup path (T10315)
- vacuumIntoBackupAll covers every DB_INVENTORY entry (Saga T10281 / Epic T10284 / E3-BACKUP-RECOVERY) (T10317)
- Generalise the brain.db recovery pipeline to
cleo backup recover <role>for every DB in DB_INVENTORY (Saga T10281 / Epic T10284) (T10318) - cleo backup verify — per-DB freshness + integrity walker (T10319)
- doctor db-substrate: cross-DB orphan-row report (5 invariants I1-I5) (T10323)
- schema: @cross-db JSDoc tag + lint gate + ADR-068 charter rule (Saga T10281 / Epic T10285 E4-DB-CROSS-LINKS) (T10324)
- extend TaskType union to include 'saga' per ADR-083 §2.5 (Saga T10326 W1.A) (T10328)
- widen TASK_TYPES Drizzle enum + reversible saga migration (T10329)
- retype assertSagaInvariantI3/I5/I7 against SagaTask with dual-shape window (T10330)
- central invariants registry + ADR-073 I1-I8 registration (T10335)
- enumerate ADR-070 ORC-### codes + register in central substrate (T10336)
- R3 Zod schema for ADR-051 evidence atom grammar + GATE_EVIDENCE_REQUIREMENTS (Saga T10326) (T10337)
- brain writer-locking: single-writer chokepoint via worker thread (Saga T10281 / Epic E5) (T10351)
- cleo docs add strict flag validator (closes T10238) (T10359)
- T10361 E3.3: docs add similarity warn (closes T10167) (T10361)
- T10366 E2.1: DocKind Writer Registry foundation (T10366)
- T10367 E2.2: cleo docs add --type changeset delegates to writeChangesetEntry (T10367)
- feat(docs): wire slug allocator preflight into docs add CLI (T10386 recovery) (T10386)
- T10392 E1.1: central slug allocator chokepoint (T10392)
- TemplateManifest contract types + Zod schemas (Saga T9855 / ADR-076) (T9875)
Fixes
- auto-recover malformed brain.db via snapshot restore (T10303)
- doctor db-substrate auto-quarantine on integrity_check failure (T10312)
- vacuumIntoBackupAll brain backup gap — eager-open via openCleoDb chokepoint (Saga T10281 / E3-BACKUP-RECOVERY) (T10316)
- openCleoDb brain misroute (T10397) + project_id consistency gate (Saga T10281 / Epic T10285) (T10322) (T10397)
- retention discipline for brain_weight_history + brain_plasticity_events (T10348)
- cleo tree --human emits canonical box-drawn tree in non-TTY (was empty) (T10352)
- T10389 E1.4: cleo docs/changeset add worktree-aware routing (closes T10365) (T10389) (T10365)
- HOTFIX: co-locate db-inventory.json in @cleocode/contracts to fix v2026.5.109 install regression (T10399) (T10305)
- lifecycle hook walks task_relations.groups for saga auto-close (T10425)
Refactors
- B4 migrate format-helpers (kvBlock, dataTable, truncated) from packages/cleo to packages/core/render (T10129) (#540)
- B6 decompose system.ts (1302 LOC) into packages/core/src/render/{session,orchestration,brain} (T10131) (T10147) (T10148) (T10149) (#560)
- B7 decompose nexus.ts (1055 LOC) into packages/core/src/render/nexus/{graph,contracts,audit} (T10132) (T10150) (T10151) (T10152) (#551)
- B8 decompose tasks.ts (371 LOC) into packages/core/src/render/tasks (T10133) (#556)
- Sweep production saga callsites from labels.includes('saga') to isSagaType / type==='saga' (Saga T10326 W2.B) (T10331)
- release/invariants/registry.ts becomes consumer of central INVARIANTS_REGISTRY (T10339)
Documentation
- B12 finalize ADR-077, update ct-cleo skill (Tier-0), add Human Render Contract to CLEO-INJECTION (T10137) (#561)
- amend ADR-068 charter — 12-row inventory + nested-nexus flag (T10306)
- ADR-085 — Cross-DB Invariants Catalogue (Saga T10281 / Epic T10285) (T10320) (T10285) (T10281)
- ADR-086 — nested ~/.local/share/cleo/nexus/ disposition (BAN) + migration tool + runtime warning (Saga T10281 / Epic T10285) (T10321)
- Amend ADR-073 §4 to retire 'Saga is NOT a TaskType' (forward-points at ADR-083 §2.5); add SG- display preservation snapshot tests (cleo renderers + core toTreeKind) proving both saga storage shapes render identically (Saga T10326 W3.B) (T10333)
- T10353 E4.1: audit cleo docs/changeset CLI verb matrix (T10353)
- T10354 E4.2: audit llmtxt SDK import-edge surface across CLEO (T10354)
- T10355 E4.3: gap verdicts (CLEO vs SDK responsibility) (T10355)
- T10356 E4.4: no upstream llmtxt issues filed (degraded path) (T10356)
- T10357 E4.5: ADR-079 docs-SDK boundary contract (T10357)
- T10358 E4.6: E4 closure handoff (T10358)
- T10370 E2.5: ct-documentor + ct-docs-write reference WriterRegistry SSoT (T10370)
- T10390 E1.5: global slug namespace decision + ADR-076 amendment AMD-001 (T10390)
Tests
- B11 renderEnvelopeForHuman perf contract — 100/1000/10000 rows + 100/1000 nodes (T10136) (#559)
- integration regression — chokepoint auto-recovery on malformed brain.db (T10302)
- Idempotency contract tests for brain/conduit/llmtxt/manifest DBs (Saga T10281 / Epic T10283) (T10314)
Chores
- B10 CI gate 'Stdout Discipline Lint' — prevents render logic leaking back into packages/cleo (T10135) (#569)
- T10294 spike: reproduce slug collision + RCA + decision (T10294)
- CI gate scripts/lint-saga-label-anti-pattern.mjs blocks new labels.includes('saga')/hasSagaLabel/isSagaEpic/SAGA_LABEL sites; baseline pins 24 residuals (T10332)
- T10338: CI gate scripts/lint-invariant-registry.mjs validates registry/ADR symmetry (Saga T10326 R4) (T10338)
- T10369 E2.4: CI gate enforces one writer per DocKind (T10369)
- T10371 E5.1: migrate T10179/T10203 manual-write workarounds into SSoT (round-trip parity test) (T10371)
- T10372 E5.2: manual-write sweep audit script for canon.yml rawMdPaths (T10372)