v0.3.0 — Loop runtime
Added
- Loop runtime — a declarative execution engine that runs an ordered sequence of skills autonomously with automated validators and policy-driven proceed/pause decisions, replacing manual skill-by-skill orchestration for trusted workflows.
- Loop config schema — declarative YAML with
skills,trigger,goal_state,repeat_until,validators,failure_handling,on_optional_failure,human_gate, andon_completeauto-chaining. Bundled loops ship insrc/dmx/loops/(spec,plan,dev,validate,release); teams override via.dmx/loops/. - Validator runner — validators are plain Python functions in
validators/{name}.py, resolved deterministically and invoked via subprocess with a{skill_outputs, goal_state, loop_context}input contract and a{pass, message, checks}output contract. - Bundled validators —
check_spec_complete,check_plan_complete,check_pr_ready,run_tests, andspec_adherence.spec_adherencegrades a structuredvalidation-report.jsonartifact produced by thevalidateskill's diff-based analysis, rather than the agent's free-text self-report. - State machine —
running → paused → running → ... → complete/failed/iterating, persisted to.dmx/loop-state.jsonand per-run job state under.dmx/jobs/{job_id}/. get_skill_definitionMCP tool — fetches a skill's full instructions on demand at each loop skill boundary.run_loop,loop_advance,loop_continueMCP tools and thedmx-run-loop/dmx-loop-continueskills exposing the loop runtime as first-class workflow entry points.- Loop-level memory hooks — loops read
activeContext.mdbefore running and write session-note breadcrumbs after completion.
Fixed
check_spec_complete'sqa_answeredcheck now recognizes questions structurally (numbered-list orQ:markers) instead of requiring one exact answer label, so it doesn't silently fail against every spec.md the bundleddmx-create-ticketskill actually generates.
Full changelog: https://github.com/deepmodel-ai/dmx/blob/main/CHANGELOG.md#030--2026-08-25