Skip to main content

CHANGELOG.md

# Changelog

## v0.1.0 (2026-07-14)

Initial release: the coherence ladder for Elixir/Phoenix.

- Derived system map (`mix cohere.map`): contexts with public surfaces and
  hashes, Ecto schemas with types/enums/associations/embeds, Phoenix
  routes with LiveView unwrapping, Oban workers with queue + cron wiring
  from config, capability detection (Ecto, Phoenix, LiveView, Oban,
  boundary, Ash, Tidewave). Deterministic output — no timestamps, stable
  ordering.
- Intent cards (`mix cohere.gen.intent`): per-context authored intent,
  hash-bound to the context's public surface.
- The feature loop, three verbs: `mix cohere.design <slug>` scaffolds a
  draft design doc with its Existing ground (map slice + card constraints
  for anchored contexts) delivered onto the page; `mix cohere.check` is
  the one iterative command and CI gate; `mix cohere.complete <slug>`
  verifies every backticked ref in the design's Promised surface exists
  in the compiled app, then flips it draft→accepted with a dated log.
  Accepted designs are immutable history — supersede, never edit.
- Coherence check (`mix cohere.check`): stale-map detection with line
  diff, card surface drift with exact +/− function deltas,
  broken-reference checks; exit 1 for CI; `--accept` rebinds a card with
  a dated annotation. Design docs produce advisories only — drift on
  history is information, drift on intent is a bug.
- Work packets (`mix cohere.packet`): map slices + inlined cards +
  name-matched routes + runtime-verification pointers (Tidewave-aware).
  `--diff` assembles the packet for exactly the contexts the current branch
  touches — changed files mapped to contexts by reflection over compiled
  modules, not path convention; unmapped files reported, never dropped
  silently. `--base REF` sets the ref to diff against (default `main`).
- Ladder status (`mix cohere`) and scaffolding (`mix cohere.init`).
  `mix cohere.design` with no arguments lists designs with statuses; the
  ladder always states design status affirmatively when designs exist
  ("none in flight" is a claim, not an absence).
- Zero runtime dependencies; no LLM calls anywhere.