codsh 0.23.0 — Mission Contract: `/ship` that won’t silently drift

codsh is a DeepSeek-native terminal coding agent on open dsh. It is not a Claude Code env wrapper.

The hook stays the same: /ship takes one sentence to verified code.

0.23.0 ships the Mission Contract control plane for that loop — so acceptance criteria stay sealed, drift blocks the run instead of rewriting the goal, and delivery needs recorded evidence.

What changed in 0.23.0

When Gate 1 confirms the spec, /ship compiles a machine-checkable Mission Contract (mission.contract.json) from the sealed Main Track, Out of Scope, and acceptance criteria.

After seal:

  • Immutable — Main Track, Out of Scope, grill decisions, original wording, acceptance criteria, and the contract JSON. Protected writes are refused; external drift stops the run and stays on disk for inspection.
  • Alignment Gate — refuses writes that lack requirement mapping or hit immutable memory.
  • Drift Detector — scores plan/action drift against the seal; a rewritten Main Track is a blocker, not an accepted rewrite.
  • Verifier — matches acceptance criteria to recorded evidence. Delivery does not complete without it.

Also in this release: wayfinder before the grill interview (destination + open decisions, separate from implementation), and tighter parent/subagent coordination — one parent-owned ticket per turn, fresh-context children for investigation / landing / review, parent keeps questions, gates, and final proofs.

npm: codsh-cli + codsh-bundle 0.23.0.

Why this matters vs “just chat a plan”

Ad-hoc agent plans live in conversation memory. They drift. Acceptance becomes vibes.

/ship keeps the human projection in Markdown and the runner-owned contract on disk:

  1. Pre-flight → wayfinder → grill
  2. Spec (Gate 1) → Tickets (Gate 2)
  3. Landing (TDD) → evidence-based Done

While work is in flight you get a panorama: TTY overlay (Ctrl+G), a ticket-count teaser with the local Web flowchart URL, and the flowchart itself — /ship does not auto-open a browser.

Coming from Claude Code / Codex? Different harness, different product. Redirecting Claude Code at DeepSeek with env vars works; this is the native path on dsh. Map what maps / what’s missing on issue #64.

What /ship builds (gallery)

Every gallery project started from a one-sentence request. Real screenshots and playable results: blackman99.github.io/codsh/gallery.html

Medal of Honor — WWII browser game from one  raw `/ship` endraw  sentence

International mall —  raw `/ship` endraw  gallery still

(Publishing: upload local PNGs from /workspace/codsh-assets/gallery-0.23.0/ as cover + inline if Dev.to prefers hosted uploads.)

Install (60 seconds)

npm install -g @deepseek-ai/dsh codsh-cli
export DEEPSEEK_API_KEY=# or any OpenAI-compatible route via ~/.dsh/settings.yaml
codsh

Node ≥22.19. Already on a matching dsh? npm i -g codsh-cli is enough.

Then:

/ship let long diffs open in a pager instead of scrolling past

For tiny edits, plain chat or ⇧Tab plan mode is enough — /ship is multi-phase and burns tokens on purpose.

Links

Early project. Sharp edges welcome — especially Windows (#62) and third-party endpoints (#63).

Leave a Reply