Reference implementation for the Phoenix Architecture. Work in progress.
aicoding.leaflet.pub/
ai
coding
crazy
1# Phoenix VCS
2
3**Regenerative version control that compiles intent to working software.**
4
5Phoenix takes a specification written in plain language, extracts structured requirements, and generates a working application — database, API, validation, and UI — with full traceability from every line of spec to every line of generated code.
6
7```
8spec/todos.md (40 lines) → phoenix bootstrap → working app
9```
10
11## What it does
12
13Write what you want in a markdown spec:
14
15```markdown
16## Tasks
17
18- A task has a title, a priority (urgent, high, normal, low), and an optional due date
19- Users can create tasks by providing at least a title
20- Users can mark a task as complete or reopen a completed task
21- Users can filter tasks by status, project, or priority
22- Overdue tasks must be visually highlighted
23```
24
25Phoenix compiles this through a pipeline:
26
27```
28Spec → Clauses → Canonical Requirements → Implementation Units → Generated Code
29```
30
31Each transformation is tracked. Change one line in the spec and Phoenix knows exactly which code needs to regenerate — and which doesn't.
32
33## Quick start
34
35```bash
36# Install
37git clone https://github.com/chad/phoenix.git
38cd phoenix
39npm install
40npm run build
41
42# Create a project with the sqlite-web-api architecture
43mkdir my-app && cd my-app
44mkdir spec
45
46# Write your spec
47cat > spec/app.md << 'EOF'
48# My App
49
50## Items
51
52- An item has a name and a quantity
53- Users can create, view, update, and delete items
54- Name must not be empty
55EOF
56
57# Generate
58npx phoenix init --arch=sqlite-web-api
59npx phoenix bootstrap
60
61# Run
62npm install
63npm run dev
64# → http://localhost:3000
65```
66
67## Architecture targets
68
69Phoenix doesn't just generate code — it compiles to an **architecture**. The architecture target defines the runtime, frameworks, patterns, and conventions. The spec defines *what*, the architecture defines *how*.
70
71The first built-in target is `sqlite-web-api`:
72- **HTTP**: [Hono](https://hono.dev)
73- **Database**: [better-sqlite3](https://github.com/WiseLibs/better-sqlite3)
74- **Validation**: [Zod](https://zod.dev)
75- **Pattern**: Route modules with shared DB, migration system, Zod schemas
76
77New architectures can be added by creating a single file in `src/architectures/`. The pipeline doesn't change — only the compilation target.
78
79## The pipeline
80
81```
82┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌──────┐ ┌───────────┐
83│ Spec │ → │ Clauses │ → │ Canonical │ → │ IUs │ → │ Generated │
84│ (markdown)│ │ (parsed) │ │ Requirements │ │ │ │ Code │
85└──────────┘ └──────────┘ └──────────────┘ └──────┘ └───────────┘
86 │
87 ◄──────────── Provenance edges track every transformation ───────┘
88```
89
90- **Spec ingestion**: Parses markdown into content-addressed clauses with semantic hashes
91- **Canonicalization**: Extracts typed requirements (REQUIREMENT, CONSTRAINT, INVARIANT, DEFINITION, CONTEXT) with confidence scores and relationship edges
92- **IU planning**: Groups requirements into Implementation Units with risk tiers, contracts, and boundary policies
93- **Code generation**: LLM generates real implementations guided by architecture-specific prompts and few-shot examples, with typecheck-and-retry
94- **Selective invalidation**: Change one spec line → only the dependent subtree regenerates
95
96## Visualization
97
98```bash
99npx phoenix inspect
100```
101
102Opens an interactive pipeline visualizer in your browser. Click the **Spec** tab to see your spec text with hover highlighting — click any line to trace its path through clauses → canonical nodes → IUs → generated files.
103
104## CLI
105
106```bash
107phoenix init [--arch=NAME] # Initialize a project
108phoenix bootstrap # Full pipeline: ingest → canonicalize → plan → generate
109phoenix ingest [--verbose] # Ingest spec changes (shows diff before applying)
110phoenix diff # Show clause-level diffs
111phoenix canonicalize # Extract canonical requirements
112phoenix regen [--iu=ID] # Regenerate code (all or specific IU)
113phoenix status # Trust dashboard
114phoenix inspect # Interactive pipeline visualization
115```
116
117## Examples
118
119### [todo-app](examples/todo-app/)
120
121A Todoist-style task manager generated from a [user-centric spec](examples/todo-app/spec/todos.md). Features:
122- Tasks with priorities, due dates, projects, completion tracking
123- Projects with colors and active task counts
124- Filtering by status, priority, and project
125- Stats summary with completion percentage
126- Full web UI with sidebar, forms, filters
127- REST API for integration with external tools
128
129All generated from ~40 lines of behavioral requirements.
130
131### [phoenix-self](examples/phoenix-self/)
132
133Phoenix specifying itself. The [PRD](PRD.md) decomposed into 6 specs covering ingestion, canonicalization, implementation, integrity, operations, and platform. Used to stress-test the canonicalization pipeline on real-world complexity.
134
135### Other examples
136
137- [settle-up](examples/settle-up/) — Expense splitting with debt simplification
138- [pixel-wars](examples/pixel-wars/) — Real-time multiplayer territory game
139- [tictactoe](examples/tictactoe/) — Multiplayer game with matchmaking
140- [taskflow](examples/taskflow/) — Task management with analytics
141
142## How it works under the hood
143
144### Canonicalization
145
146Every spec sentence is scored against 5 canonical types using a keyword rubric with configurable weights. The resolution engine deduplicates nodes via token Jaccard similarity, infers typed edges (constrains, refines, defines, invariant_of), and builds a hierarchical graph. The pipeline was optimized through 32 automated experiments (autoresearch-style) across 18 gold-standard specs.
147
148### Code generation
149
150The LLM receives a structured prompt with:
1511. Canonical requirements, constraints, invariants, and definitions for the IU
1522. Architecture-specific system prompt (import rules, patterns, conventions)
1533. Few-shot code examples showing the exact patterns to follow
1544. Related context from other spec sections
1555. Sibling module mount paths (so the web UI knows where the API lives)
156
157If generation fails or doesn't typecheck, the system retries with error feedback. If that fails, it falls back to architecture-aware stubs that still produce valid, mountable modules.
158
159### Drift detection
160
161Phoenix tracks a manifest of every generated file's content hash. `phoenix status` compares the working tree against the manifest and flags any unlabeled manual edits. This is how Phoenix knows if you've modified generated code and need to either promote the change to a spec requirement or add a waiver.
162
163## Status
164
165Alpha. The core pipeline works end-to-end — spec to working app with full traceability. The `sqlite-web-api` architecture target generates functional CRUD APIs with web UIs from behavioral specs.
166
167What's next:
168- More architecture targets (Express + Postgres, Cloudflare Workers + D1, CLI apps)
169- Smarter IU planner (merge cross-cutting concerns into parent resources)
170- Selective regeneration from spec edits (the pipeline supports it, the UX needs work)
171- Test generation and evidence collection
172- Multi-file spec projects with cross-references
173
174## License
175
176MIT