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.checkis 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;--acceptrebinds 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).--diffassembles 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 REFsets the ref to diff against (defaultmain). - Ladder status (
mix cohere) and scaffolding (mix cohere.init).mix cohere.designwith 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.