Browse documentation

Core concepts

Design transitions

Follow the design-mode state flow from conversation to crystallized plan, critique, approval, and execution.

Full source guide View source on GitHub

A design session separates discussion from execution. The user keeps control of the transitions that can create or execute a plan.

State flow

design session
  -> conversation
  -> crystallized plan
  -> plan critique
  -> approved plan
  -> execution

Use /design to enter design mode. Use /crystallize to create a typed plan. Use /approve only after the current plan passes review.

Manual and agent requests

The design agent can request crystallization or approval through host transition tools. The manual and agent paths use the same controller.

Transition Manual command Agent request
Create a plan /crystallize crystallize_design
Approve a plan /approve approve_design

An agent request queues a host transition. It does not bypass plan validation, critique, persistence, sandbox policy, or user permissions.

User authorization

The design agent can request a transition only after the user explicitly asks for that transition.

The agent must not decide by itself that a conversation is complete. It also must not approve a plan only because the critique has no blocker.

Approval availability

Splice exposes approval to the design agent only when:

  • a current plan exists; and
  • the current critique has no required fix.

The user command follows the same checks.

One transition per turn

A design turn can queue one transition. A second request in the same turn returns an error and does not replace the first request.

Splice starts the transition only after the design turn completes successfully. A failed or canceled turn does not start it.

Create and approve in one request

The crystallization request can set approve_if_ready after the user asks for both operations.

Splice approves only when:

  • the design turn completed;
  • the plan passed typed validation;
  • the critique passed typed validation;
  • the critique has no required fix; and
  • lifecycle state was saved.

Any failure stops the sequence at that point.

Revision identity

A revised plan keeps the current plan family ID. Its revision number increases. Approval refers to the current saved revision.

This behavior keeps review history connected across several crystallization attempts.

Audit fields

Design lifecycle events record whether the user command or design agent requested the transition. Older sessions without this field remain readable.

The transcript labels the request source so the user can distinguish a command from an agent request.

Failure behavior

Splice rejects these operations with a named error:

  • a malformed transition request;
  • a transition during an active run;
  • approval without a current plan;
  • approval with a required critique fix; and
  • approval without a saved current revision.

A rejected transition does not silently create another plan or start execution.