Skip to content

Flowline

Status: open/draft

  • The workflow-authoring kit for the work-runner engine: a typed TypeScript API that compiles to the engine’s DAG format.
  • It authors; it does not execute. The engine executes data, never user code — in-code workflows lower to the DAG format at the boundary.
  • Leveled, so a caller pays only for what it uses: pipe (typed composition), llm (the agent step), workflow (tasks, blackboard, runner), dag (parallel dispatch, fan-out), durable (journaled, resumable runs).
  • Domain-blind by build constraint — it carries no SDLC entity and never imports the substrate (D-VSLI-distributed-work-runner-architecture).
  • Consumes the ontogen-generated contract types rather than declaring its own; the DAG format is the contract, and flowline is one surface onto it.

Flowline is how a human or an agent writes a workflow the engine can run. The engine executes exactly one thing — a compiled DAG, plain JSON, versioned and diffable — and any surface that compiles to that format is admissible. Flowline is the first such surface and the one this project uses.

It exists at packages/ts/flowline, today as a scaffold. The working implementation is parked on origin/consolidate/workflow-library-full (~1,800 lines across the five levels, with seven test suites) and lands behind the settled contract in ledger phase E5. B-QAHU-decide-the-fate-of-the-parked-flowline-implementation closed into that decision: the spike becomes the authoring kit, not the engine core.

TypeScript is deliberate and bounded. P-0012-rust-core-adapters-as-needed puts semantics in Rust at the centre and adapters at the edges; an authoring surface is an edge, chosen to fit its consumer. That is why flowline is TypeScript while the engine and scheduler under it are not.

Inside this product:

  • The leveled authoring API and its type surface.
  • The lowering step: in-code TypeScript workflows compiled to the DAG format before the engine sees them.
  • Journaled-run ergonomics on the authoring side.

Outside it:

  • Execution. The engine runs the DAG; flowline never dispatches, claims, or supervises.
  • The DAG format itself. That is the engine’s contract, defined in Rust and generated outward; flowline binds to the emitted types.
  • Scheduling. The frontier and the policy filter chain belong to the engine and PR-DZTZ-graph-scheduler.
  • Anything SDLC-shaped. No task, no corpus schema, no readiness contract.

The Temporal decline holds at the execution plane: durable run records are borrowed, code-as-workflow is not. In-code authoring is an ergonomics choice at the boundary, not a commitment to replaying user code.


← Back to Products