Skip to content

bert-compose: proportional-release buffer mode (first-order decay → unlocks Lotka-Volterra) #85

Description

@rsthornton

The gap (found by the Troncale sweep, verified)

Buffering's release is zeroth-order: a constant amount per tick (min(stock, release_rate)), not a fraction of stock. The Troncale sweep verified (by probe) that this is a hard floor — a Sensing→Modulating loop on the release only sheds downstream mass, it cannot make the STOCK itself drain proportional to its level.

Consequences, all confirmed in troncale-sweep/:

  • Exponential (first-order) decay is not expressible. decay rung shows a straight line to zero, not an exponential.
  • Lotka-Volterra / predator-prey is not expressible. 05-coupled-predator-prey runs away — the predator grows unbounded because constant-rate death can't balance a growing inflow.

Proposal

A per-buffer release mode, mirroring the gradient/pushed flow-mode pattern already shipped:

  • fixed (current): release = min(stock, rate) — zeroth-order, constant amount.
  • proportional: release = rate · stock (rate now a fraction/tick, 0..1) — first-order, exponential drain.

This is the conservative-physics analogue of the gradient flow mode, and it's small (one buffer attribute + a branch in circuit.rs step, same shape as the FlowMode work). It must stay conservation-faithful (the ledger already guards this).

Payoff

  • Exponential decay becomes atomic → the decay rung gets a true first-order variant.
  • Lotka-Volterra / predator-prey becomes constructible → closes the sweep's sharpest boundary (bucket d? → a), and gives the lens packs a real Ecology/Odum population-dynamics demo.
  • First-order kinetics generally (radioactive decay, drug clearance, RC discharge) — the other half of the dynamics vocabulary.

Context: Troncale sweep landed this session (src/sweep.rs); conservation ledger fec49c9; gradient flow-mode 65edd87. On feature/bert-core, main untouched.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions