/mold
Ceremony scales to the job. The Bounds pass picks one of three tiers from references/tiers.md: Quick writes a validated mini-spec, Light runs only the dialogue modes the open forks need, and Full runs the whole Flow below. Saving a spec needs no extraction approval. Cook still needs an explicit user request. /cheese's tier-1 escalation enters mini-spec mode; see ## Agent-invoked mini-spec mode.
Flow
- Bounds pass — open the
Goal / Decided / Asking / [AGENT-DECIDED]ledger with the goal pinned as one sentence; only an explicit user fork changes it. Split it intoG-nclauses (references/handshake.md§ Goal coverage). Map every input's goals and non-goals as one[AGENT-DECIDED]line; ask the user only when the goal is genuinely unknown or a leverage trigger fires. Run the shape check, then announce the tier with its reason (references/tiers.md). Quick exits here to## Agent-invoked mini-spec modewithout a write-approval turn. Upgrade the tier whenever the evidence changes; never downgrade silently. - Route — choose the secondary mode from
references/modes.md, announce it, and correct false premises first. - Dialogue — consequential forks are the user's to pick. A fork is consequential per the leverage line in
../age/references/voice.md. Every other fork is[AGENT-DECIDED]. Supply options, trade-offs, and evidence before you ask. Ground each critical claim through code, the Validate Cycle, or a Prototype Cycle. Resolve every contradiction. Render the decision map after three consecutive fork questions, or on request. - Sketch — For work across modules or with a new public interface, run
references/shape-check.md. Bind identity and role nouns to code referents. Record the Placement block; no bodies. - Plan and validate — run the fresh-context fork-coherence taste test with
python3 skills/mold/scripts/mold.pyz taste-test; a failure reopens only named forks, and the third failed verdict stops. The taste review guides the spec but is not a Cook execution reference. For bound curd work, dispatch a typedPlannerRequest, validate itsPlannerResultWriterView(one retry, then save without runnable inputs), and normalize on the host. A clear single-curd task can instead use standalone Cook without a planner. Show semantic curds and waves before any Cook choice. Seereferences/curdle.md§ "Typed planner dispatch". - Readiness check — Before saving, run the coherence self-check and strict spec validation. Save a draft when unresolved parent work remains; record each hold in
execution_holds:. Finalization refuses ready while an entry remains. User approval is not a prerequisite for writing. Before Cook, require an explicit user selection of scope and route. Seereferences/handshake.mdandreferences/early-curds.md. - Curdle — Resolve the durable spec path with
python3 skills/mold/scripts/mold.pyz artifact-path specs <slug>and readpathfrom its JSON reply. Write the validated draft and read it back. Retain typed plan evidence and unresolved holds. Write local issue drafts and durable decisions; publish follow-ups only after their own approval. A concrete bounded curd may usereferences/early-curds.mdwhile Mold continues shaping its parent. The selected spec path can enter standalone Cook; bound curd execution also receives validated direct refs, never a pointer. - Offer Cook or keep shaping — after reconciliation, run
python3 skills/mold/scripts/mold.pyz curd-count. A saved draft is not an execution request. If the user selects bound curd execution, runscripts/mold.pyz finalizeand pass only ready direct inputs. A standalone clear task can enter Cook by spec path without machine finalization. Otherwise keep shaping or stop without a Cook command.
Portability: rules. Slash commands are host renderings, not the control model.
Follow-up candidates
Every non-goal and explicit dialogue deferral becomes a [FOLLOW-UP?] follow-up candidate. Dispose of the set before a runnable Cook handoff; details: references/handshake.md § Follow-up disposition.
Modes
| Mode | Use when | Goal |
|---|---|---|
| Explore | The idea is vague | Identify the real problem and pain point |
| Ground | A file, bug, or existing doc is named | Verify facts against evidence |
| Shape | The goal is known but approach is open | Compare viable options (Do Nothing always included) |
| Sketch | Interfaces or module boundaries matter | Lock responsibilities and seams |
| Grill | A favoured approach needs stress-testing | Steelman each item, then put every design-changing call to the user as a fork |
| Diagnose | A symptom, failure, or trace is supplied | Build a Loop → reproduce → hypothesize → confirm root cause |
Modes: references/modes.md. Evals: references/evals.md. Canvas: review-canvas.md.
Agent-invoked mini-spec mode
/cheese's tier-1 escalation calls /mold after the call site passes all Cook fast-path checks. The Quick tier enters the same mode without a write-approval turn. It produces a validated draft without design dialogue. Return the spec path. After the spec validates, show it and ask one direct Cook question. On explicit selection, dispatch /cook --spec <path> for clear standalone work; do not invent a pointer or require a planner. Append --hard when the user passed it.
The full coherence checklist does not run in this mode. The agent-introduced-scope check still runs implicitly. Every distinguishing noun must come from the user's input or tier-2 /culture//briesearch synthesis. Never add one silently.
Full procedure, the mini-spec schema, and the ## Provenance rules: references/mini-spec-mode.md.
Preferred tools and fallbacks
Call source-code search, read, and edit backends according to code-intelligence-routing.md. Shape checks use semantic caller search plus dependency context; procedure: references/shape-check.md.
Mold-specific tools beyond source-code routing:
| Need | Prefer | Fallback |
|---|---|---|
| External validation | /briesearch with Context7/Tavily |
user docs, repo docs, or note as unverified |
Wiki grounding (Ground entry + decision points; scope per references/grounding.md § When to probe) |
mcp__hallouminate__list_corpora + mcp__hallouminate__ground on repo:<repo>:wiki |
record hallouminate: absent in the ledger, proceed on code evidence, and cap at speculating when design rationale is central |
The grounding record precedes the first structured question: the ledger holds a probe result — citations or hallouminate: absent — first. Mark each unsupported claim [?] until settled.
Sub-agent context gate
/mold owns the dialogue, contradictions, and save-approval state. Do not delegate these items. Delegate evidence-heavy code work to a fresh-context explorer and external research to a researcher. Shape uses an explorer digest as input. Record parent-context exploration as a degraded path. See references/context-budget.md for budgets and checkpoints.
Gate graph
python3 skills/mold/scripts/mold.pyz gate-graph --render dot|svg|png|mermaid renders one gate model. Image targets use Mermaid when Graphviz is unavailable. Tests keep gate nodes aligned with the handshake checklist. See references/gate-graph.md.
Spec provenance and Test Contracts
Every Mold-produced spec carries a provenance marker in frontmatter:
source: mold-handshake | agent-mini-spec | mold-curd-mini-spec
A spec has no disposition field. ## Test Contracts is optional: a spec may
include it, and no gate requires it. Row-level rules: references/curdle.md
§ Test Contracts.
Fork taste gate
python3 skills/mold/scripts/mold.pyz taste-test binds the verdict to draft SHA256 and each settled fork. Stale, partial, or blocked verdicts fail; a failure reopens only named forks, with two rounds. Approved specs pass unchanged metadata to /cook --spec <spec-path> (add --auto only when the user chose it) for standalone work; bound curd work uses /cook --auto --result <result-path>.
Each fork appears in Approach, Interface sketches, and Acceptance, plus Test Contracts when the draft has them. Do not rename sections. Tag reflecting lines with fork id and run taste-test --precheck before dispatch. goal must survive verbatim in Problem statement (goal-drift); each G-n clause carries an Acceptance or disposition tag (goal-coverage). See references/curdle.md § Spec template and references/gate-graph.md.
Execution gate
Mold may save a validated parent spec or early curd mini-spec without an approval turn. The agent coherence check still controls what the artifact claims as settled. Print the narrowing delta (taste-test --coverage) and the scope audit table before presenting any Cook option. Unresolved decisions remain visible holds, not implicit approvals. See references/handshake.md.
Never start Cook from a saved spec, silence, --auto, or a general design approval. The user must select the exact curd or parent scope and a Cook route. A changed scope or plan needs a new selection. A failed bound finalization leaves a saved draft without executable refs. See references/early-curds.md.
--hard
Mold never runs the metacognitive check. Plate alone runs it at the
verified-artifacts boundary. Mold appends --hard to every Cook command that
it emits when the user passed the flag. Cure forwards the same flag to Plate.
See ../hard-cheese/references/composition.md.
Handoff
Pipeline: culture → [mold] → cook (⇄ press) → age → cure → plate
After Curdle's phase two finishes, run python3 skills/mold/scripts/mold.pyz curd-count for the blast-radius digest. A draft offers no Cook command. On explicit Cook selection, retain the selected spec path for standalone work. Bound curd work dispatches the printed finalize command, /cook --auto --result <result-path>; the result carries request_id, spec_ref, planner_result_ref, plan_ref, and exact coverage. Prompt through the shared handoff gate (policy); never pre-select. Keep applicability, contract, and taste review metadata unchanged. Append --hard when the user passed it.
The digest's mode is orientation, not a skill or Cook gate. Render the fixed blast-radius menu from decomposable, candidate_curds, verdict, and mode; see references/handoff-menus.md.
Rules
- Dialogue first; artifacts are the by-product.
- Tiered lettered options. Consequential forks use
A/B/C/Dchoices via the question transport at../cheese/references/ask-user-question.md. Never decide them silently. Everything below the leverage line is[AGENT-DECIDED]by default: make the call, log a one-line vetoable alternative in the ledger, and do not ask. A fork is valid only after its depth was contributed in-dialogue first. Precede every structured question with visible prose that weighs the fork and the evidence. Keep one open picker. - Fork cards. Before each consequential question, show a fork card: what it decides, what it moves, and each branch as a symbol table or plain-text graph. Offer
Explain moreas a choice; an unclear reply re-renders the same fork with more context (fork-questions). - Altitude tag. Every
Askingfork names the acceptance criterion, public seam, or non-goal it moves. A fork that moves none, or that sits below the leverage line, is[AGENT-DECIDED]or a follow-up candidate, never a user question. - Decision ledger. Each round prints
Goal / Decided / Asking / [AGENT-DECIDED], the goal verbatim. Curdle persists consequential decisions to ADRs and minor ones to the spec. The taste verdict names every settled consequential entry exactly once. - Decision map and fork-round cap. Stop after three consecutive fork rounds that add no new evidence, or three consecutive forks that fail the altitude tag, or when the user requests a decision map. Show completed forks, remaining forks, and a ready or blocked verdict. A fourth round requires new grounding, a delegated digest, or a
/wheypointcheckpoint. The map shows ledger state. It does not create an artifact. - Do not implement code.
- Do not write production files in Mold. Saving a spec does not authorize Cook.
- Do not silently settle uncertain claims.
- Apply the shared voice kernel at
../age/references/voice.md. Correct false premises. Mark each critical claim's confidence ascertain | speculating | don't know. Steelman before you dismiss. Put consequential forks to the user; depth informs the question, never replaces it.
The generated ../cheese/references/schema-intertwine.md lists every published schema and its contract model.
Agent resolution
Resolve delegates through ../cheese/references/agent-resolution.md.
| Work | Preferred types | Permissions/isolation | Minimum power | Effort | Fallback |
|---|---|---|---|---|---|
| Explore the codebase | explorer | read-only, fresh-context | default | medium | compatible explorer, then general |
| Research external constraints | researcher | read-only, fresh-context | default | medium | compatible researcher, then general |
| Plan for approval | planner, general | read-only, fresh-context | powerful | high | compatible planner, then general |
The canonical mold spec or mini-spec carries the shared agent_resolution block.
Commands: references/commands.md.
