Looptimal — outcome orchestrator
Turn an objective into a delivered, verified outcome: seal the acceptance criteria, pick or reject the right loop, war-game the plan, execute with domain experts, and gate completion on a separate verifier re-running the sealed suite against live state — never on self-reported GREEN.
The loop-design wizard (formerly the standalone LoopPrint) is embedded as Stage 2: Design-loop. It also runs as a design fast-path when you only want a loop blueprint without outcome orchestration.
When to use
- "looptimal", "/looptimal", "run an outcome loop", "orchestrate this objective to done", "plan and ship this goal".
- A non-trivial objective where "done" must be proved against live state, not asserted by the agent that did the work.
- Multi-domain work needing a Capability Manifest, consensus plan, and maker ≠ checker at the outcome altitude.
- Recurring, supervised, ratchet, or orchestration patterns — after Design-loop confirms this is actually a loop.
- You want Simulate to war-game the plan before any autonomous execution.
- A single, non-trivial objective you want delivered once and proven against live state. If it needs bounded iteration, route it as a mission / goal-run; if one careful pass is enough, use single-pass mode (see the mode fork below).
When to use the design fast-path
- "design a loop", "build a loop", "new loop", "loop wizard", or a vague recurring task to automate.
- You only want a loop blueprint (spec + artifacts) — no outcome orchestration.
- Jumps directly to Stage 2 (Decision Gate → wizard → artifact generation) and stops.
When NOT to use
- A trivial one-shot answer, quick edit, or conversational question → just do it well once, no tool needed. (A substantive one-shot objective you still want proven — not trivial, just not recurring — routes to mission / goal-run or single-pass below, not a reason to skip Looptimal entirely.)
- Analysis with no delivery obligation → answer directly or use esat.
- Irreversible, judgment-heavy actions with no human willing to hold the GO gate → recommend a human-gated process.
- Meta-loops ("run Looptimal to verify Looptimal", "auto-merge when Looptimal says GREEN") → Design-loop must REJECT.
- Symptom-only success metrics with no behavioral outcome oracle → re-Frame or REJECT.
Operating rules (read first)
- This is a skill, not a persona or mode. Open with one activation line, then do the work.
- Checkpoint-gated: Frame → Analyze → Design-loop / Route → Plan → Simulate each stop for brief status. Execute never starts without explicit human GO after Simulate — or, in single-pass mode, after the light pre-mortem that substitutes for the Analyze/Design-loop/Plan/Simulate checkpoints (see the mode fork below).
- Never auto-run irreversibles: prod deploys, sends, payments, credential rotation, data deletion — pre-action human gates only.
- Harness-decoupled: resolve bindings from
./.looptimal/profile.yaml → ~/.looptimal/profile.yaml → scripts/looptimal-detect.py → generic defaults. Contract: references/agent-foundry.md.
Activation line examples:
- Full pipeline: "Looptimal — framing this objective into a sealed outcome loop."
- Design fast-path: "Looptimal — blueprinting this loop."
- Single-pass: "Looptimal — one verified pass on this, no loop."
- Invoked bare (no objective): ask exactly one question — "What outcome should be true when we're done?" — then the mode fork below.
- Objective already given: acknowledge in one line, then the mode fork below.
The mode fork (before Frame — ask once, cheaply)
Looptimal's loop-worthiness judgment is the Decision Gate (Step 1 of the wizard, below) — but today that only fires deep in Stage 2, after Frame and Analyze have already run. Decide the shape before any of that work starts instead:
- Phrasing already unambiguous — skip the question:
- Design-fast-path trigger words ("design a loop", "build a loop", "blueprint", "loop wizard") → Stage 2 directly.
- Explicit one-shot language that also rules out useful retries ("single pass", "one careful pass", "no retry loop needed") → single-pass directly.
- Explicit one-time delivery language with possible verifier/retry work ("one-shot", "just do X once", "build/fix/ship this once") → full pipeline so the Decision Gate can choose mission / goal-run vs single-pass.
- Explicit recurrence/cadence language ("nightly", "every PR", "keep this fresh", "ongoing") → full pipeline directly.
- Otherwise — ask one structured, three-option question before touching Stage 0:
- Get it done once, proven — a single verified outcome with no useful retry loop → single-pass.
- Run a mission or build a loop — either bounded (a mission / goal-run that iterates until a gate, then stops — bug fixes, spec conformance, one-time builds) or recurring (runs on a schedule/trigger indefinitely) → full pipeline (Stage 0 → 1 → 2; the Decision Gate picks the route/archetype — Task / Recurring / Supervised / Persistent-ratchet / Orchestration, mission / goal-run, or hard reject).
- Just generate a loop blueprint → design fast-path (Stage 2 only).
This surfaces the same loop-worthiness call the Decision Gate already makes as the user's own judgment, upfront and cheap, instead of only reachable after Analyze, Design-loop, and Plan have already been spent on the wrong shape (Frame runs regardless of the chosen mode, so it's never wasted). If Stage 0/1 evidence later contradicts the chosen mode — a "single-pass" objective turns out to clearly recur or need iteration until a gate, or a "recurring system" doesn't survive the Decision Gate — say so plainly and let the user redirect. Never silently override their choice; never silently comply with a mode the evidence doesn't support.
Resolve the binding (Stage 0 preamble)
python3 scripts/looptimal-detect.py # probe markers; suggest profile
# or read ./.looptimal/profile.yaml → ~/.looptimal/profile.yaml
Supplies state_dir, dispatch.maker, dispatch.checker, verifier.default, optional banner. Generic defaults: loops/<slug>/, shell verifier.
The 8-stage pipeline
| Stage |
Name |
Job |
Reference |
| 0 |
Frame |
Turn the objective into a hash-pinned, SEALED acceptance suite. Every criterion asserts an outcome (not a symptom) and binds a domain outcome-oracle. Inputs are non-writable by the maker. Emit acceptance-suite.yaml + acceptance-suite.sha256. |
references/pipeline.md |
| 1 |
Analyze |
Produce a Capability Manifest and local capability readiness inventory: domains, integration map, risks, dependencies, available skills/plugins/connectors/MCPs/agents/data. Delegate deep definition work to esat when stakes warrant tri-model stress-test. |
references/pipeline.md |
| 2 |
Design-loop / Route |
Run the loop-design wizard or route the objective. Pick archetype — Task (bounded delivery), Recurring (scheduled freshness), Supervised (autonomous within guardrails), Persistent-ratchet (each pass strictly improves an outcome metric), Orchestration (multi-actor / multi-repo), mission / goal-run, single-pass — or REJECT only for hard no-verifier/meta-loop/symptom-only cases. |
references/pipeline.md |
| 3 |
Plan |
Build a consensus task graph: nodes, dependencies, per-task acceptance hooks tied to the sealed suite, blast-radius tags, rollback notes. |
references/pipeline.md |
| 4 |
Simulate |
Roll the loop forward N steps; pre-mortem failure modes (reward-hacking, silent failure, partial completion, env drift); harden the plan. Present findings and any deltas to the sealed suite (re-hash + user ack). |
references/pipeline.md |
| — |
Human GO |
Explicit approval to execute. Surface top risks, irreversibles, open dependencies. No GO → no Execute. |
references/pipeline.md |
| 5 |
Execute |
Spin up dynamic domain-expert sub-agents per the binding profile. Maker ≠ checker at iteration gates. Resumable, idempotent steps; rollback paths for partial failure. Pre-action gates on irreversibles. |
references/pipeline.md |
| 6 |
Verify-outcome |
A separate checker re-runs the SEALED suite against live state. Ignore loop self-reported GREEN. Gate on an evidence bundle. |
references/pipeline.md |
| 7 |
Persist |
Write durable state: objective hash, suite hash, what worked/failed, oracle results, remediation class, resume pointers, lessons for next run. |
references/pipeline.md |
Stage transitions (default)
- 0 → 1: sealed suite exists, every criterion has an oracle, hash recorded.
- 1 → 2: Capability Manifest covers all material domains, integration edges, and local capability readiness.
- 2 → 3: archetype or mission route chosen (or hard REJECT issued with honest alternative).
- 3 → 4: task graph is acyclic, every node hooks to a suite criterion, safety limits set.
- 4 → GO: simulation report delivered; plan hardened; irreversibles tagged.
- GO → 5: explicit human approval captured in state.
- 5 → 6: maker declares iteration complete — informational only; checker owns truth.
- 6 → 7: evidence bundle GREEN; else FAIL with remediation class and resume pointer.
Resume
If a prior run exists under state_dir and the objective hash matches, resume from the last incomplete stage. If the objective changed materially, re-Frame (new suite hash). Never resume across a hard REJECT without a fresh Design-loop / Route.
Stage 2 — Design-loop / Route wizard
The wizard enforces the four atoms, runs the route decision gate, and then branches. Reusable-loop routes generate the full LoopPrint artifact package. Mission / goal-run routes emit route.md + a mission package (mission.yaml after Stage 3) and continue to Stage 3 Plan without reusable-loop scaffolding. Single-pass routes emit route.md plus the light pre-mortem and follow the single-pass Degrade path. It lives in Stage 2 of the full pipeline and also runs standalone as the design fast-path.
Wizard entry
- Full pipeline (called from Stage 2): goal is the outcome from Stage 0. Skip to Step 0.5.
- Design fast-path (direct invocation): open with one activation line; if no goal given, ask one question first.
Step 0.5 — Resolve the binding
Run scripts/loopprint-detect.py (or read ./.loopprint/profile.yaml → ~/.loopprint/profile.yaml) to get state_dir, verifier.default, dispatch, marker_path, runner, banner. Generic defaults: loops/<slug>/, verify.sh. Contract: references/profiles.md. Never hardcode harness conventions.
Step 1 — Decision Gate (+ route)
Run the Tier-0 test in references/decision-gate.md: 4 conditions + 30-second checklist. Report the route with one line of reasoning per condition. Recurrence remains the reusable-loop amortization test, not the whole orchestration gate: non-recurring but verifier-backed work can route to mission / goal-run or single-pass. Hard REJECT remains mandatory when there is no external verifier/human checkpoint, when the objective is self-referential/meta-loop, or when success is symptom-only with no behavioral anchor.
Immediately branch on the selected route:
- Reusable loop route: continue through Steps 2-6, pin the loop archetype/profile, generate
loops/<slug>/, and run loopprint-lint.
- Mission / Goal Run route: do not continue to loop profile or artifact generation. Emit
route.md with driver, state artifact, verifier, stop/budget, autonomy level, readiness gaps, and why no reusable loop blueprint is being produced; then continue to Stage 3 Plan, which emits mission.yaml, task-graph.yaml, execute-scope.yaml, and looptimal-lint.txt.
- Single Verified Pass route: do not continue to loop profile or artifact generation. Emit
route.md with verifier, state artifact, stop, readiness gaps, and a 3-scenario light pre-mortem; then follow the single-pass Degrade path instead of Stage 3/4.
- Human-gated workflow route: emit
route.md with the human checkpoints and external checker, then continue only through the supervised path that matches those gates.
- Hard REJECT: emit
reject.md with the unverifiable/unsafe reason and honest alternative; stop unless the user reframes the objective.
Step 2 — Reusable-loop Goal Refinement
Ask 3–5 targeted questions (not more):
- Sharpened goal — one sentence, testable.
- Recurrence / frequency — confirms the reusable loop amortizes.
- Verification method — what external signal says an iteration succeeded?
- Irreversible risks — what can't be undone? (→ human checkpoint)
- Autonomy level — fully autonomous, checkpoint-gated, or dry-run?
Step 3 — Reusable-loop Primitive Enforcement
Force a concrete value for each atom. Do not proceed with any left vague:
- Goal — the one-sentence objective from Step 2.
- State — durable artifact path from the binding's
state_dir; what it records: attempt log, what failed, current hypothesis, context.
- Verifier — the exact external command or named reviewer. If the only proposed check is the same agent self-assessing, reject it and find a real gate. Maker ≠ checker.
- Stop — success criteria and a safety limit (max iterations, token/time budget, explicit halt). No loop ships without a safety limit.
Step 4 — Reusable-loop Profile Selection
Pin the archetype's full profile — work pattern (from references/patterns.md) and verifier/stop shape:
- MORTY — specific bug; verifier = reproduction test; finish-gate.
- Spec-Driven — conform to a spec; derived tests pass.
- Performance — metric target (gate), or open-ended ratchet:
verifier.shape: ratchet + stop.budget.
- Hybrid — composite gate.
- Critic-panel —
verifier.kind: critic-panel; panel: {n, quorum_k, threshold}; judge ≠ maker; cross-provider strongest.
- Supervised — human checkpoints between autonomous runs;
autonomy: checkpoint.
Pattern = the work; verifier shape/kind + stop + autonomy = how it's gated and when it stops — orthogonal axes.
Step 5 — Reusable-loop Artifact Generation
Create loops/<slug>/ and write the package from templates/:
| File |
Purpose |
loop-spec.yaml |
Four atoms + pattern + budget, machine-readable |
state.md |
Durable State artifact, seeded at iteration 0 |
maker.sh |
Maker step — SEPARATE process from verify.sh (maker ≠ checker) |
verify.sh |
External verifier as an exit-code gate |
run-this-loop.sh |
Engine-agnostic runner; emits metrics.jsonl + state.jsonl each iteration |
safety-checklist.md |
Human checkpoints + budget guardrails + maker≠checker checker identity |
flow.mmd |
Mermaid diagram of this loop |
Record profile.dispatch.checker in safety-checklist.md; note cross-provider option when 2+ CLIs available from loopprint-detect.py.
After generation: preflight with bash run-this-loop.sh --check. Use loopprint-report.py loops/<slug>/metrics.jsonl for cost-per-accepted-change; loopprint-skillify.py loops/<slug> to promote a GREEN loop to a reusable skill (only after sealed checker passes). loopprint-ls.py for rot radar.
Self-check (required): run scripts/loopprint-lint.py loops/<slug>/loop-spec.yaml. Do not present the blueprint as ready until it prints GREEN. RED = empty or self-grading verifier, missing safety limit, unfilled placeholder.
Step 6 — Reusable-loop Blueprint Final Review
Show the generated file tree and a 3-line summary (Goal / Verifier / Stop). Offer and wait:
- Run now — execute
run-this-loop.sh (respecting autonomy level from Step 2).
- Refine — adjust any atom/artifact and regenerate.
- Export — adapt for another orchestrator.
- Save as skill — promote this loop into a reusable skill.
Never auto-run. Step 6 is a stop-and-confirm.
Skip-wizard / direct-run mode
Say "skip wizard" or "direct run" to bypass Steps 1–4's interview for a reusable-loop route: read or accept an existing loop-spec.yaml (or a one-paragraph goal), backfill missing atoms with sensible defaults, call out anything defaulted, generate the package (Step 5), stop at Step 6. If the Decision Gate routes the objective to mission / goal-run or single-pass, skip LoopPrint artifact generation and emit the corresponding route.md branch instead. Never silently invent a verifier — if there's no external gate, say so and ask.
Core invariants
- Outcome ≠ symptom — "CI green", "coverage up", "complexity down" are symptoms unless tied to a behavioral outcome oracle. Symptom-only → REJECT or re-Frame.
- Sealed verifier inputs — the maker cannot edit the acceptance suite, oracle configs, or holdout credentials after Frame.
- Maker ≠ checker — at every altitude: iteration gates and the final outcome verifier. No self-grading.
- Every criterion binds a sealed domain outcome-oracle — tests, live API probes, read-only metric pulls, published-content hashes, compliance receipts — not agent prose.
- War-game before GO — Simulate is mandatory on the default path (single-pass substitutes a light pre-mortem; see Degrade rules).
- Resumable / idempotent execution — durable state after every meaningful step; safe retry and rollback.
- External write-back receipts — claims of "deployed", "published", "rotated" must be re-pulled from the external system by the checker.
- Partial completion is failure — outcome criteria quantify over the full scope unless the sealed suite explicitly scopes down.
Evidence bundle (Stage 6 minimum)
- Artifacts + hashes — built from clean checkout at pinned SHAs, not the maker's dirty tree.
- Tool receipts with write-back — redeployed config, published URL, rotated secret fingerprint — re-read by the checker.
- Final-state assertions — live probes the maker cannot mutate (read-only creds, holdout split the maker never saw).
- Unresolved risks — any P0/P1 unresolved → FAIL even if narrow criteria pass.
Degrade / fast-path rules
- "mission / goal-run" — a non-recurring objective that still benefits from bounded iteration until an external gate accepts it. Use the full Frame → Analyze → Route → Plan → Simulate → GO → Execute → Verify-outcome → Persist discipline, with the route artifact selecting the best available local driver (Ultragoal/Autopilot, Team when useful, or explicit Ralph fallback).
- "single-pass" (or chosen via the mode fork above) — the Decision Gate's own honest alternative ("one high-quality pass") made directly selectable, not just the fallback when Stage 2 fails: Frame (sealed suite — the maker ≠ checker guarantee matters just as much for one outcome) → Analyze only if the objective is genuinely multi-domain, else skip → a light pre-mortem (the 3-scenario "this will fail because…" check, one line of prevention each — not full N-step Simulate, since there's no loop to roll forward) → human GO → Execute (one pass; no archetype, no iteration loop) → Verify-outcome (Stage 6, unchanged — still a separate checker, still live state) → Persist. Skips reusable-loop archetype selection and Plan's consensus task graph entirely.
- "design" / loop wizard fast-path — enter Stage 2 wizard; stop after artifact generation. No outcome orchestration.
- "skip simulate" — allowed after Design-loop + Plan; print a one-paragraph risk callout (top failure modes Simulate would have caught); require explicit user confirmation before GO.
- "fast path" — Frame + Design-loop + Plan, then stop with a ready-to-run package. No autonomous Execute.
- "analysis-only" — stop after Stage 1 with Capability Manifest + esat output.
- Degrade never bypasses: sealed suite, maker ≠ checker, irreversible human gates, or Stage 6 live-state verifier (single-pass's light pre-mortem is a legitimate substitute for full Simulate — it is not a bypass of the GO gate itself).
Self-verifier gate (required before autonomous run)
python3 scripts/looptimal-lint.py <state_dir>/mission.yaml
Do not proceed until it prints GREEN. RED = writable verifier inputs, symptom-only criteria, missing oracle binding, maker=checker collapse, missing safety limit, meta-loop shape — fix and re-lint.
Loop-design output is gated separately:
python3 scripts/loopprint-lint.py loops/<slug>/loop-spec.yaml
Doctor / repair
python3 scripts/looptimal-doctor.py # bottom-up health check; copy-pasteable fix per problem
python3 scripts/looptimal-doctor.py --fix # apply SAFE repairs (chmod +x, relink dangling symlink)
python3 scripts/looptimal-doctor.py --json # machine-readable findings
python3 scripts/loopprint-doctor.py # diagnose the loop-design wizard install
python3 scripts/loopprint-doctor.py --fix # safe repairs for wizard scripts
Apply safe fix: lines yourself; for anything that re-clones, edits user config, or deletes, confirm with the user first. One-shot heal — re-run once to confirm no FAIL, then stop. Full map: references/troubleshooting.md.
Hard guards (always)
- No criterion the maker can satisfy by self-assessment. Bind to an external oracle or stop.
- No Execute without human GO after Simulate, or the light pre-mortem in single-pass mode (or other documented degrade acceptance).
- No irreversible action without a pre-action human gate and blast-radius disclosure.
- No meta-loop: the orchestrator must not grade its own orchestration as the outcome.
- No "done" without Stage 6 Verify-outcome GREEN on live state — loop self-reported GREEN is informational only.
- No promotion of a failing loop into a reusable skill —
loopprint-skillify applies only after the sealed checker passes.
- No promotion of a synthesized persona into the curated library from an unverified or maker-only-reported mission —
looptimal-persona-promote applies only after Stage 6 is checker GREEN.
- Log state + verifier result every iteration; only the sealed checker permits outcome completion.
- No loop without a safety limit. No autonomous run without Step 6 / human GO approval.
- Irreversible actions become human checkpoints, never autonomous steps.
REJECT patterns (Design-loop must stop)
- Trivial one-shot Q&A, tiny single-file edit, "explain this error" — not a reusable loop; answer directly or use single-pass only if an explicit verifier is needed.
- Meta-loop: automating approval of Looptimal's own output, or any self-referential verifier.
- Judgment-only goals with no machine- or oracle-checkable outcome ("make it feel premium").
- Symptom ratchet with no behavioral anchor (coverage %, lint score, complexity metric alone).
- When honest alternative is better: direct execution, single-pass (Frame + Verify-outcome without loop scaffolding — see Degrade rules), human-gated checklist, or design fast-path without outcome orchestration.
Common failure modes (stay honest)
- Reward-hacking — suite passes by narrowing scope, quarantining tests, stubbing externals. Simulate + outcome oracles are the fix; if they are weak, say FAIL early.
- Silent failure — temporary backfill masks a broken upstream. Persist remediation class; require receipt + invariant cross-check.
- Goal drift — long-horizon loops redefine the metric. Re-Frame checkpoints or downgrade to Supervised.
- Stale environment — checker hits a snapshot the maker seeded. Final-state probes must be freshly provisioned or read live production-adjacent state per the sealed suite.
- Partial orchestration — 9/10 repos merged, 9/10 tenants migrated. Quantify ∀ scope in Frame or accept FAIL.
Related skills
- esat — tri-model analysis for high-stakes definition during Analyze. Feeds the Capability Manifest; does not replace Frame or Verify-outcome.
Author: Renn Labs. MIT.
1---2name: looptimal3description: Looptimal — turns an objective into a delivered, VERIFIED OUTCOME by designing, war-gaming, and running the right loop or mission route. Use on 'looptimal', '/looptimal', 'run an outcome loop', 'orchestrate this objective to done', 'plan and ship this goal', or any non-trivial objective that needs a sealed acceptance suite, the right execution driver, and independent verification before you call it done. ALSO handles loop-design wizard requests ('design a loop', 'build a loop', 'new loop', 'loop wizard', or a vague recurring task to automate) via the 'design' fast-path (Stage 2 only, no outcome orchestration). For a single, non-recurring deliverable you still want proven — not trivial, just not a reusable loop — it routes to mission / goal-run when bounded iteration is useful, or degrades to 'single-pass' mode when one pass is enough: Frame → (Analyze if multi-domain) → light pre-mortem → Execute → Verify-outcome → Persist, skipping reusable-loop scaffolding. When the objective's shape is ambiguous, asks one 4license: MIT5---67# Looptimal — outcome orchestrator89Turn an objective into a delivered, **verified outcome**: seal the acceptance criteria, pick or reject the right loop, war-game the plan, execute with domain experts, and gate completion on a separate verifier re-running the sealed suite against live state — never on self-reported GREEN.1011The loop-design wizard (formerly the standalone LoopPrint) is embedded as Stage 2: Design-loop. It also runs as a `design` fast-path when you only want a loop blueprint without outcome orchestration.1213## When to use14- "looptimal", "/looptimal", "run an outcome loop", "orchestrate this objective to done", "plan and ship this goal".15- A non-trivial objective where "done" must be proved against live state, not asserted by the agent that did the work.16- Multi-domain work needing a Capability Manifest, consensus plan, and maker ≠ checker at the outcome altitude.17- Recurring, supervised, ratchet, or orchestration patterns — after Design-loop confirms this is actually a loop.18- You want Simulate to war-game the plan before any autonomous execution.19- A single, non-trivial objective you want delivered once and proven against live state. If it needs bounded iteration, route it as a mission / goal-run; if one careful pass is enough, use single-pass mode (see the mode fork below).2021## When to use the design fast-path22- "design a loop", "build a loop", "new loop", "loop wizard", or a vague recurring task to automate.23- You only want a loop blueprint (spec + artifacts) — no outcome orchestration.24- Jumps directly to Stage 2 (Decision Gate → wizard → artifact generation) and stops.2526## When NOT to use27- A **trivial** one-shot answer, quick edit, or conversational question → just do it well once, no tool needed. (A *substantive* one-shot objective you still want proven — not trivial, just not recurring — routes to mission / goal-run or single-pass below, not a reason to skip Looptimal entirely.)28- Analysis with no delivery obligation → answer directly or use esat.29- Irreversible, judgment-heavy actions with no human willing to hold the GO gate → recommend a human-gated process.30- Meta-loops ("run Looptimal to verify Looptimal", "auto-merge when Looptimal says GREEN") → Design-loop must REJECT.31- Symptom-only success metrics with no behavioral outcome oracle → re-Frame or REJECT.3233## Operating rules (read first)34- This is a **skill**, not a persona or mode. Open with **one** activation line, then do the work.35- **Checkpoint-gated**: Frame → Analyze → Design-loop / Route → Plan → Simulate each stop for brief status. Execute never starts without explicit human GO after Simulate — or, in single-pass mode, after the light pre-mortem that substitutes for the Analyze/Design-loop/Plan/Simulate checkpoints (see the mode fork below).36- **Never auto-run irreversibles**: prod deploys, sends, payments, credential rotation, data deletion — pre-action human gates only.37- **Harness-decoupled**: resolve bindings from `./.looptimal/profile.yaml` → `~/.looptimal/profile.yaml` → `scripts/looptimal-detect.py` → generic defaults. Contract: [`references/agent-foundry.md`](references/agent-foundry.md).3839**Activation line examples:**40- Full pipeline: *"Looptimal — framing this objective into a sealed outcome loop."*41- Design fast-path: *"Looptimal — blueprinting this loop."*42- Single-pass: *"Looptimal — one verified pass on this, no loop."*43- **Invoked bare** (no objective): ask exactly one question — *"What outcome should be true when we're done?"* — then the mode fork below.44- **Objective already given**: acknowledge in one line, then the mode fork below.4546### The mode fork (before Frame — ask once, cheaply)47Looptimal's loop-worthiness judgment is the Decision Gate (Step 1 of the wizard, below) — but today that only fires deep in Stage 2, after Frame and Analyze have already run. Decide the shape **before** any of that work starts instead:4849- **Phrasing already unambiguous — skip the question:**50 - Design-fast-path trigger words ("design a loop", "build a loop", "blueprint", "loop wizard") → Stage 2 directly.51 - Explicit one-shot language that also rules out useful retries ("single pass", "one careful pass", "no retry loop needed") → single-pass directly.52 - Explicit one-time delivery language with possible verifier/retry work ("one-shot", "just do X once", "build/fix/ship this once") → full pipeline so the Decision Gate can choose mission / goal-run vs single-pass.53 - Explicit recurrence/cadence language ("nightly", "every PR", "keep this fresh", "ongoing") → full pipeline directly.54- **Otherwise — ask one structured, three-option question before touching Stage 0:**55 1. *Get it done once, proven* — a single verified outcome with no useful retry loop → **single-pass**.56 2. *Run a mission or build a loop* — either **bounded** (a mission / goal-run that iterates until a gate, then stops — bug fixes, spec conformance, one-time builds) or **recurring** (runs on a schedule/trigger indefinitely) → full pipeline (Stage 0 → 1 → 2; the Decision Gate picks the route/archetype — Task / Recurring / Supervised / Persistent-ratchet / Orchestration, mission / goal-run, or hard reject).57 3. *Just generate a loop blueprint* → design fast-path (Stage 2 only).5859This surfaces the same loop-worthiness call the Decision Gate already makes as the user's own judgment, upfront and cheap, instead of only reachable after Analyze, Design-loop, and Plan have already been spent on the wrong shape (Frame runs regardless of the chosen mode, so it's never wasted). If Stage 0/1 evidence later contradicts the chosen mode — a "single-pass" objective turns out to clearly recur or need iteration until a gate, or a "recurring system" doesn't survive the Decision Gate — say so plainly and let the user redirect. Never silently override their choice; never silently comply with a mode the evidence doesn't support.6061### Resolve the binding (Stage 0 preamble)62```bash63python3 scripts/looptimal-detect.py # probe markers; suggest profile64# or read ./.looptimal/profile.yaml → ~/.looptimal/profile.yaml65```66Supplies `state_dir`, `dispatch.maker`, `dispatch.checker`, `verifier.default`, optional `banner`. Generic defaults: `loops/<slug>/`, shell verifier.6768---6970## The 8-stage pipeline7172| Stage | Name | Job | Reference |73|:-----:|------|-----|-----------|74| 0 | **Frame** | Turn the objective into a hash-pinned, **SEALED** acceptance suite. Every criterion asserts an outcome (not a symptom) and binds a domain outcome-oracle. Inputs are non-writable by the maker. Emit `acceptance-suite.yaml` + `acceptance-suite.sha256`. | [`references/pipeline.md`](references/pipeline.md) |75| 1 | **Analyze** | Produce a Capability Manifest and local capability readiness inventory: domains, integration map, risks, dependencies, available skills/plugins/connectors/MCPs/agents/data. Delegate deep definition work to **esat** when stakes warrant tri-model stress-test. | [`references/pipeline.md`](references/pipeline.md) |76| 2 | **Design-loop / Route** | Run the loop-design wizard or route the objective. Pick archetype — **Task** (bounded delivery), **Recurring** (scheduled freshness), **Supervised** (autonomous within guardrails), **Persistent-ratchet** (each pass strictly improves an outcome metric), **Orchestration** (multi-actor / multi-repo), mission / goal-run, single-pass — or **REJECT** only for hard no-verifier/meta-loop/symptom-only cases. | [`references/pipeline.md`](references/pipeline.md) |77| 3 | **Plan** | Build a consensus task graph: nodes, dependencies, per-task acceptance hooks tied to the sealed suite, blast-radius tags, rollback notes. | [`references/pipeline.md`](references/pipeline.md) |78| 4 | **Simulate** | Roll the loop forward N steps; pre-mortem failure modes (reward-hacking, silent failure, partial completion, env drift); harden the plan. Present findings and any deltas to the sealed suite (re-hash + user ack). | [`references/pipeline.md`](references/pipeline.md) |79| — | **Human GO** | Explicit approval to execute. Surface top risks, irreversibles, open dependencies. No GO → no Execute. | [`references/pipeline.md`](references/pipeline.md) |80| 5 | **Execute** | Spin up dynamic domain-expert sub-agents per the binding profile. Maker ≠ checker at iteration gates. Resumable, idempotent steps; rollback paths for partial failure. Pre-action gates on irreversibles. | [`references/pipeline.md`](references/pipeline.md) |81| 6 | **Verify-outcome** | A **separate** checker re-runs the SEALED suite against **live state**. Ignore loop self-reported GREEN. Gate on an evidence bundle. | [`references/pipeline.md`](references/pipeline.md) |82| 7 | **Persist** | Write durable state: objective hash, suite hash, what worked/failed, oracle results, remediation class, resume pointers, lessons for next run. | [`references/pipeline.md`](references/pipeline.md) |8384### Stage transitions (default)85- 0 → 1: sealed suite exists, every criterion has an oracle, hash recorded.86- 1 → 2: Capability Manifest covers all material domains, integration edges, and local capability readiness.87- 2 → 3: archetype or mission route chosen (or hard REJECT issued with honest alternative).88- 3 → 4: task graph is acyclic, every node hooks to a suite criterion, safety limits set.89- 4 → GO: simulation report delivered; plan hardened; irreversibles tagged.90- GO → 5: explicit human approval captured in state.91- 5 → 6: maker declares iteration complete — informational only; checker owns truth.92- 6 → 7: evidence bundle GREEN; else FAIL with remediation class and resume pointer.9394### Resume95If a prior run exists under `state_dir` and the objective hash matches, resume from the last incomplete stage. If the objective changed materially, re-Frame (new suite hash). Never resume across a hard REJECT without a fresh Design-loop / Route.9697---9899## Stage 2 — Design-loop / Route wizard100101The wizard enforces the four atoms, runs the route decision gate, and then branches. Reusable-loop routes generate the full LoopPrint artifact package. Mission / goal-run routes emit `route.md` + a mission package (`mission.yaml` after Stage 3) and continue to Stage 3 Plan without reusable-loop scaffolding. Single-pass routes emit `route.md` plus the light pre-mortem and follow the single-pass Degrade path. It lives in Stage 2 of the full pipeline and also runs standalone as the `design` fast-path.102103### Wizard entry104- **Full pipeline** (called from Stage 2): goal is the outcome from Stage 0. Skip to Step 0.5.105- **Design fast-path** (direct invocation): open with one activation line; if no goal given, ask one question first.106107### Step 0.5 — Resolve the binding108Run `scripts/loopprint-detect.py` (or read `./.loopprint/profile.yaml` → `~/.loopprint/profile.yaml`) to get `state_dir`, `verifier.default`, `dispatch`, `marker_path`, `runner`, `banner`. Generic defaults: `loops/<slug>/`, `verify.sh`. Contract: [`references/profiles.md`](references/profiles.md). Never hardcode harness conventions.109110### Step 1 — Decision Gate (+ route)111Run the Tier-0 test in [`references/decision-gate.md`](references/decision-gate.md): 4 conditions + 30-second checklist. Report the route with one line of reasoning per condition. Recurrence remains the reusable-loop amortization test, not the whole orchestration gate: non-recurring but verifier-backed work can route to mission / goal-run or single-pass. Hard **REJECT** remains mandatory when there is no external verifier/human checkpoint, when the objective is self-referential/meta-loop, or when success is symptom-only with no behavioral anchor.112113Immediately branch on the selected route:114- **Reusable loop route:** continue through Steps 2-6, pin the loop archetype/profile, generate `loops/<slug>/`, and run `loopprint-lint`.115- **Mission / Goal Run route:** do **not** continue to loop profile or artifact generation. Emit `route.md` with driver, state artifact, verifier, stop/budget, autonomy level, readiness gaps, and why no reusable loop blueprint is being produced; then continue to Stage 3 Plan, which emits `mission.yaml`, `task-graph.yaml`, `execute-scope.yaml`, and `looptimal-lint.txt`.116- **Single Verified Pass route:** do **not** continue to loop profile or artifact generation. Emit `route.md` with verifier, state artifact, stop, readiness gaps, and a 3-scenario light pre-mortem; then follow the `single-pass` Degrade path instead of Stage 3/4.117- **Human-gated workflow route:** emit `route.md` with the human checkpoints and external checker, then continue only through the supervised path that matches those gates.118- **Hard REJECT:** emit `reject.md` with the unverifiable/unsafe reason and honest alternative; stop unless the user reframes the objective.119120### Step 2 — Reusable-loop Goal Refinement121Ask **3–5 targeted questions** (not more):1221. Sharpened goal — one sentence, testable.1232. Recurrence / frequency — confirms the reusable loop amortizes.1243. Verification method — what *external* signal says an iteration succeeded?1254. Irreversible risks — what can't be undone? (→ human checkpoint)1265. Autonomy level — fully autonomous, checkpoint-gated, or dry-run?127128### Step 3 — Reusable-loop Primitive Enforcement129Force a concrete value for each atom. Do not proceed with any left vague:130- **Goal** — the one-sentence objective from Step 2.131- **State** — durable artifact path from the binding's `state_dir`; what it records: attempt log, what failed, current hypothesis, context.132- **Verifier** — the exact external command or named reviewer. If the only proposed check is the same agent self-assessing, **reject it** and find a real gate. Maker ≠ checker.133- **Stop** — success criteria **and** a safety limit (max iterations, token/time budget, explicit halt). No loop ships without a safety limit.134135### Step 4 — Reusable-loop Profile Selection136Pin the archetype's full profile — work pattern (from [`references/patterns.md`](references/patterns.md)) and verifier/stop shape:137- **MORTY** — specific bug; verifier = reproduction test; finish-gate.138- **Spec-Driven** — conform to a spec; derived tests pass.139- **Performance** — metric target (gate), or open-ended ratchet: `verifier.shape: ratchet` + `stop.budget`.140- **Hybrid** — composite gate.141- **Critic-panel** — `verifier.kind: critic-panel`; `panel: {n, quorum_k, threshold}`; judge ≠ maker; cross-provider strongest.142- **Supervised** — human checkpoints between autonomous runs; `autonomy: checkpoint`.143144Pattern = the *work*; verifier shape/kind + stop + autonomy = *how it's gated and when it stops* — orthogonal axes.145146### Step 5 — Reusable-loop Artifact Generation147Create `loops/<slug>/` and write the package from [`templates/`](templates/):148149| File | Purpose |150|-|-|151| `loop-spec.yaml` | Four atoms + pattern + budget, machine-readable |152| `state.md` | Durable State artifact, seeded at iteration 0 |153| `maker.sh` | Maker step — SEPARATE process from verify.sh (maker ≠ checker) |154| `verify.sh` | External verifier as an exit-code gate |155| `run-this-loop.sh` | Engine-agnostic runner; emits `metrics.jsonl` + `state.jsonl` each iteration |156| `safety-checklist.md` | Human checkpoints + budget guardrails + maker≠checker checker identity |157| `flow.mmd` | Mermaid diagram of this loop |158159Record `profile.dispatch.checker` in `safety-checklist.md`; note cross-provider option when 2+ CLIs available from `loopprint-detect.py`.160161After generation: preflight with `bash run-this-loop.sh --check`. Use `loopprint-report.py loops/<slug>/metrics.jsonl` for cost-per-accepted-change; `loopprint-skillify.py loops/<slug>` to promote a GREEN loop to a reusable skill (only after sealed checker passes). `loopprint-ls.py` for rot radar.162163**Self-check (required):** run `scripts/loopprint-lint.py loops/<slug>/loop-spec.yaml`. Do **not** present the blueprint as ready until it prints GREEN. RED = empty or self-grading verifier, missing safety limit, unfilled placeholder.164165### Step 6 — Reusable-loop Blueprint Final Review166Show the generated file tree and a 3-line summary (Goal / Verifier / Stop). Offer and wait:167- **Run now** — execute `run-this-loop.sh` (respecting autonomy level from Step 2).168- **Refine** — adjust any atom/artifact and regenerate.169- **Export** — adapt for another orchestrator.170- **Save as skill** — promote this loop into a reusable skill.171172Never auto-run. Step 6 is a stop-and-confirm.173174### Skip-wizard / direct-run mode175Say **"skip wizard"** or **"direct run"** to bypass Steps 1–4's interview for a reusable-loop route: read or accept an existing `loop-spec.yaml` (or a one-paragraph goal), backfill missing atoms with sensible defaults, **call out anything defaulted**, generate the package (Step 5), stop at Step 6. If the Decision Gate routes the objective to mission / goal-run or single-pass, skip LoopPrint artifact generation and emit the corresponding `route.md` branch instead. Never silently invent a verifier — if there's no external gate, say so and ask.176177---178179## Core invariants180- **Outcome ≠ symptom** — "CI green", "coverage up", "complexity down" are symptoms unless tied to a behavioral outcome oracle. Symptom-only → REJECT or re-Frame.181- **Sealed verifier inputs** — the maker cannot edit the acceptance suite, oracle configs, or holdout credentials after Frame.182- **Maker ≠ checker** — at every altitude: iteration gates *and* the final outcome verifier. No self-grading.183- **Every criterion binds a sealed domain outcome-oracle** — tests, live API probes, read-only metric pulls, published-content hashes, compliance receipts — not agent prose.184- **War-game before GO** — Simulate is mandatory on the default path (single-pass substitutes a light pre-mortem; see Degrade rules).185- **Resumable / idempotent execution** — durable state after every meaningful step; safe retry and rollback.186- **External write-back receipts** — claims of "deployed", "published", "rotated" must be re-pulled from the external system by the checker.187- **Partial completion is failure** — outcome criteria quantify over the full scope unless the sealed suite explicitly scopes down.188189### Evidence bundle (Stage 6 minimum)1901. Artifacts + hashes — built from clean checkout at pinned SHAs, not the maker's dirty tree.1912. Tool receipts with write-back — redeployed config, published URL, rotated secret fingerprint — re-read by the checker.1923. Final-state assertions — live probes the maker cannot mutate (read-only creds, holdout split the maker never saw).1934. Unresolved risks — any P0/P1 unresolved → FAIL even if narrow criteria pass.194195---196197## Degrade / fast-path rules198- **"mission / goal-run"** — a non-recurring objective that still benefits from bounded iteration until an external gate accepts it. Use the full Frame → Analyze → Route → Plan → Simulate → GO → Execute → Verify-outcome → Persist discipline, with the route artifact selecting the best available local driver (Ultragoal/Autopilot, Team when useful, or explicit Ralph fallback).199- **"single-pass"** (or chosen via the mode fork above) — the Decision Gate's own honest alternative ("one high-quality pass") made directly selectable, not just the fallback when Stage 2 fails: Frame (sealed suite — the maker ≠ checker guarantee matters just as much for one outcome) → Analyze only if the objective is genuinely multi-domain, else skip → a **light pre-mortem** (the 3-scenario "this will fail because…" check, one line of prevention each — not full N-step Simulate, since there's no loop to roll forward) → human GO → Execute (one pass; no archetype, no iteration loop) → Verify-outcome (Stage 6, unchanged — still a separate checker, still live state) → Persist. Skips reusable-loop archetype selection and Plan's consensus task graph entirely.200- **"design"** / loop wizard fast-path — enter Stage 2 wizard; stop after artifact generation. No outcome orchestration.201- **"skip simulate"** — allowed after Design-loop + Plan; print a one-paragraph risk callout (top failure modes Simulate would have caught); require explicit user confirmation before GO.202- **"fast path"** — Frame + Design-loop + Plan, then stop with a ready-to-run package. No autonomous Execute.203- **"analysis-only"** — stop after Stage 1 with Capability Manifest + esat output.204- Degrade never bypasses: sealed suite, maker ≠ checker, irreversible human gates, or Stage 6 live-state verifier (single-pass's light pre-mortem is a legitimate substitute for full Simulate — it is not a bypass of the GO gate itself).205206---207208## Self-verifier gate (required before autonomous run)209```210python3 scripts/looptimal-lint.py <state_dir>/mission.yaml211```212Do **not** proceed until it prints **GREEN**. RED = writable verifier inputs, symptom-only criteria, missing oracle binding, maker=checker collapse, missing safety limit, meta-loop shape — fix and re-lint.213214Loop-design output is gated separately:215```216python3 scripts/loopprint-lint.py loops/<slug>/loop-spec.yaml217```218219---220221## Doctor / repair222```223python3 scripts/looptimal-doctor.py # bottom-up health check; copy-pasteable fix per problem224python3 scripts/looptimal-doctor.py --fix # apply SAFE repairs (chmod +x, relink dangling symlink)225python3 scripts/looptimal-doctor.py --json # machine-readable findings226227python3 scripts/loopprint-doctor.py # diagnose the loop-design wizard install228python3 scripts/loopprint-doctor.py --fix # safe repairs for wizard scripts229```230Apply safe `fix:` lines yourself; for anything that re-clones, edits user config, or deletes, confirm with the user first. One-shot heal — re-run once to confirm no FAIL, then stop. Full map: [`references/troubleshooting.md`](references/troubleshooting.md).231232---233234## Hard guards (always)235- No criterion the maker can satisfy by self-assessment. Bind to an external oracle or stop.236- No Execute without human GO after Simulate, or the light pre-mortem in single-pass mode (or other documented degrade acceptance).237- No irreversible action without a pre-action human gate and blast-radius disclosure.238- No meta-loop: the orchestrator must not grade its own orchestration as the outcome.239- No "done" without Stage 6 Verify-outcome GREEN on live state — loop self-reported GREEN is informational only.240- No promotion of a failing loop into a reusable skill — `loopprint-skillify` applies only after the sealed checker passes.241- No promotion of a synthesized persona into the curated library from an unverified or maker-only-reported mission — `looptimal-persona-promote` applies only after Stage 6 is checker GREEN.242- Log state + verifier result every iteration; only the sealed checker permits outcome completion.243- No loop without a safety limit. No autonomous run without Step 6 / human GO approval.244- Irreversible actions become human checkpoints, never autonomous steps.245246## REJECT patterns (Design-loop must stop)247- Trivial one-shot Q&A, tiny single-file edit, "explain this error" — not a reusable loop; answer directly or use single-pass only if an explicit verifier is needed.248- Meta-loop: automating approval of Looptimal's own output, or any self-referential verifier.249- Judgment-only goals with no machine- or oracle-checkable outcome ("make it feel premium").250- Symptom ratchet with no behavioral anchor (coverage %, lint score, complexity metric alone).251- When honest alternative is better: direct execution, **single-pass** (Frame + Verify-outcome without loop scaffolding — see Degrade rules), human-gated checklist, or design fast-path without outcome orchestration.252253## Common failure modes (stay honest)254- **Reward-hacking** — suite passes by narrowing scope, quarantining tests, stubbing externals. Simulate + outcome oracles are the fix; if they are weak, say FAIL early.255- **Silent failure** — temporary backfill masks a broken upstream. Persist remediation class; require receipt + invariant cross-check.256- **Goal drift** — long-horizon loops redefine the metric. Re-Frame checkpoints or downgrade to Supervised.257- **Stale environment** — checker hits a snapshot the maker seeded. Final-state probes must be freshly provisioned or read live production-adjacent state per the sealed suite.258- **Partial orchestration** — 9/10 repos merged, 9/10 tenants migrated. Quantify ∀ scope in Frame or accept FAIL.259260## Related skills261- **esat** — tri-model analysis for high-stakes definition during Analyze. Feeds the Capability Manifest; does not replace Frame or Verify-outcome.262263Author: Renn Labs. MIT.