home / skills / plurigrid / asi / phyllotaxis

phyllotaxis skill

/skills/phyllotaxis

This skill helps you explore phyllotaxis-inspired growth patterns and optimize propagator networks for balanced, emergent golden-angle arrangements.

npx playbooks add skill plurigrid/asi --skill phyllotaxis

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
7.7 KB
---
name: phyllotaxis
description: Succulent rosette growth as propagator network — golden angle = Nash equilibrium, auxin chemotaxis = affective taxis, BCI modulation = closed-loop biofeedback
trit: 1
color: "#3DD98F"
---

# Phyllotaxis

> Spiral leaf arrangement as a propagator network where the golden angle emerges as Nash equilibrium.

**Trit**: +1 (PLUS - Generator)
**Color**: #3DD98F (green — growth)

## Core Insight

The Douady-Couder model of phyllotaxis IS a propagator network (SDF Ch7):
- **Cells** = primordia (partial information: position, auxin, inhibition)
- **Propagators** = Gaussian inhibition kernels (constraint transformers)
- **Scheduler** = plastochron clock (SICP Ch5 explicit control)
- **Quiescence** = golden angle spiral (Nash equilibrium)

The golden angle (137.508°) is not designed — it EMERGES from the constraint network, just as Nash equilibria emerge from propagator-based game solving.

## Architecture

```
                    ┌─────────────────────────────────────┐
                    │        Phyllotaxis Propagator        │
                    │         (SDF Ch7 × Nash)             │
                    └──────────────┬──────────────────────┘
                                   │
          ┌────────────────────────┼────────────────────────┐
          │                        │                        │
    ┌─────▼──────┐          ┌──────▼──────┐          ┌──────▼──────┐
    │   Julia     │          │  TypeScript  │          │   Scheme    │
    │ succulents  │          │  Nashator    │          │  Goblins    │
    │   .jl       │          │  stress-     │          │  rosette-   │
    │             │          │  games.ts    │          │  actor.scm  │
    └─────┬──────┘          └──────┬──────┘          └──────┬──────┘
          │                        │                        │
    Continuous               Game-theoretic            Actor-based
    simulation               equilibrium               concurrency
    + BCI bridge             + propagator              + CapTP bridge
    + taxis bridge           + mechanism               + vat isolation
    + GF(3) verify           design (inverse)          + plugin spec
```

## Mathematical Foundation

### Douady-Couder Inhibition Model

New primordium placement at angle θ* that maximizes auxin:

```
θ* = argmax_θ [ A(θ) - Σᵢ α · exp(-d(θ, pᵢ)² / (2λ²)) ]
```

Where:
- A(θ) = ambient auxin field
- α = inhibition strength (optimal: 2.0)
- λ = inhibition range (optimal: 0.08)
- d(θ, pᵢ) = Euclidean distance from candidate to primordium i

### Golden Angle as Nash Equilibrium

Two adjacent leaves compete for light. Strategies: angular deviations from current position. Payoff: light capture = 1 - overlap penalty.

The Nash equilibrium IS the golden angle: no leaf can unilaterally improve its light capture by deviating from 137.508° divergence.

### Auxin Chemotaxis = Affective Taxis

From affective-taxis.jl: `auxin_density(x)` maps to `attractant_density(z)`, and `auxin_gradient(x)` maps to `grad_log_density(z)`. The Langevin dynamics are identical:

```
dz/dt = ∇_z log γ(z; β) + √2 dσ(t)
```

Where z = primordium position, γ = auxin concentration, β = temperature.

### GF(3) Conservation

Index-based trit assignment ensures perfect balance:
```
classify_trit(i) = { +1 if i mod 3 = 0, 0 if i mod 3 = 1, -1 if i mod 3 = 2 }
```

For N primordia: N mod 3 = 0 → perfect 7/7/7 balance (21 primordia).

## Implementations

### Julia: `succulents.jl` (~550 LOC)

Full continuous simulation with BCI integration:

```julia
# Grow 21 primordia
M = Meristem(λ=0.08, α=2.0, plastochron=6)
for _ in 1:136; tick!(M); end

# Results: 9.49° golden deviation, GF(3) 7/8/7 BALANCED
verify_conservation(M)  # ✓

# BCI modulation
ps = PhenomenalState(φ=0.8, valence=0.6, entropy=1.5, trit=PLUS)
modulate_growth!(M, ps)

# Taxis bridge
AL = AuxinLandscape(M)
classify_valence(auxin_gradient(AL, θ))  # → PLUS/ERGODIC/MINUS
```

Optimal parameters (from sweep): λ=0.08, α=2.0 → 9.49° deviation from golden angle.

### TypeScript: Nashator stress-games.ts

Game-theoretic formulation as OpenGame instances:

```typescript
leafLightCompetition(5)   // 5-strategy light competition game
auxinCompetition(7)       // 7-position auxin inhibition game
rosetteLifecycle()        // seq(auxin ; light ; water) — GF(3) balanced

// Solve via propagator network
solvePropagator(leafLightCompetition(5), { maxRounds: 2000 })
// → golden angle offset = high-weight strategy
```

### Scheme: Goblins rosette-actor.scm (~300 LOC)

Actor-based concurrent rosette growth:

```scheme
(define garden (spawn ^rosette-garden))
($ garden plant! "echeveria")
($ garden plant! "sempervivum")
($ garden grow-all! 21)
($ garden garden-gf3)           ; → balanced
($ garden modulate-all! 0.8 0.6 1.5)  ; BCI modulation
```

Plugin spec for ^vat-bridge integration: plant/grow/modulate/gf3 actions.

## Calibrated Parameters

| Parameter | Symbol | Optimal | Range Tested | Unit |
|-----------|--------|---------|-------------|------|
| Inhibition range | λ | 0.08 | 0.05-0.30 | radius |
| Inhibition strength | α | 2.0 | 2-8 | dimensionless |
| Growth rate | g | 0.01 | 0.005-0.02 | radius/tick |
| Plastochron | P | 6 | 4-10 | ticks |
| Taxis threshold | ε | 0.001 | 0.001-0.01 | gradient |
| Golden deviation | Δ | 9.49° | — | degrees |

## Files

```
succulents.jl                              Julia continuous simulation
nashator/src/stress-games.ts               TypeScript game generators (leafLight, auxin, lifecycle)
nashator/src/stress-games.test.ts          4 phyllotaxis tests (33/33 passing)
goblins-adapter/rosette-actor.scm          Goblins actors (^primordium, ^meristem, ^rosette-garden)
goblins-adapter/rosette-captp-bridge.scm   CapTP bridge: rosette ↔ Nashator solver
asi/skills/phyllotaxis/SKILL.md            This file
asi/skills/phyllotaxis/NEIGHBOR_SKILLS.md  Skill connections
```

## GF(3) Triads

```
phyllotaxis (+1) ⊗ nashator (0) ⊗ affective-taxis (-1) = 0 ✓
    growth          equilibrium      chemotaxis

phyllotaxis (+1) ⊗ propagators (0) ⊗ cybernetic-open-game (-1) = 0 ✓
    biology         SDF Ch7           game theory

succulents (+1) ⊗ bridge-9 (0) ⊗ BCI (-1) = 0 ✓
    output          pipeline          input
```

## Concomitant Skills

| Skill | Trit | Interface |
|-------|------|-----------|
| `nashator` | 0 | Golden angle = Nash equilibrium; leafLightCompetition, auxinCompetition |
| `propagators` | 0 | SDF Ch7 cells = primordia; inhibition = constraint propagation |
| `affective-taxis` | -1 | Auxin chemotaxis ≡ interoceptive taxis; Langevin dynamics |
| `goblins` | 0 | ^rosette-garden actor; vat isolation; CapTP bridge |
| `sdf` | -1 | Ch7 propagators, Ch8 degeneracy (parameter sweep fallback) |
| `sicp` | +1 | Ch3 mutable state, Ch5 explicit control (scheduler) |
| `gay-julia` | 0 | GF(3) coloring, golden spiral, color conservation |
| `enzyme-autodiff` | -1 | Gradient of inhibition kernel via Enzyme.jl |

## References

- Douady & Couder, "Phyllotaxis as a Physical Self-Organized Growth Process" (1996)
- Atela, Golé & Hotton, "A Dynamical System for Plant Pattern Formation" (2002)
- Hanson & Sussman, "Software Design for Flexibility" Ch7 (2021)
- Ghani, Hedges et al., "Compositional Game Theory" (2018)
- Sennesh & Ramstead, "Affective-Taxis Hypothesis" (2025)

Overview

This skill models succulent rosette growth as a propagator network where the golden angle emerges as a Nash equilibrium. It combines a Douady–Couder inhibition model, affective-style auxin chemotaxis, and closed-loop BCI modulation to drive primordium placement and lifecycle dynamics. Implementations include continuous Julia simulation, TypeScript game formulations, and actor-based Scheme orchestration.

How this skill works

The system treats primordia as cells and Gaussian inhibition kernels as propagators; a plastochron clock schedules new primordia and inhibition enforces spacing. Auxin concentration provides an attractant field and Langevin-like dynamics drive chemotactic movement of primordia. A game-theoretic propagator solver shows the golden-angle divergence emerges as a Nash equilibrium, and a BCI/phenomenal-state bridge enables closed-loop modulation of growth parameters.

When to use it

  • Simulate phyllotactic pattern formation and test parameter sweeps
  • Explore game-theoretic interpretations of spatial self-organization
  • Prototype closed-loop biofeedback modulation of growth dynamics
  • Integrate actor-based orchestration with continuous simulations
  • Verify GF(3) index conservation in discrete-growth experiments

Best practices

  • Use calibrated parameters: λ ≈ 0.08 and α ≈ 2.0 as starting points
  • Run plastochron ticks long enough to observe steady-state divergence (dozens to hundreds of ticks)
  • Verify GF(3) trit balance to detect indexing artifacts
  • Combine continuous simulation (Julia) with game solves (TypeScript) for robust results
  • Isolate BCI modulation paths behind controlled phenomal-state inputs to avoid destabilizing dynamics

Example use cases

  • Grow 21 primordia in Julia to reproduce near-golden divergence and verify GF(3) balance
  • Run leafLightCompetition in TypeScript to observe Nash-derived divergence strategy
  • Orchestrate concurrent plantings with Scheme actors and modulate all gardens via CapTP bridge
  • Use affective-taxis mapping to translate auxin gradients into attractant-driven exploration
  • Perform parameter sweeps to study how λ and α shift steady-state divergence

FAQ

Why does the golden angle appear without hard-coding?

The golden angle emerges from the constraint network: inhibition kernels, plastochron scheduling, and local payoff (light capture) interact so that no single primordium can unilaterally improve payoff, which is the Nash equilibrium interpretation.

What are the practical parameter defaults?

Use inhibition range λ=0.08 and strength α=2.0 with plastochron P≈6 and growth rate g≈0.01 as validated starting points.