Concept · Authoring

Synthetic flows

One .doil, many sims, the cascade walking end to end.

A scenario in DarkNOC isn't a script that pokes at one sim. It's a .doil file that describes an intent at the cascade level: "start a launch, watch how demand reacts, see if any incidents fire, see how the breach hub responds".

The cascade does the rest.

What goes in the file

A scenario file declares four things:

  1. Which sims to wire up. Not "all ten" — only the sims this scenario actually touches.
  2. The initial state. Subscriber counts, demand curves, coverage assumptions. Synthetic only.
  3. The intent timeline. What happens at minute 0, minute 5, minute 30 — campaign start, capacity threshold change, security event.
  4. Success conditions. What the loop should land on. Used by autoresearch to score.

A worked example

The launch-day scenario:

scenario LaunchDay
  sims do
    growth_launch_sim
    crm_sim
    demand_sim
  end

  initial do
    subscribers: 1_200_000
    demand_curve: :baseline
    capacity: :nominal
  end

  timeline do
    at :start          do crm_sim.campaign(:awareness, weight: 0.7) end
    at 5.minutes       do demand_sim.spike(:moderate) end
    at 30.minutes      do crm_sim.campaign(:conversion, weight: 0.9) end
  end

  success do
    net_adds        >= 18_000
    at_risk_share   <  0.05
    incidents_fired <= 2
  end
end

What the compiler emits

The compiler reads this and emits a scenario runner that:

  • Pre-seeds crm-sim and demand-sim with the initial state.
  • Schedules the timeline events as webtrigger calls into each sim.
  • Subscribes to the consumer cascade — growth-launch-sim reading crm-sim via TMF v5.0 — so the compartmental model updates as the campaign runs.
  • Polls the success conditions after the timeline completes.
  • Hands the scored result to autoresearch.

Why this matters

Most "simulation scripting" is glorified test harnesses. The DOIL scenario format is part of the language. Same syntax as agents, same compiler, same rollback semantics. A scenario is, in a real sense, just an agent whose actions happen against the Reality Twin instead of the live network.

That symmetry is the point. Author once, run against the twin, then point the same intent at production. The scenario was the rehearsal.

Next read: TMF v5.0 as a target — what the compiler emits for the signal-flow path.