# Cost-Based Parent Selection: Bottleneck Avoidance Test
#
# Topology (explicit 4-node diamond):
#
#    n01 (root — smallest addr)
#    /       \
#   fiber    fiber
#   /         \
#  n02        n03
#   \        /
#    BT    fiber
#     \   /
#      n04  (test subject)
#
# n04 has two candidate parents at depth 1: n02 (via Bluetooth L2CAP)
# and n03 (via fiber). Cost-based selection should pick n03 because:
#   effective_depth(n02) = 1 + ~1.4 (Bluetooth) = ~2.4
#   effective_depth(n03) = 1 + ~1.01 (fiber) = ~2.01
#
# Validation: tree snapshot shows n04's parent is n03.

scenario:
  name: "cost-avoidance"
  seed: 42
  duration_secs: 45

topology:
  algorithm: explicit
  num_nodes: 4
  params:
    adjacency:
      - [n01, n02]
      - [n01, n03]
      - [n02, n04]
      - [n03, n04]
  subnet: "172.20.0.0/24"
  ip_start: 10

netem:
  enabled: true
  default_policy:
    # Fiber-like
    delay_ms: [1, 5]
    jitter_ms: [0, 1]
    loss_pct: [0, 0.5]
  link_policies:
    # Bluetooth (L2CAP) link from n02 to n04
    - edges: ["n02-n04"]
      policy:
        delay_ms: [15, 40]
        jitter_ms: [5, 15]
        loss_pct: [2, 8]

link_flaps:
  enabled: false

traffic:
  enabled: true
  max_concurrent: 2
  interval_secs: {min: 15, max: 30}
  duration_secs: {min: 5, max: 10}
  parallel_streams: 2

logging:
  rust_log: "info"
  output_dir: "./sim-results"
