Skip to content

Runs & Ω Battery

Baseline (NC1)

ldtc run --config configs/profile_r0.yml

Ω: Power Sag

ldtc omega-power-sag --config configs/profile_r0.yml --drop 0.3 --duration 10

Ω: Ingress Flood

ldtc omega-ingress-flood --config configs/profile_r0.yml --mult 3 --duration 5

Ω: Command Conflict & Refusal

ldtc omega-command-conflict --config configs/profile_negative_command_conflict.yml --observe 2

Artifacts: audit JSONL, indicators JSONL/CBOR, and optional figure bundles under artifacts/.

Hardware-in-the-loop (optional)

Select the hardware adapter and UDP telemetry in your config:

# in configs/profile_r0.yml (example)
plant:
  adapter: hardware        # or "sim" (default)
  transport: udp           # or "serial" (requires pyserial)
  udp_bind_host: 0.0.0.0
  udp_bind_port: 5005
  # Optional control channel back to device
  # udp_control_host: 127.0.0.1
  # udp_control_port: 5006
  telemetry_timeout_sec: 2.0

Send telemetry as JSON over UDP with keys E,T,R,demand,io,H in [0,1]. Example:

import socket, json
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(json.dumps({"E":0.6,"T":0.3,"R":0.9,"demand":0.2,"io":0.1,"H":0.015}).encode(), ("127.0.0.1", 5005))

The CLI ingests these values through the same LREG/Ω/attestation path.