Parent
Parent: #26
What to build
Add the first static Disruptor tracer bullet: test-farm disrupt <scenario> --interface <client-facing-nic> --dry-run accepts a Disruptor Scenario File with a default impairment, resolves every discovered device to that default policy, builds a typed tc plan object, and renders dry-run output without applying tc or changing interface state.
This slice should keep the existing invocation Scenario File contract unchanged and should use fake or injected discovery in tests so the path is verifiable without real mDNS.
Acceptance criteria
Blocked by
None - can start immediately
Parent
Parent: #26
What to build
Add the first static Disruptor tracer bullet:
test-farm disrupt <scenario> --interface <client-facing-nic> --dry-runaccepts a Disruptor Scenario File with a default impairment, resolves every discovered device to that default policy, builds a typedtcplan object, and renders dry-run output without applyingtcor changing interface state.This slice should keep the existing invocation Scenario File contract unchanged and should use fake or injected discovery in tests so the path is verifiable without real mDNS.
Acceptance criteria
impairment.defaultparses separately from the existing invocation Scenario File.test-farm disrupt <scenario> --interface <client-facing-nic> --dry-runand requires--interface.tcplan object and human-readable dry-run output without applying or clearingtcstate.Blocked by
None - can start immediately