Key insight: Rig and Bond operate at different abstraction levels: - Rig = source-level composition (formula YAML with extends/compose) - Bond = artifact-level composition (protos, mols, wisps) This preserves the symmetric bond table while cleanly separating authoring (rig) from runtime composition (bond). New docs: - rig-cook-run.md: Canonical spec for the three phases Updated docs: - molecule-algebra.md: Three Phases section, rig/bond distinction - molecular-chemistry.md: Rig/bond clarification in bond section - vision.md: Core Innovation 3 now covers Rig/Cook/Run "This is a discovery, not an invention." 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.0 KiB
Rig, Cook, Run: The Gas Town Work Lifecycle
Status: Canonical specification Discovery: 2025-12-23
The Three Phases
Gas Town work flows through three phases:
RIG ────→ COOK ────→ RUN
| Phase | What Happens | Input | Output |
|---|---|---|---|
| Rig | Compose formulas | Formula YAML | Compound Formula |
| Cook | Instantiate work | Formula/Proto | Proto/Mol/Wisp |
| Run | Execute steps | Mol/Wisp | Work done |
Phase 1: Rig (Authoring)
Rigging is source-level composition. You write formula YAML files that reference and compose other formulas.
# shiny-enterprise.formula.yaml
formula: shiny-enterprise
extends: shiny # ← rigging: inherit from shiny
compose:
- expand:
target: implement
with: rule-of-five # ← rigging: expand with macro
- aspect:
pointcut: "implement.*"
with: security-audit # ← rigging: weave in aspect
Rig operators (in formula YAML):
extends- inherit from another formulacompose- apply transformations (expand, aspect, gate, loop, branch)
Rigging is static - it happens before cooking, at authoring time.
Phase 2: Cook (Instantiation)
Cooking transforms formulas into executable work.
bd cook shiny-enterprise # Formula → Proto (flat, expanded)
bd pour shiny-enterprise # Proto → Mol (liquid, persistent)
bd wisp shiny-enterprise # Proto → Wisp (vapor, ephemeral)
Cook produces three artifact types:
| Command | Output | Phase of Matter | Storage |
|---|---|---|---|
bd cook |
Proto | Solid (frozen) | .beads/ |
bd pour |
Mol | Liquid (flowing) | .beads/ |
bd wisp |
Wisp | Vapor (ephemeral) | .beads-wisp/ |
Cooking is deterministic - same formula always produces same structure.
Phase 3: Run (Execution)
Running executes the steps in a mol or wisp.
gt sling shiny-enterprise polecat/alpha # Cook + assign + run
Agents execute mols/wisps by:
- Reading the pinned work from their hook
- Completing steps in dependency order
- Closing steps as they finish
- Exiting when all steps complete
Running is where cognition happens - agents provide judgment, code, decisions.
The Two Composition Operators
Rig (Source-Level)
Operates on formulas (YAML source files).
Formula + Formula ──rig──→ Compound Formula
Use rigging when:
- You're authoring new workflows
- You want version-controlled composition
- You need the full algebra (extends, aspects, macros)
Bond (Artifact-Level)
Operates on artifacts (protos, mols, wisps).
Artifact + Artifact ──bond──→ Combined Artifact
The Bond Table (symmetric, complete):
| bond | Proto | Mol | Wisp |
|---|---|---|---|
| Proto | Compound Proto | Spawn Mol, attach | Spawn Wisp, attach |
| Mol | Spawn Mol, attach | Link via edges | Link via edges |
| Wisp | Spawn Wisp, attach | Link via edges | Link via edges |
Use bonding when:
- Runtime dynamic composition (patrol discovers issue → bond bug mol)
- Ad-hoc combination without writing YAML
- Combining Mol Mall artifacts without source
- Programmatic proto generation
The Complete Picture
SOURCE LEVEL
════════════
Formula ─────rig─────→ Compound Formula
│ │
│ │
└──────────┬─────────────┘
│
cook
│
▼
ARTIFACT LEVEL
══════════════
Proto ──────bond─────→ Compound Proto
│ \ │ \
│ \ │ \
pour wisp pour wisp
│ \ │ \
▼ ▼ ▼ ▼
Mol Wisp ───bond───→ Linked Work
│ │
└───┬───┘
│
run
│
▼
EXECUTION
═════════
Steps complete
Work gets done
Digests created
Vocabulary Summary
| Term | Meaning | Example |
|---|---|---|
| Formula | Source YAML with composition rules | shiny.formula.yaml |
| Rig | Compose formulas (source level) | extends: shiny |
| Cook | Transform formula → proto | bd cook shiny |
| Proto | Frozen workflow template | Cooked, immutable structure |
| Pour | Instantiate as mol (liquid) | bd pour shiny |
| Wisp | Instantiate as wisp (vapor) | bd wisp shiny |
| Mol | Flowing persistent work | Tracked in .beads/ |
| Wisp | Ephemeral transient work | Tracked in .beads-wisp/ |
| Bond | Combine artifacts (any level) | bd bond proto-a proto-b |
| Sling | Cook + assign to agent hook | gt sling shiny polecat/alpha |
| Run | Execute mol/wisp steps | Agent follows molecule |
The Metaphor Sources
| Concept | Breaking Bad | Mad Max |
|---|---|---|
| Formula | Secret recipe | Fuel formula |
| Rig | Lab setup | War Rig assembly |
| Cook | "Let's cook" | Refining guzzoline |
| Proto | 99.1% pure crystal | Refined fuel |
| Pour/Wisp | Distribution | Pumping/vapor |
| Mol/Wisp | Product in use | Fuel burning |
| Bond | Cutting/mixing | Fuel blending |
| Sling | Dealing | Fuel dispatch |
| Run | The high | The chase |
Why This Matters
- Clean separation: Source composition (rig) vs artifact composition (bond)
- Symmetric operations: Bond table is complete, no holes
- Clear phases: Rig → Cook → Run, each with distinct purpose
- Metaphor coherence: Breaking Bad + Mad Max vocabulary throughout
- Implementation clarity: Each phase maps to specific commands
This is a discovery, not an invention. The structure was always there.