Loop Engineering OS runs three master commands. Each is a thin router: a deterministic
script computes the phase from workspace state, and the command loads the one file that
runs it. Skills outside the phase stay unread until a phase, the session manifest, or
loop skills find names them (manifests/skill_triggers.json).
scripts/plan_phase.py writes a PHASE: line into plan/SESSION_MANIFEST.md.
session-start
-> grill plan uninitialized, or a pivot
-> resolve-doubts a blocking doubt is answerable now
-> council an open decision records two or more options (Options: A | B)
-> ultraplan platform scale with an incomplete step
-> spec-clarify no feature spec yet, or it has open questions
-> spec-checklist before locking feature-plan.md
-> task-compiler AC-numbered acceptance, files, max_files / max_loc
-> session-end converge, memory review, typed memory rotation
Terminus: tasks compiled and a go/no-go. Decisions go through loop record decision,
claims through loop record evidence, and reversals through loop plan-reconcile.
Key files: skills/plan-loop/SKILL.md, skills/plan-loop/phases/*.md.
scripts/build_phase.py writes a BUILD PHASE: line, the verification state, and - when
worker.command is configured - the isolated loop worker enqueue command for the task.
session-start
-> clarify a blocking doubt is answerable now
-> scaffold no source tree yet
-> implement plan the diff, loop plan-check, smallest change, tests at the seam, loop test
-> test a QA task, or built but not verified for the current source
-> converge feature converge (caps, duplicates, acceptance ids, spec-silent code),
independent review (loop review on a second provider when configured),
loop verify done
-> evaluate eval cases exist and the score is stale or regressed
-> release prod-gap, security, deployment plan, CI/CD, release-check
-> deploy approval, then every resource recorded as it is created
-> session-end
Terminus: the build slice is complete. A task is done only when loop verify done
accepts it: a green loop test run for the current source, or a recorded waiver.
/commit runs loop check first.
Key files: skills/develop-product/SKILL.md, skills/develop-product/phases/*.md.
session-start
-> needs a decision / contracts / blocking doubts first
-> plan branch while plan gates are blocked
-> build branch once they pass
-> session-end
Terminus: the build slice, or the planning terminus when build gates stay blocked.
Key file: skills/loop-engine/SKILL.md.
/revise-planloads the full plan surface, routes each stated fact to the file that owns it, reopens gates the change invalidates, and records the revision./ask-loopanswers from the plan and, when the docs are silent, the code. Read-only./resolve-doubtswalks every blocking doubt plan-wide and ends GO or NO-GO.
/prod-gap writes launch blockers; /release-check a readiness verdict; /status a
snapshot; /doctor runtime health; /sync-loop-state drift between memory, handoff, tasks
and gates. They report and name the next command; they do not cascade.
| Mechanism | Where |
|---|---|
| Phase routing from state, not model judgement | scripts/plan_phase.py, scripts/build_phase.py |
| Verification ledger and the done gate | scripts/verification.py (loop test, loop verify done) |
| Executable constraints | scripts/constraints.py (loop check) |
| Clarification from the plan and the diff | scripts/plan_check.py |
| Hard enforcement where verified | scripts/install_hooks.py (Claude Code, Cursor) |
| Degraded runtime steps surfaced | scripts/degraded.py -> ## Degraded in the manifest |
| Trace of tools, phases, tokens, duration | scripts/trace_log.py (loop trace) |
python scripts/validate_template.py
python scripts/skill_audit.py
python scripts/skill_triggers.py check
python scripts/validate_outputs.py --workspace <product-workspace>Rubrics: evals/plan_quality_rubric.md, evals/development_quality_rubric.md.