12-factor-fasd

12 Factor FASD (Fully Autonomous Software Development)

Japanese | English | GitHub

Introduction

Context

FASD (Fully Autonomous Software Development) refers to a software development methodology in which AI runs design, implementation, and testing autonomously after requirements definition. You provide requirements—created either by AI or by humans—and the system proceeds autonomously all the way to generating the final deliverable. There is no human intervention during execution, such as approvals. You can take the results of one FASD run, incorporate feedback, and run it again, but humans do not interrupt while FASD is in progress. As the name implies, the AI operates fully autonomously.

The goal of FASD is to reduce software development costs. Development paradigms using AI can be categorized as Lv1: manual, Lv2: human with AI, Lv3: AI with human, and Lv4: AI. FASD aims to reach Lv4. It can reduce costs far more than anything up to Lv3.

Let’s define some terms. We will call any product that enables FASD a product. And we will call the final deliverable produced by FASD Fasdware.

About this document and its intended audience

This document organizes the essence of how to make FASD succeed—still at the cutting edge today—into 12 tips. It is inspired by 12 Factor Agents, but it does not include that content. However, the core ideas are similar. 12 Factor FASD goes deeper into more concrete fundamentals specifically for FASD. If you have not studied 12 Factor Agents, you should understand it first.

The intended audience of this document is individuals or companies exploring FASD. It is meant to provide hints for exploration—specifically, to try in practice or to use as topics for discussion.

As a caveat, as stated above, FASD is still advanced and has no established practices yet. This document was written to inspire those of you taking on that challenge.

12 Factor FASD

1: Bulk up prerequisite information for requirements in plain text

Because you can’t do what isn’t written.

Actions:

Background:

Considerations:

2: Make requirements verifiable

Because if you can’t verify requirements, you can’t judge quality or completion.

Actions:

Background:

Considerations:

3: Make quality pluggable (replaceable)

Because quality is an agreed-upon set of criteria, and there is no single absolute answer.

Actions:

Background:

Considerations:

4: Make components pluggable too

Because it is unrealistic to build an entire software system—or most of it—at once.

Actions:

Background:

Considerations:

5: Make workflows strictly designable and correctable

Because workflows are what impose order on agents.

Actions:

Background:

Considerations:

6: Make agents composite

Because it strikes the right balance between reproducibility and flexibility.

Actions:

Background:

Considerations:

7: Interpret deliverables in an LX (LLM Transformation) way

Because the value of an LLM as a tool is not “realizing the UI/UX exactly as humans imagined,” but “being usable without issues”—and the former is not a necessary condition for the latter. In fact, there should be a sweet spot where you can satisfy the latter without satisfying the former.

Actions:

Background:

Considerations:

8: Eliminate visuals

Because visuals are not LLM-friendly.

Actions:

Background:

Considerations:

9: Abort before exceeding the context window

Because forgetting (exceeding the context window) leads to low quality.

Actions:

Background:

Considerations:

10: Keep wait time under a coffee break

Because the efficiency of the feedback loop matters most.

Actions:

Background:

Considerations:

11: Enable self-driven onboarding

Because you should reduce the cost of teamwork and spend that capacity on diverse experiments.

Actions:

Background:

Considerations:

12: Handle non-functional requirements with best-effort craftsmanship

Because non-functional requirements are contracts between humans, intertwined with environmental constraints and intentions, so doing them as FASD is missing the point.

Actions:

Background:

Considerations: