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.