Skip to main content
Flow generation reads the documents a repository links, extracts their claims, builds flows from them, and writes and proves the tests for each flow.

When it runs

  • After Flow setup, when the recipe held.
  • After a Document scan changes the slice of a repository that is already set up.
  • After you settle the last open conflict, or dismiss the last finding, that blocked it.
  • When you press Run or Re-run on the Flow generation row of the repository’s Pipeline tab.
Flow generation works on the repository’s default branch. It calls a model, so the workspace needs a provider on Settings › Models. It does not run for a repository that reads no documents.

What it does

1

Extract claims

One session per document extracts the claims its sections make.
2

Build flows

One session per area groups the claims into flows, each with its milestones and their cases. One more pass looks for journeys that cross areas.
3

Write and prove tests

A pool of workers writes each flow’s tests and proves them by running them against the program as they are written.
When a section’s text changes, a check decides whether the change altered what the section promises. Only then are the flows bound to that section written again.

Open conflicts block it

Flow generation does not run while the repository’s slice of the corpus has an open conflict. It stores a blocked report and settles as a warning. Settling the last conflict starts it.

What it stores

Flow generation stores the tests and a report. The Flow generation row of the Pipeline tab reads the report, for example how many tests were written and how many flows are blocked, or why the job stopped. When the tests are stored, Flow generation starts a Flow run. A cancelled Flow generation stores nothing. A generation that a check stopped, such as open conflicts or a provider that failed its probe, is still listed on Agent with its reason.

Reading a flow

Open a flow from Flows. Its page shows:
  • the flow’s milestones in order, each linking to the section it comes from;
  • each milestone’s cases, the situations that would prove it;
  • the tests that prove the flow, and their results.
A flow you wrote by hand carries a hand-written chip. A failing test can carry a triage verdict that says whose problem it is:

Why a flow is blocked

A Blocked flow says what it needs. Common reasons:

Stop testing a flow

On a flow’s page, Don’t test this flow removes it from testing. The next Flow generation drops the flow and deletes its tests. Un-dismiss puts it back.

Next steps

Flow run

How the tests execute, and where their evidence goes.

External services

Unblock flows that need a third party.