Skip to content

The Automated Workflow

If The Process is how one feature travels from an idea to a closed ticket, this is the repeating engine that drains a whole sprint or milestone around it. FlowForge’s founder calls it the moat:

“Our real moat is: create a feature (generate all the documentation, blueprints, milestone/sprint and tickets) → kanban → see it in waves → auto-fire → auto-merge → iterate until the end of the sprint/milestone. As auto-merge works perfectly, we have a real automated workflow.”

Every node below maps to a real command, package, or rule in FlowForge — the chart is a mirror of what the tool actually does today.

The FlowForge automated workflow loop. You create a feature once — requirements become blueprints, which are ratified, and from the ratified blueprint the milestone, sprint, and micro-tickets are emitted. Every emitted ticket becomes a card on the kanban board (backlog, in-progress, review, done). The cards are grouped into dependency waves W0 through W4, colour-coded as launch order: W0 blue is ready now, W1 green unlocks when W0 is merged, W2 amber when W0 and W1 merge, W3 purple when W0 through W2 merge, and W4 cyan (colours repeat past W4, the label is the true id). Autofire fires the current ready wave — scoped to the current filter and to you as assignee, one sprint or milestone at a time, off at any time, backed by the loop runtime — spawning an isolated-worktree worker per ticket that builds design-then-build-then-tests and opens a draft pull request. Each worker's work must clear two gates: a GOLDEN review by fft-code-reviewer at head, and green CI (no-merge-on-red); work that is not GOLDEN or is red stays DRAFT and the worker remediates up to three times before escalating. In this default sheet, node seven is the founder merge-go: the controller surfaces the GOLDEN and green pull request and the founder presses m, because auto-merge is off. On merge, the next wave unlocks and the loop iterates — autofire, workers, gates, merge — until no ready waves remain, at which point the sprint or milestone is sealed and the founder ratifies the grade.

Edit this diagram in Excalidraw — the editable source for this chart.

This is the default — auto-merge OFF, the founder performs each merge. There is one opt-in variant, shown below, where a standing consent flag lets each merge fire hands-free once the same gates clear.

One feature goes from intent to a ratified blueprint, and from that blueprint the milestone, sprint, and its micro-tickets are emitted — documentation, milestone, and tickets in one guided pass. Nothing is hand-typed: the tickets are derived from the ratified feature record through the EMIT ⟺ RATIFIED chokepoint (a direct gh issue create for implementation work is denied). The full requirements → blueprint → emit spine is The Process, nodes 1–5.

Every emitted ticket becomes a cardbacklog · in-progress · review · done. This is where you see the whole feature at once.

The cards are grouped into dependency layers, ≈W0 → ≈W4, so you see launch order rather than a flat list. A card’s colour is its wave:

WaveColourUnlocks
≈W0blueready now — no unmet dependency
≈W1greenwhen all W0 is merged
≈W2amberwhen W0 + W1 are merged
≈W3purplewhen W0..W2 are merged
≈W4cyancolours repeat past W4 — the ≈W{N} label is the true id

Colour never carries a wave alone — the ≈W{N} label rides with it, so the board reads under colour-vision deficiency and with NO_COLOR.

Autofire fires the current ready wave and keeps the merge pipeline self-driving on every tick. It is deliberately scoped and interruptible — this is the honest heart of the loop:

  • current filter · assignee = you — it acts on the board you are looking at, for your tickets, not the whole repo.
  • one sprint / milestone at a time — it advances a single milestone’s waves; it never fans across milestones.
  • fires only the ready wave — a wave with unmet dependencies is parked, never launched early.
  • off at any time — it is a toggle, not a runaway.
  • /loop-backed — it runs on the /loop-as-runtime substrate: bounded iterations, a no-progress breaker, and a spawn/spend ceiling.

Each fired ticket runs as an isolated-worktree worker on its own branch, launched in permission-mode auto. The worker sequences the specialists — design → build → tests (TDD on code that matters) — reaches its /goal, and opens a draft pull request.

Two independent gates must both clear before a merge is possible:

  • GOLDEN @headfft-code-reviewer is the sole GOLDEN arbiter, dispatched isolated and out-of-process at head.
  • No-merge-on-red — required CI checks must be green; a live pre-merge hook enforces it at the merge chokepoint.

Work that is not GOLDEN, or red, stays DRAFT — the worker remediates on its /goal (up to three rounds), then escalates to you. Auto-merge never routes around this.

The founder merges (this default sheet). The controller surfaces the GOLDEN, green, READY pull request and you press m. When the standing consent flag is on, this step changes — see the auto-merge-ON variant below.

A merge unlocks the next wave (W0 merged ⟹ W1 ready, and so on). Autofire fires it, and the loop repeats — autofire → workers → GOLDEN + CI → merge → iterate — until no ready waves remain. Then the milestone is sealed: the seal computes the grade and you ratify it, gap by gap (the seal surfaces each gap, it never rewrites the blueprint).

The chart at the top is the default: auto-merge OFF, the founder performs each merge (node 7). FlowForge also ships an opt-in capability — the merge-autonomy standing-consent flag — that lets each merge fire hands-free. Here is the same loop with that flag on:

The FlowForge automated workflow loop with auto-merge ON. It is identical to the default loop through create-a-feature, kanban, waves, autofire, the isolated workers, and the two gates — GOLDEN review at head and green CI, both still required. The single difference is node seven: instead of the founder pressing m, the merge fires hands-free about eighteen seconds after GOLDEN once CI is green, because the merge-autonomy standing-consent flag is on. Node seven is drawn in green as AUTOMERGE. A callout states the flag is consent to merge, never permission to skip the gates: GOLDEN and green CI are still required, and auto-merge only removes the manual merge click. The loop still iterates wave by wave until the sprint or milestone is sealed.

Edit this diagram in Excalidraw — the editable source for the auto-merge-ON variant.

What changes, and what does not:

  • What changes — node 7 is no longer a founder click. With the flag on, once GOLDEN and green CI both hold, the merge fires hands-free (about eighteen seconds after GOLDEN). Founder touchpoints reduce to the two upstream ratify gates (the plan and the blueprint).
  • What does not change — the flag is consent to merge, never permission to skip the gates. GOLDEN and green CI are still required. Auto-merge only removes the manual merge click; it never merges un-reviewed or red work. The flag is off by default and turning it on is a deliberate, recorded choice.

This is why the two sheets share one spine and one legend: the discipline is identical; only the last human touch is automated away, and only after the same gates have cleared.


The node-by-node source anchoring lives in the repository at documentation/2.0/architecture/3431-automated-workflow-model.md. Both sheets render in the FlowForge brand theme (brand-black and cyanotype) via the #1749 chart generator; this chart is a companion to The Process.