Skip to content

Bench_Scenarios

Bench Scenarios

Bench scenarios are planted-reality experiments: a simulator with a known coupling topology (the ground truth), target and systemtender definitions, and a GitHub Actions workflow that runs the full protocol against it. You plant the truth, the engine measures it, the comparison validates the instrument.

Generic Bench (workhorse)

The configurable synthetic coupling bench. Any topology: node count, per-node parameter and objective counts, coupling shapes (linear, threshold, saturation, polynomial), edge strengths, stacked noise (white, colored, drifting). Deterministic per seed.

Property Value
Directory examples/bench/ (workflows: bench-generic.yml, bench-characterization.yml)
Image ghcr.io/godon-dev/godon-bench-generic
Channel type Any (per topology)
Validation 21-cell detection sweep + characterization suite + nonlinear-composition campaign

Characterization scenarios (2-3 systemtenders, one carrier parameter, dead parameters as controls):

  • scenario-characterization — threshold carrier, the original loop-validation scenario
  • scenario-characterization-saturation — saturation carrier; validated against planted truth to ≤0.7σ per point
  • scenario-characterization-ch1 — edge feeding objective_1: the per-channel mapping cell
  • scenario-verification-star — three agents, one edge, one uncoupled witness: per-receiver curve separation
  • scenario-composition-gate — chain topology (A → C → B): composed two-hop response vs measured — the composition validation cell
  • scenario-door-chain — nonlinearity in the edge itself: the two-hop nonlinear composition cell
  • scenario-junction-gate — converging junction: composition where paths sum
  • scenario-cliff — live threshold relay: composition through a discontinuity
  • scenario-depth4 — three nonlinear hops: the composition-horizon boundary cell

Detection sweep scenarios: scenario-generic-chain4 (4-node chain, topology recovery), scenario-generic-pair, scenario-generic-noisy, scenario-generic-nonlinear.

Sweep results (linear coupling, noise σ=0.02): detection floor between 0.1 and 0.2 coupling strength; measurement error under 5%; zero false positives across all control cells; shape-agnostic at adequate coupling — saturation, threshold, and polynomial shapes all detected at strength 0.7. Honest boundary: at noise σ=0.10 with coupling 0.5, the signal sits permanently below the detection threshold — an SNR limit, not a budget limit.

Microgrid

Linear additive coupling through a shared power bus. The first bench the engine was validated on; detection works across the full strength range (0.0-0.9).

Property Value
Directory examples/bench/scenario-microgrid (+ scenario-microgrid-6systemtender for the 6-agent scale cell)
Channel type Linear additive
Validation Pairwise detection 0.0-0.9; 6-systemtender scale run

Greenhouse

Deeply nonlinear cascaded coupling: waste heat and CO2 through thermal inertia, multiplicative growth with dead zones, crop-phase drift, irreversible damage thresholds. The historically hardest channel — and the one the impulse protocol was designed for: bidirectional detection validated at strong coupling, zero false positives on the uncoupled control.

Property Value
Directory examples/bench/scenario-4
Channel type Deeply nonlinear cascaded + non-stationary (crop drift)
Validation Bidirectional detection at coupling 0.9; clean control at 0.0

Detection Coverage

Scenario Channel type Status
Generic (all shapes) Configurable Validated: sweep + characterization suite
Microgrid Linear additive Validated (0.0-0.9)
Microgrid 6-systemtender Linear additive Validated at scale
Greenhouse Nonlinear cascaded, non-stationary Validated (strong coupling)

Open cells (honest boundaries): non-stationarity with phase transitions faster than the detection window; the composition horizon (about two nonlinear hops at σ=0.02 — beyond it the far end falls below the detection floor). The nonlinearity-in-the-edge bench capability now exists — the door, junction, cliff, and depth cells above.

Adding a New Bench

Scenario structure:

examples/bench/scenario-<name>/
├── topology.yaml          # planted ground truth (generic bench)
│                          # — or docker-compose.yml for other simulators
├── targets/
│   └── node-N.yaml        # one target per node
└── systemtenders/
    └── systemtender-N.yml      # one systemtender config per node

For the generic bench, only the topology file changes between scenarios. The characterization workflow discovers systemtenders and targets from the scenario directory (any node count). See an existing scenario as the reference; the generic bench's HTTP contract (/{node}/apply, /{node}/metrics/json) is the target interface.

Further Reading