An Airflow-governed software atelier
Explore freely. Release with evidence.
Bring a commissioned change. Agents investigate and refine it in bounded work cells. Airflow governs the lifecycle; scoped evidence and human decisions govern release.
The atelier process
- 1. Commission the work. A GitHub issue selects a versioned blueprint and target.
- 2. Create one durable Cell. The Cell owns issue, target, epoch, state, and evidence.
- 3. Let Airflow guide the lifecycle. Airflow is the only lifecycle scheduler: retries, waits, approvals, and cancellation.
- 4. Craft in disposable compute. The agent gets a bounded job and sandbox. It does not get release authority.
- 5. Verify the exact candidate. Tests and review produce scoped evidence; missing checks and unresolved limits stay visible.
- 6. Steward release. The trusted control plane creates the PR. People retain final merge authority.
commission -> cell -> airflow -> craft -> evidence -> stewarded release
Evidence has a scope.
Every important release claim should name the exact candidate, assumptions, verification method, result, and remaining uncertainty. A proof establishes its theorem under its definitions and axioms; it does not automatically prove that deployed software refines the model. Tests, fuzzing, benchmarks, and observations answer different questions.
The atelier records what is known, what remains fuzzy, and the next useful check. Formalizability is not a proof verdict, and evidence never grants release authority. Read the verification and uncertainty method.
Matter, motion, and authority
Treat software delivery like a non-equilibrium system: create entropy while searching, then destroy entropy before promotion. Durable Cells, accepted digests, evidence, and publication state are matter. Agents, sandboxes, builds, task graphs, and caches are motion.
accelerate motion != mint authority
- Turborepo: content hashes can skip identical build work.
- swfactory: digest-bound gates decide which exact candidate may advance.
- Airflow: remains the only lifecycle scheduler.
One commission, end to end
The drawing follows a single issue from the operator console to a pull request a person merges: where Airflow maps the work into cells, which two stages stop and wait for a human, and where each stage leaves evidence behind.
uv run swfactory demo to
watch the same stages replay locally and print a real stage report.
What stays non-liquid
- Scheduling: Apache Airflow only.
- Identity: one durable Factory Cell per issue and target.
- Mutations:
(cell_id, epoch, operation_key)is fenced or idempotent. - Authority: sandboxes can edit; they cannot approve, publish, or promote themselves.
- Evidence: success, refusal, repair, latency, and cost stay attached to the run.
Sandbox support
A sandbox is disposable compute, not a scheduler. Policy support is backend-specific. The factory owns the issue-to-PR route; providers supply the execution boundary.
Each status below is the support value of that profile's row in
the capability inventory, which is the single public truth for a claimed feature.
A profile with no claim is an integration seam.
| Profile | Support | Boundary |
|---|---|---|
local | test only | process execution; no kernel isolation claim |
srt | experimental | Sandbox Runtime policy boundary |
docker | experimental | container boundary |
islo | experimental | provider-backed disposable cell |
toolset | adapter | common-ai SandboxBackend |
daytona | custom backend required | provider integration seam |
e2b | custom backend required | provider integration seam |
tensorlake | custom backend required | provider integration seam |
boat | adapter | boat.dev hosted VM (WorldGen pilot, scripted agent) |
toolset_backend = "package.module:Class" and run with
--sandbox toolset. If a required isolation policy is unsupported, the run
stops with StageError. The factory does not fake provider capabilities.
Blueprints are routes, not schedulers
A blueprint defines steps, limits, approvals, and sandbox choice. It compiles into work
that Airflow schedules. Astronomer Blueprint users can expose the same route as
software_factory without creating a second lifecycle authority.
Run it
No model key is required for the scripted local demo.
git clone https://github.com/zozo123/ariflow-swfactory.git
cd ariflow-swfactory
uv sync
uv run swfactory demo
Then inspect the generated branch, evidence, and pull-request path.