W14 — Jobs promoted into the flow runtime
The reorganization of the year. Every legacy job promoted into the flow runtime. 35k +LOC, 19k −LOC, the largest net code movement of the project. ComfyUI workflow skill, flow loops, workflow boundary nodes, constants runtime — all in seven days.
The largest week by raw code volume. Most of it isn’t new features — it’s the convergence of the two execution engines (jobs and flows) into a single substrate.
What shipped
The jobs-into-flows promotion
A 17k-LOC commit that took every legacy linear job and re-expressed it as nodes in the flow runtime. Up until this week, jobs and flows were parallel implementations with overlapping concerns; after this week, they were the same thing with two surfaces. The cron pipeline editor became a curated subset of the flow builder; the flow builder gained every skill the jobs system had accreted.
Workflow boundary nodes + constants runtime
Flow inputs and outputs as proper typed boundary nodes, not implicit conventions. A constants runtime so values can be defined once and referenced across an entire flow without serialization gymnastics. 2k LOC.
ComfyUI workflow skill
A 21k-LOC drop wiring ComfyUI workflows into the cockpit as first-class flow nodes. Image and video pipelines now compose with chat, jobs, and storage. Storage nodes, a UI→API converter, display improvements all rode along.
Flow loops + condition evaluation
528 LOC, but easily the most architecturally important change of the week. Loops in the flow runtime turn the graph from a DAG into a proper computation surface. Combined with condition evaluation, the runtime became Turing-complete in any practical sense.
Jobs node title formatting
A small but high-touch quality-of-life: when a flow node represents a particular job, its title surface variant + reactive job-name sync. The kind of detail that makes the canvas feel alive.
Flow runtime cache + trigger semantics tightening
End-of-week consolidation. Caching boundaries, trigger semantics, idempotency. The kind of work that nobody asks for but that quietly raises the floor.
Architecture moves
The jobs-promote-into-flows decision was the second-biggest architectural call of the project (after the original Svelte cutover). It cost a week of pure refactor; in return, the cockpit stopped having two ways to express a pipeline. Every skill, every trigger, every retry curve now lives in one place. New surfaces (the chat-as-tool work in W15, the Telegram bridge in W18) all hung off the same skill registry.
The other lasting decision was making loops first-class. A pipeline language without loops is a pipeline language for trivia; with loops it becomes a control surface for actual recurring work.
By the numbers
- 9 commits
- +35,627 / −18,886 (net +16,741)
- 8 milestone-class drops, including the project’s largest single commit (21k +LOC for ComfyUI)
What’s next
Stabilize. The next two weeks are about polish and consolidation after this much movement.