# Changelog
All notable changes to `ccd-cli` are documented in this file.
This changelog was introduced after `v0.4.1`. Earlier tags exist, but they were
published before a repo-local changelog was maintained here.
## [1.0.0-alpha] - 2026-04-03
### Added
- **OpenClaw reference adapter path and conformance coverage (ccd#360,
ccd#361).** The repo now ships a concrete OpenClaw execution-host reference
path in `docs/reference/openclaw-reference-adapter.md`, plus adapter-level
conformance coverage in `tests/cli.rs` for bounded startup injection,
pre-compaction refresh, checkpoint versus session close-out, stale takeover,
and approval routing.
### Changed
- **The OpenClaw adapter spec snapshot now reflects the shipped reference
path.** The canonical implementation snapshot now treats
`reference-adapter-openclaw` as mostly implemented: the runtime proof,
reference mapping, and conformance harness are landed, while a native
OpenClaw plugin/gateway package remains follow-on work.
## [0.9.0] - 2026-03-31
### Added
- **Directory-substrate session support (ccd#283, ccd#284).** CCD can now
attach, persist session state, and export handoff continuity for directory
projects that are not backed by a Git worktree, while keeping the same
fail-closed session loop semantics.
- **First-class pod identity rollout (ccd#300).** Pod identity is now part of
the landed operator model, with the corresponding policy/memory separation
and coordination-scope migration surfaces available through the CLI.
- **Structured session-boundary guidance from `ccd start` (ccd#270).** Startup
reports now tell host integrations whether the current continuity should
continue, refresh, or stop before execution.
- **Read-only memory recall provider seam plus shipped reference adapters
(ccd#309, ccd#310, ccd#311, ccd#312, ccd#266, ccd#313).** CCD now ships a
conformance-tested recall-provider contract with Mem0/OpenMemory and
Graphiti adapters, bounded startup recall, normalized provenance/temporal
hints, and the accepted recall-first provider boundary documented in the
repo.
- **External adapter trust labeling and reusable field filters (ccd#257,
ccd#260).** Machine-facing status and doctor surfaces can now return
filtered top-level JSON fields, and adapter-backed queue content is labeled
explicitly so host tooling can keep project truth and external context
separate.
### Changed
- **Git workflow coaching is split from the CCD kernel skills (ccd#285).**
`ccd-start` and `ccd-radar` stay focused on CCD state, while the shipped
`ccd-git-workflow` skill owns branch/worktree/commit/push/merge follow-through.
- **Public vocabulary now reflects the substrate-aware model more directly
(ccd#286, ccd#288, ccd#289).** The operator-facing docs and compatibility
surfaces now use project/workspace/substrate terminology more consistently
while preserving compatibility paths during the migration window.
- **Agent safety guidance is more explicit (ccd#258, ccd#271).** The canonical
safety contract, startup guidance, and failure remediation text now align
more tightly around fail-closed behavior and operator-visible next steps.
### Fixed
- **Directory-substrate handoff export and linked-session edge cases are more
robust.** This includes the handoff export fix from `ccd#284` plus clearer
remediation guidance when startup or session-state bootstrap fails in
non-trivial checkouts.
- **Machine-facing validation and doctor surfaces are less error-prone.**
`ccd doctor` now honors requested field filters correctly, and the expanded
validation coverage catches fail-closed input-path regressions earlier.
## [0.8.1] - 2026-03-28
### Added
- **Read-only `ccd status` session summary (ccd#252).** CCD now exposes a
no-write status surface that reports the current continuity phase,
recommended next command, git state, review state, and available telemetry
without mutating clone-local state.
- **Memory promotion and admission guidance in `ccd radar-state` (ccd#263,
ccd#264, ccd#265, ccd#267, ccd#274).** Radar now surfaces deterministic
memory candidates, self-contained promotion preview/apply actions, apply
requirements, and the new candidate-admission flow for escalating reviewed
learnings into durable memory.
- **Bulk GitHub priority scoping for backlog queues (ccd#251).** The GitHub
backlog adapter can now scope priority updates across multiple matching
items, making queue triage less single-item and less error-prone.
### Changed
- **Agent-facing backlog mutations are preview-first (ccd#254, ccd#255,
ccd#256).** `ccd backlog claim`, `ccd backlog set-status`, and
`ccd backlog complete` now require explicit `--write`, `ccd describe`
surfaces behavior metadata for machine consumers, and backlog status input
is constrained instead of accepting arbitrary strings.
- **Telemetry and codemap guidance are more explicit.** Session/focus cost
estimation now persists with clearer fail-closed behavior for ambiguous host
data, and the shipped start guidance more clearly explains codemap-aware
context narrowing.
### Fixed
- **Linked-worktree session bootstrap failures now explain themselves
(ccd#253).** `ccd session-state start` reports why first-run `state.db`
creation can fail under `.git/worktrees` instead of leaving the operator
with an opaque SQLite error.
- **`ccd radar-state` now points at the right handoff remediation (ccd#273).**
When the canonical clone-local handoff row is missing, radar reports the
real uninitialized state and suggests `ccd handoff write`, including the
active profile when it is non-default.
- **Memory and backlog edge cases are less confusing.** This includes the
memory scope write-target and recovery-doc fixes from `ccd#249` plus clearer
backlog queue activation and metadata errors from `ccd#250`.
## [0.8.0] - 2026-03-26
### Added
- **Codemap extension for structural summaries (ccd#233 / ccd#96).** CCD can
now ingest, store, and serve per-file codemap summaries through
`ccd codemap import`, `ccd codemap status`, `ccd codemap query`, and the
`ccd_codemap` MCP tool when built with the opt-in `extension-codemap`
feature.
- **Session intent signals and radar workflow hints (ccd#234 / ccd#100).**
Clone-local session state now tracks `general`, `research`, and `implement`
modes, and `ccd radar-state` can emit structured `workflow_hints` so host
skills can suggest a fresh implementation session without making CCD itself
a workflow engine.
### Changed
- **Dispatch continuity is now SQLite-only (ccd#232 / ccd#230).** The legacy
`focus.md`, `manifest.md`, and JSON fallback paths for dispatch state were
removed; the canonical dispatch DB is now the only read/write surface.
- **Canonical file-write tracing is broader.** `CCD_LOG=debug` now records the
destination path and write intent for dispatch, remember, and memory-promotion
writes, making file-surface mutations easier to audit during agent sessions.
- **Breaking: clone-local `state.db` user_version bumped from 3 to 4.** The
session table now persists `mode` (`general` / `research` / `implement`),
and `RADAR_STATE_SCHEMA_VERSION` is now `14`. Older `ccd 0.7.0` binaries
will fail closed against state upgraded by this release until the CLI is
reinstalled or upgraded.
## [0.7.0] - 2026-03-26
### Added
- **Structured memory scopes across clone, branch, and pod layers (ccd#225, ccd#111).**
The memory overlay chain now supports clone-local, branch-shared, and
pod-shared structured memory in addition to the existing profile and repo
layers. `ccd remember`, `ccd memory compact`, and `ccd memory promote`
gained the matching scope and promotion paths.
- **First-class multi-host pod scope (ccd#112).** Pod identity is now a native
kernel primitive rather than ad hoc workflow guidance, allowing one actor to
resume the same CCD profile across multiple hosts while keeping shared pod
state explicit.
- **Execution gates for session focus (ccd#227).** Clone-local execution gates
now live in `state.db`, with `ccd session-state gates ...` commands plus
`start`, `radar-state`, and `runtime-state export` surfacing the first
unfinished gate as the current attention anchor.
### Changed
- **Memory resolution and promotion now form a fuller kernel overlay ladder.**
Effective memory now composes profile -> repo -> pod -> branch -> clone for
the scopes available to a checkout, while reviewed promotion paths can move
learned state upward across those same boundaries.
- Runtime, compiled-state, and radar projections now include the new pod and
execution-gate surfaces, so continuity and operator-facing summaries track
the same canonical state that mutation commands write.
## [0.6.5] - 2026-03-24
### Added
- **Opt-in structured logging (ccd#217).** `CCD_LOG` env var enables structured
`tracing` output to stderr. Instrumented boundaries: command dispatch, DB
open/migration, git subprocesses, external adapter execution, `start`, and
`radar-state`. Default: off (zero overhead). stdout is never touched.
- Regression tests for stdout isolation with `CCD_LOG=debug` for both
`--output json` and `mcp-serve` JSON-RPC.
- `Debugging with Logs` section in the cheatsheet.
### Changed
- **Locality-neutral Ring 0 contracts (ccd#207).** Public JSON keys renamed from
`repo_focus` / `repo_memory` / `repo_focus_active` / `repo_focus_assignment`
to `locality_focus` / `locality_memory` / `locality_focus_active` /
`locality_focus_assignment`. Internal implementation names stay repo-shaped.
`KERNEL_CONTRACT.md` updated. **Breaking:** machine consumers of `ccd start`,
`ccd radar-state`, and `ccd runtime-state export` JSON must use the new keys.
- `CompiledStateStore` schema version bumped 3 to 4; `RADAR_STATE_SCHEMA_VERSION`
bumped 10 to 11 (was already 11 in 0.6.4 changelog, now effectively 12 after
the backlog dispatch migration).
- `ProjectionDigests` carries a serde alias for backward-compatible
deserialization of old `state.db` rows containing `repo_focus`.
- **Backlog dispatch state moved to SQLite (ccd#214).** Local dispatch
assignments now live in `state.db` instead of `focus.md`, completing the
extension-private storage migration.
- GitHub backlog bindings activated on `ccd backlog pull`.
- Local-markdown backlog adapter: tightened reference handling and normalized
continuity messages.
### Fixed
- GitHub Actions workflows bumped to Node 24 runtimes.
- Pituitary spec hygiene workflow added and hardened.
## [0.6.4] - 2026-03-23
### Added
- **SQLite clone-state kernel (ccd#172 / ccd#178).** Clone-local CCD runtime
state now lives in `state.db`, giving `start`, `doctor`, `radar-state`, and
session lifecycle commands a single native store for handoff, recovery, and
projection data.
- `ccd handoff write`, `ccd handoff write-recovery`, and related native state
export surfaces for explicitly authoring clone-local handoff and recovery
payloads without editing derived markdown by hand.
### Changed
- **Workflow ownership moved behind extensions.** Repo-scoped focus, dispatch,
backlog policy, and radar workflow coaching are now extension-owned rather
than kernel-owned, continuing the boundary split introduced in `0.6.3`.
- `ccd radar-state` now reports extension-owned workflow guidance and no longer
exposes the kernel-owned `backlog_cache` JSON surface. The radar schema is
now version `11`.
- The profile and repo overlay configuration surfaces were consolidated around
`config.toml`, reducing duplicate kernel/runtime config paths during startup
and migration flows.
### Fixed
- **Wrap-up safety around closed work (#180).** `ccd radar-state` once again
forces recalibration when the active branch, session assignment, or handoff
still points at closed backlog work, even after the workflow guidance moved
behind extension boundaries.
- `ccd doctor` now respects extension health severity instead of flattening
extension-owned workflow problems into generic kernel warnings.
- `--no-default-features` and release CI now validate the extension boundary
more strictly, preventing feature-gated regressions from shipping in the
standalone binary.
## [0.6.3] - 2026-03-18
### Changed
- **Backlog implementation extraction (ccd#108).** The shipped backlog command,
cache, and continuity implementation now lives under `src/extensions/`
instead of kernel-owned module paths.
- Core backlog consumers now import the extension-owned state and command
modules directly; the temporary `src/commands/backlog.rs` and
`src/state/backlog.rs` compatibility shims were removed in the same slice.
- The `ccd backlog ...-github` compatibility aliases remain available during
the adapter migration window, but the Rust source ownership now matches the
backlog extension boundary.
## [0.6.2] - 2026-03-18
### Changed
- **Native-canonical handoff runtime state (ccd#150).** Clone-local handoff
runtime truth now lives in `runtime_state/state.json`, while `handoff.md`
is treated as a derived human-readable export instead of a peer source of
runtime truth.
- `ccd handoff refresh` now regenerates the handoff export from canonical
native state and no longer imports edited markdown back into runtime state
except through the explicit legacy bootstrap path in `ccd start`.
- `ccd runtime-state export`, `ccd start`, `ccd doctor`, and `ccd radar-state`
now report handoff export staleness separately from canonical runtime state
instead of failing closed on drifted markdown exports.
## [0.6.1] - 2026-03-17
### Added
- **Backlog provider mismatch detection (ccd#142).** When the backlog adapter is
`local-markdown` with no active items and the origin remote points to GitHub,
`ccd start` emits a `backlog_provider_mismatch` warning with the
`pull-github` command hint.
- `github_remote_owner_repo()` helper to parse SSH and HTTPS GitHub URLs from
`git remote get-url origin`.
### Fixed
- `session-state start` now emits a "legacy session state detected" message
when encountering v2 session state files instead of being silent.
## [0.6.0] - 2026-03-17
### Added
- **Session-based dispatch identity (ccd#136).** Focus assignments are now keyed
by a CLI-minted session ID (`ses_<ulid>`) instead of the git branch name.
Sessions survive branch switches and detached HEAD. Pre-session branch-keyed
entries are adopted automatically by `session-state start`.
- **Explicit startup disposition (ccd#135).** `ccd start` emits a machine-readable
`disposition` field (`ResumeActiveContinuity`, `NeedsContinuityInput`,
`NoActiveContinuity`, `WorkflowAttentionRequired`) so skills can react to
startup state without parsing alerts.
- **Session continuity on checkout changes (ccd#137).** Detached HEAD and
landed-branch checkout states preserve session continuity instead of resetting
the handoff. Checkout snapshot drift is advisory only.
- **Continuity / workflow-signal separation (ccd#134).** Handoff freshness and
issue-reference drift are classified as continuity signals or workflow signals,
allowing the start and radar layers to prioritize them independently.
- `Session:` line in handoff Current System State, refreshed alongside Branch
and HEAD.
- `session_branch_drift` informational drift signal in radar when the session
assignment's recorded branch differs from the current git branch.
- `session-state start` and `session-state clear` perform focus-entry cleanup
(adoption, stale-session pruning) as lifecycle side effects.
### Changed
- `ccd init` renamed to `ccd attach` (`init` kept as a hidden alias).
- `ccd start` auto-offers `ccd attach` when the repo is not linked.
- `ccd attach` detects already-attached repos and short-circuits.
- Native profile and repo runtime mirrors for structured state access.
- `session_state.json` schema bumped to v3 (backward-compatible; v2 files
trigger a fresh session on next `session-state start`).
- Landed-branch dispatch skipping only applies in the pre-session branch-based
fallback; session-based dispatch takes priority.
- Focus-update errors in `session-state start` and `session-state clear` now
fail closed instead of being swallowed.
### Fixed
- Radar and doctor handoff freshness checks now use the staleness-gated session
ID, preventing stale sessions from influencing freshness comparisons.
- Doctor and drift propagate `session_state.json` parse errors instead of
silently falling back to no-session mode.
- Native runtime lifecycle values accept lowercase variants.
- Radar aligns with runtime handoff state for authored-first fixtures.
## [0.5.0] - 2026-03-15
### Added
- Unified backlog adapter execution boundaries, including built-in
`local-markdown` support and external-adapter fixtures.
- Actor-local intent, attempt-memory tracking, and `ccd start --check`
readiness surfaces.
- `ccd checkpoint` as an alias for `ccd radar-state`.
### Changed
- Start, radar, and handoff/runtime refresh flows are faster through the new
compiled-state and git-read fast paths.
- Repo focus now separates dispatch assignments from actor-local intent, and
missing backlog cache state is treated as optional instead of blocking start
and radar flows.
### Fixed
- Backlog adapter refresh and mutation paths fail closed more consistently
across provider switches and capability boundaries.
- `ccd start` and `ccd radar-state` now treat repo-focus assignments as the
primary issue-reference mapping and warn before stale closed issue numbers are
reused in handoffs or branches.
## [0.4.1] - 2026-03-15
### Added
- Provider-neutral backlog CLI entrypoints under `ccd backlog`.
- Backlog adapter capability discovery and normalized `claimed_by` handling.
- `ccd backlog promote-next`.
- `ccd remember` and the memory-transfer evaluation harness.
- Repository identity inspection surfaces with `ccd repo status` and
`ccd repo list`.
### Changed
- Reviewed memory compaction surfaces and deterministic lifecycle metadata.
- Runtime projections now exclude expired memory entries.
- Session startup and radar flows are faster and more explicit about recovery.
- Clone-local recovery surfaces and bundle preview support landed in the
runtime/session loop.
### Fixed
- Merged-branch handoff reset logic is more robust.
- Backlog cache refresh and focus cleanup paths are less error-prone.
- Skill binary resolution no longer falls back to stale worktree-local binaries.
## [0.4.0] - 2026-03-11
### Notes
- Baseline `0.4.x` release before the `0.4.1` backlog, memory, runtime, and
repo-administration follow-ons.
[1.0.0-alpha]: https://github.com/dusk-network/ccd/compare/v0.9.0...v1.0.0-alpha
[0.9.0]: https://github.com/dusk-network/ccd/compare/v0.8.1...v0.9.0
[0.8.1]: https://github.com/dusk-network/ccd/compare/v0.8.0...v0.8.1
[0.8.0]: https://github.com/dusk-network/ccd/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/dusk-network/ccd/compare/v0.6.5...v0.7.0
[0.6.5]: https://github.com/dusk-network/ccd/compare/v0.6.4...v0.6.5
[0.6.4]: https://github.com/dusk-network/ccd/compare/v0.6.3...v0.6.4
[0.6.3]: https://github.com/dusk-network/ccd/compare/v0.6.2...v0.6.3
[0.6.2]: https://github.com/dusk-network/ccd/compare/v0.6.1...v0.6.2
[0.6.1]: https://github.com/dusk-network/ccd/compare/v0.6.0...v0.6.1
[0.6.0]: https://github.com/dusk-network/ccd/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/dusk-network/ccd/compare/v0.4.1...v0.5.0
[0.4.1]: https://github.com/dusk-network/ccd/compare/v0.4.0...v0.4.1
[0.4.0]: https://github.com/dusk-network/ccd/releases/tag/v0.4.0