AXLR / Workflows

Agent workflows

Multi-step state machines the console drives and MADE arbitrates and records. Each one has states, guarded transitions, capped loops, the points where a person decides and the judgements the model makes for itself.

MADE calls a workflow a ceremony: the versioned definition is a ceremony definition and each run a ceremony instance. The word survives in commands such as /ceremony.

AXLR runs ordinary work directly. A workflow starts only when you ask for one: a work-mode command, /ceremony with a definition, or a self-repair or self-improvement the agent requests with evidence the console validates. The console drives the instance and the model does each step's work with AXLR tools; the model never drives a console workflow through direct made_* calls. MADE records every accepted step completion and transition in a hash-chained journal, so the result is an instance whose history can be checked, not a state that changed by itself. MADE does not verify the work: that a step did real work is the console's evidence (command exits, revisions, files), which MADE records.

MADE

MADE is Underpass's open-source coordination engine (Apache-2.0, github.com/underpass-ai/made, pre-1.0). It runs no agents and, in its local form, calls no model: the console does each step's work, while MADE decides which step may be claimed next and enables a transition only when its guards hold. Its journal verifies its own integrity and order, not the truth of the work, and a person's approval at a human guard is a separate recorded fact that an agent's claim cannot replace. AXLR uses MADE locally, as one MCP process (made-mcp) over one SQLite file; MADE also runs as a gRPC service.

Built in

Six commands start the console's pinned definitions. Selecting /debug, /delivery or /incident does not start an instance; the next prompt does. /plan opens the plans panel, and /repair and /improve run only in a clone that axlr-tui --repair or --improve prepared. AXLR checks the published definition's semantic digest, starts the instance and claims its first step.

CommandDefinitionSequence and acceptance
/debugaxlr_debug 2.0Reproduce with a nonzero command exit → diagnose → repair until the same command exits zero → integrate
/deliveryaxlr_delivery 2.0Brief with criteria, scope and baseline command → build until that command exits zero → integrate
/incidentaxlr_incident 1.0Triage → evidence timeline → analysis and actions → draft and fresh-context review → the person's approval → postmortem publication
/planaxlr_plan, axlr_task, axlr_sync 1.0Decompose a brief into verified atomic tasks → the person's approval → each task in a fresh worker (red for test-first tasks, green, hand-back) → a sync after each wave
/repairaxlr_repair 1.0Reproduce → diagnose → repair in a fresh clone → the console commits, pushes and opens the pull request → watches its checks → merge decision (automatic with repair.auto_merge, otherwise yours) → squash merge
/improveaxlr_improve 1.0Brief with a check that fails in a fresh clone → build until it passes → the console opens the pull request → watches its checks → the person's merge decision → squash merge
  • Check commands. A proposed check is {program, args} with no implicit shell. The first command, or a changed reproduction command, needs your approval even in full autonomy; once accepted, repair and build always rerun the saved command. Each run has a five-minute timeout.
  • Bounded loops. Debug reproduction and repair, and delivery build, allow at most three iterations per phase. Exhaustion leads to BLOCKED; successful integration to COMPLETED. Both return the session to normal mode.
  • What integration proves. In /debug and /delivery, integration records the report, git rev-parse HEAD and the dirty files; it does not commit, merge or publish. A zero exit proves only what that command checks.
  • Self-repair and self-improvement. axlr-tui --repair "<brief>" and axlr-tui --improve "<brief or #issue>" let the console change the configured repository (repair.repository, AXLR's own by default) through a pull request it opens with gh; an improvement always leaves the merge to you.

The console's workflow guide has the full behaviour, and the MADE runbook prepares the identity and publishes the pinned definitions.

Any published definition

/ceremony lists the published definitions; /ceremony <definition> [version] [brief] runs one through the generic loop. The console claims each step MADE lists as claimable, hands the model the step's own prompt from the definition, completes the step with exactly the fields the model hands back through axlr_step_done, applies the transition MADE enables and claims the next step. At a terminal state it writes the outcome to KMP and returns the session to normal mode. A state with no enabled transition and no claimable step, such as a MADE human guard, waits for something outside the console.

/ceremony publish <file.yaml> validates and publishes a definition you wrote; a relative path is read from the workspace. A published name and version is immutable: change the version when the content changes, and running instances stay on the version they started with. The model can design definitions; it never publishes one.

/ceremony publish draft_critique_revise-1.0.yaml
/ceremony draft_critique_revise a 300-word release note; criteria: accurate, plain, names every breaking change

The catalog

The catalog packages orchestration patterns that recur across agent frameworks and research (maker-checker, councils, red teams, Delphi rounds, STORM-style research, spec-driven delivery) as MADE definitions the generic loop can run. It is a proposal of 16 October 2026: one reference definition exists, and the console's /ceremony install command and the catalog pages per workflow are designed but not built yet. Until then, a catalog definition is published with /ceremony publish.

The reference definition: draft_critique_revise 1.0

Write a draft from a brief, critique it against the brief's named criteria, revise; at most three critique rounds (counted by the critic and bounded by MADE's max_bounces) and two revision attempts per round (MADE's step repeat). Deliver when the critique accepts it, escalate to the person when the rounds run out. It validates as publishable with MADE 0.10.0, with one accepted warning (its loop has no human-controlled state), and its four paths (accepted at once; rejected, revised, accepted; a revision that cannot settle; three rejections) were walked through a real made-mcp in a disposable store. Read the definition.

stateDiagram-v2
    direction LR
    [*] --> DRAFT
    DRAFT --> CRITIQUE: drafted
    CRITIQUE --> DELIVER: accepted
    CRITIQUE --> REVISE: revision needed
    CRITIQUE --> ESCALATE: critique exhausted
    REVISE --> CRITIQUE: revised
    REVISE --> ESCALATE: rounds exhausted
    DELIVER --> COMPLETED: delivered
    ESCALATE --> BLOCKED: escalated
    COMPLETED --> [*]
    BLOCKED --> [*]

What the generic loop can run today

MechanismTodayRule for a catalog definition
Automated guards on step status (step_status:<step>:COMPLETED) and on a top-level output field (output_field:<step>:<field>=<json>, exact equality)yesevery judgement is derived into a scalar (accepted=true, decision="approve"); a numeric threshold is computed by the step and handed back as a boolean
Loops: repeat.max_iterations on a step or state, max_transitions for the whole instance, max_bounces per edgeyesevery loop has a cap and a step_repeat_exhausted or state_repeat_exhausted exit to a terminal or escalation state
A person's decisionapproximateda step whose prompt puts the question to the person in the conversation and hands back decision, which is the model's output, not a recorded human approval. The generic loop cannot approve a MADE human guard (type: human, check: manual_approval); the built-in workflows approve theirs through a separate approver identity
Independent voices (councils, debaters, blind screeners)approximatedsequential steps, one per voice, whose prompt tells the model not to rely on earlier voices (marked see_prior: false). MADE reads that flag only in its own council handler and the generic loop runs every voice in the same session, so independence rests on the prompt alone
Check commandsonly in the pinned built-in workflowsthe step runs the command through local_exec and reports passed
Budgetper sessionmax_session_usd, the per-request context cap (prompt_tokens, 75,000 by default) and max_transitions bound the work

Tiers

A runs in the generic loop today. B runs today with the person's decision and parallel voices approximated as above; its page will say so. C waits for console features (an approval card in the generic loop, check commands, fan-out) before it is worth publishing. Rounds are always capped; the cap is in the definition.

In the tables below, a "council" is one model given several prompts, not a MADE council of registered agents, and "blind" means a prompt that excludes earlier voices. The snake_case pattern names are MADE's own (maker_checker, broadcast_collect, group_chat, handoff, magentic, advisor) or its roundtable_fixed_order preset; catalog definitions approximate them with ordinary sequential states and steps. MADE's advisor kind needs MADE 0.10.0.

Writing and editing

NameGoalStatesLoopPatternTier
draft_critique_revisepolished text from a brief with named criteriadraft → critique → revise ⟲ → deliver / escalate≤ 3 critique rounds, ≤ 2 revision attempts eachmaker_checker, Self-RefineA (reference, validated and walked)
editorial_boardone draft read by fact, style, legal and audience editors, merged by a chiefdraft → fact → style → legal → audience → merge → chief verdictone pass; chief may return onceroundtable_fixed_orderA
translation_backtranslationtranslation checked by a blind back-translationtranslate → back-translate (see_prior: false) → diff → fix ⟲ → sign-offfix ≤ 3maker_checkerA
writers_roomstory developmentpremise → pitches (4 sequential voices) → selection → beat sheet → scene drafts → table read → reviserevise ≤ 2broadcast_collectB

Research and science

NameGoalStatesLoopPatternTier
literature_review_stormcited survey of a topicperspectives → interviews (one step per perspective) → outline → person's outline decision → draft → citation check → revise ⟲revise ≤ 2STORM, broadcast_collectB
systematic_reviewscreen studies against inclusion criteria, two blind screenersprotocol → search → screen A → screen B (see_prior: false) → conflicts → extraction → bias appraisal → synthesisconflicts to the personvoting parallelizationB
reproducibility_checkre-run a paper's claimclaims → environment → run ⟲ → compare → discrepancy reportrun ≤ 3ReflexionC (check commands)
peer_review_simulationpre-submission critiquethree reviews (sequential, see_prior: false) → meta-review → rebuttal → revised verdict ⟲until scores stop moving, ≤ 2AgentReview, debateB
hypothesis_tournamentrank candidate hypothesesgenerate → pairwise debate ⟲ → ranking → person's pick → experiment designdebate ≤ 3 roundsCo-Scientist, group_chatB

Software

NameGoalStatesLoopPatternTier
spec_driven_deliveryidea to feature through reviewed specsspecify → clarify ⟲ → plan → tasks → implement (hands off to /plan) → verify → convergeclarify until no ambiguity, ≤ 3spec-kit, Kiro, orchestrator-workersC (approval cards; /plan handoff)
security_review_councilthreat model, injection, authorization, secrets and dependency lenses on a diffscope → five lenses (sequential, see_prior: false) → consolidate → rebuttal → verdict → remediation planrebuttal oncebroadcast_collect, councilB
dependency_upgradeupgrade one dependency safelyinventory → changelog digest → branch → fix breakages ⟲ → tests → PRfix ≤ 5ReflexionC (check commands, PR flow of /improve)
code_migrationmigrate in slices with parity checkssurvey → strategy (person decides) → slice plan → migrate slice ⟲ → parity → cutoverper sliceplan-and-execute, wavesC
documentation_auditfind and fix documentation that diverges from codeinventory → claims → verify claims → fix → fresh reviewverify per claimevaluator-optimizerB
test_first_loopTDD on one behaviourwrite failing test → red → implement ⟲ → green → refactorimplement ≤ 6TDD, ReflexionC (check commands; /plan tasks already do red/green)
release_readinessgo or no-goevidence → checklist → risk review → rollback plan → decisionnoneprompt chaining with a gateB

Decision-making

NameGoalStatesLoopPatternTier
red_team_reviewattack a plan before committing to itsummary → attacks (3 voices, see_prior: false) → defence → severity rating → mitigations ⟲ → sign-offuntil no new high finding, ≤ 3debate, maker_checkerA
delphi_estimateexpert-style forecastquestion → five estimates (see_prior: false) → anonymised feedback → revise ⟲ → aggregateuntil spread under the brief's bound, ≤ 3Delphi method (methodology source unverified), Mixture of AgentsB
pre_mortemhow the project failsassume failure → five failure stories → cluster → rank → mitigationsnonebroadcast_collectA
decision_memo_counciloptions memo with a vote and a dissent recordframe → options → analysis per option → five votes (see_prior: false, the same model five times) → dissent → decisionvote onceLLM Council, group_chatA
advisor_checked_taska task the executor must clear with an advisor before and afterbrief → advice → work ⟲ → advice → deliveradvice loops until no blocking advice, ≤ 3MADE advisorA

Business and administration

NameGoalStatesLoopPatternTier
rfp_responseanswer a request for proposalsrequirements → compliance matrix → draft per section ⟲ → review → price check → sign-offper section until the review passesorchestrator-workersB
procurement_comparisoncompare vendors against the person's criteriacriteria (person decides) → gather → score per vendor → sensitivity check → recommendationnoneparallelizationB
meeting_to_actionsnotes to owned, confirmed actionsextract → owners → confirm with the person → publishuntil every item has an ownerprompt chainingA
okr_reviewquarterly objectives reviewcollect evidence → score key results → explain gaps → propose next quarter → person decidesnoneprompt chainingA
incident_commscustomer-facing communications during an incidentfacts → audiences → drafts → legal read → approval → publishlegal read ≤ 2maker_checkerB

Policy and civics

NameGoalStatesLoopPatternTier
policy_brief_stakeholdersa brief tested against simulated stakeholdersevidence → draft → stakeholder simulation (4–6 personas, sequential) → revise ⟲ → sign-offuntil objections are addressed, ≤ 3Generative Agents, HabermasB
legislative_impactimpact analysis of a billsummary → affected groups → cost and benefit per group → legal consistency → options → briefnoneprompt chaining, broadcast_collectA
consultation_synthesissynthesis of public commentscluster → positions → common ground → statement → critique rounds ⟲ → final statementuntil approval rises no further, ≤ 3Habermas MachineB
deliberative_minipublica simulated citizens' assembly on one questionbriefing → small-group rounds (sequential) → plenary → recommendations → minority reportrounds ≤ 3group_chatB

Education and creative

NameGoalStatesLoopPatternTier
lesson_design_with_simulationlesson plan tried on simulated studentsgoals → plan → three students → misconception log → revise ⟲ → exam → validationuntil the students pass, ≤ 3Self-Refine plus simulationB
socratic_tutoringtutoring that asks, never tells, until the learner explains it backdiagnose → question ⟲ → learner explanation → check → next conceptper concept, ≤ 6 turnsevaluator-optimizerA
exam_generationan exam with validated answersblueprint → items → blind solve (see_prior: false) → disagreement fix ⟲ → keyfix ≤ 2maker_checkerA
game_design_loopmechanics tested by simulated playtestspitch → rules → three playtests → findings → revise ⟲ → rulebookrevise ≤ 3broadcast_collect, maker_checkerB

Data and personal

NameGoalStatesLoopPatternTier
analysis_plan_execute_auditan analysis with a blind auditplan → execute → audit (see_prior: false) → fix ⟲ → reportfix ≤ 2plan-and-executeB
data_cleaning_gatescleaning with validation gatesprofile → rules → apply → validate ⟲ → sign-offuntil validation passes, ≤ 3evaluator-optimizerC (check commands)
weekly_reviewa personal weekly reviewcollect → review → prioritise → plan → commitnoneprompt chainingA

First batch

In order of value over the cost of console work: draft_critique_revise (done), decision_memo_council, red_team_review, pre_mortem, editorial_board, meeting_to_actions, exam_generation, socratic_tutoring, legislative_impact, advisor_checked_task (all tier A), then the tier B research set (literature_review_storm, security_review_council, peer_review_simulation). spec_driven_delivery is the most-adopted pattern in the survey but needs the approval card and a handoff to /plan, so it is the first tier C candidate.

The workflow catalog design has the survey behind these choices, with its sources.