Skip to content

Decisions: how the package reads [WU26]

Generated by tools/equation_map.py from schema.DECISIONS and the [D9] / [E13] tags in the code; edit those, not this file. "paper" is the paper's own reading, "ours" a choice it leaves open. The plans hold the reasoning behind each.

id rule paper or ours plan implemented in tested by
D1 the attack cost counts devices (a SCADA terminal and a PMU per bus) moved beyond noise ours docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.minimize._Window._devices none
D2 the fewest-tamper search runs for every generated family, At and Am ours docs/plans/WU_MSFDIA_PLAN.md, Decisions none tests.test_minimize.test_new_generation_searches_by_default
D3 PGLib-OPF v23.07 rate_a as the alternative line ratings ours docs/plans/WU_MSFDIA_PLAN.md, Decisions none none
D4 PMUs read the current phasor of every branch at their bus (eqs. 19-20) paper docs/plans/WU_MSFDIA_PLAN.md, Decisions none none
D5 the overload goal (24)-(25) holds on the noiseless reading of the false state paper docs/plans/WU_MSFDIA_PLAN.md, Decisions none tests.test_overload.test_the_goal_rides_on_the_true_flow_and_ends_at_the_rating
D6 generation makes the multi-snapshot At and Am only ours docs/plans/WU_MSFDIA_PLAN.md, Decisions none none
D7 At's stealth bound and tamper count use the meters' rated accuracy ours docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.minimize.MinimizeMixin.min_tamper
engine.attacks.minimize._Window._current_step
engine.attacks.minimize._Window._currents
engine.attacks.minimize._Window._sigmas
engine.attacks.minimize._Window._snapshot
models.config.RampSettings
models.config.TimelineKnobs
models.frames.FrameKnobs
timeline.generate_timeline
tests.test_overload.test_am_counts_against_the_paper_noise_and_at_against_the_rated_accuracy
tests.test_overload.test_am_has_no_stealth_bound_and_at_keeps_its_own
D8 Am's tamper threshold is the paper's case-study noise, 0.03 pu SCADA, 0.01 pu PMU paper docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.minimize
engine.attacks.minimize._Window._currents
engine.attacks.minimize._Window._sigmas
engine.attacks.overload
formulas.noise.paper_sigma
tests.test_attack_area.test_every_attack_the_search_returns_is_valid
tests.test_overload.test_am_counts_against_the_paper_noise_and_at_against_the_rated_accuracy
tests.test_overload.test_am_has_no_stealth_bound_and_at_keeps_its_own
D9 the goal adds the share k/T of the gap to the rating to each snapshot's true flow ours docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.overload._schedule
models.frames.FlowGoal
tests.test_overload.test_the_goal_rides_on_the_true_flow_and_ends_at_the_rating
D10 hybrid meters: an angle only at a PMU, and PMU branch currents paper docs/plans/WU_MSFDIA_PLAN.md, Decisions dataset.base
engine.attacks.minimize._Window.__init__
engine.core.FdiaGenerator.__init__
generation.emit
models.choices.MeterModel
models.fields.PmuCurrentFields
models.grid.MeterPlan
timeline.generate_timeline
tests.test_models
tests.test_pmu_channels
tests.test_pmu_channels.test_a_scada_voltmeter_reads_no_angle_under_the_hybrid_model
tests.test_schema.test_the_fixture_carries_exactly_the_schema
D11 Am has no between-snapshot bound: noise only sets the l0 threshold paper docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.episodes.OverloadDesigner.design
engine.attacks.minimize._Window.__init__
engine.attacks.minimize._Window._sigmas
generation.write.search_attrs
models.config.TimelineKnobs
models.frames.FrameKnobs
timeline.generate_timeline
tests.test_overload.test_am_has_no_stealth_bound_and_at_keeps_its_own
tests.test_overload.test_am_reaches_the_rating_on_the_held_support
D12 what the meters measure is its own knob of the meter plan ours docs/plans/WU_MSFDIA_PLAN.md, Decisions none tests.test_pmu_channels.test_new_generation_is_hybrid_only
D13 the previous frame's PMU currents are offered for the eq. (3) pseudo-measurements ours docs/plans/WU_MSFDIA_PLAN.md, Decisions none none
D14 generators of the support move freely within (22)-(23) paper docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.false_state.FalseStateMixin.free_injection_buses tests.test_overload.test_a_generator_at_its_p_limit_keeps_its_q_free
D15 a line's rating defaults to 1.25 times its peak flow over the pool ours docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.overload
engine.attacks.overload.OverloadMixin.use_line_ratings
generation.write.search_attrs
models.choices.RatingSource
models.config.OverloadSettings
none
D16 the support's edge keeps (22)-(23), and a moved load changes by at most load_cap [YUA11] ours docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.false_state.FalseStateMixin._out_of_bounds
engine.attacks.false_state.FalseStateMixin.solve_flow_local
engine.attacks.minimize.MinimizeMixin._flow_goal_state
models.config.OverloadSettings
models.frames.FrameKnobs
tests.test_overload.test_an_edge_generator_stays_inside_its_limits
tests.test_search_speed
D17 an overload episode drives two lines by default, as the paper's case studies paper docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.overload
engine.attacks.overload.OverloadMixin._target_sets
engine.attacks.overload.OverloadMixin.overload_goal
generation.emit.overload_episode
models.config.OverloadSettings
models.frames.FlowGoal
timeline._knobs
tests.test_overload.test_two_lines_by_default_and_the_pairs_share_one_area
tests.test_search_speed.test_exhaustive_searches_return_their_pinned_answers
tests.test_wu_scenarios
D18 the attacker's area: the paper's where stated, else Sec. III-A's rules (1-2 checked, 3-4 our score) paper docs/plans/WU_MSFDIA_PLAN.md, Decisions engine.attacks.area.AreaMixin.rule_area tests.test_attack_area.test_the_ieee118_area_is_fig_9_and_the_search_uses_it
tests.test_attack_area.test_the_rules_check_1_and_2_and_charge_for_size
E1 trust is incremental: a trusted PMU keeps the offset its bus had before its slot (eqs. 29-30) paper docs/plans/WU_DEFENSE_PLAN.md, Decisions trust.wu26 tests.test_trusted_pmus.test_trust_accumulates_from_its_slot
E2 a trusted PMU pins its own V and angle only (eqs. 27, 32) paper docs/plans/WU_DEFENSE_PLAN.md, Decisions
E3 the defense's cost is the devices tampered at any snapshot (Fig. 12); eq. (33)'s net l0 also reported paper docs/plans/WU_DEFENSE_PLAN.md, Decisions models.choices.CostUnit
models.config.WuDefenseConfig
trust.defense
trust.wu26
tests.test_wu_defense_env.test_the_reward_is_the_rise_in_the_search_cost
E4 1-minute attack snapshots interpolated from the 5-minute pool ours docs/plans/WU_DEFENSE_PLAN.md, Decisions none none
E5 IEEE-118: 10 snapshots, one trust slot each (Figs. 10-11) paper docs/plans/WU_DEFENSE_PLAN.md, Decisions none none
E6 Algorithm 1 line 8 ends an episode with no reward, as written paper docs/plans/WU_DEFENSE_PLAN.md, Decisions none tests.test_wu_defense_env.test_line_8_ends_the_episode_without_a_reward
E7 the DQN's state is Fig. 1's: the readings, the target lines' loading, the trusted set paper docs/plans/WU_DEFENSE_PLAN.md, Decisions none tests.test_wu_defense_env.test_the_state_is_what_fig_1_lists
E8 IEEE-118's 100 tests run as 10 training sessions of 10 test windows ours docs/plans/WU_DEFENSE_PLAN.md, Decisions none none
E9 the Q network is ours (two hidden layers of 128); its hyperparameters are the paper's ours docs/plans/WU_DEFENSE_PLAN.md, Decisions trust.dqn.q_network tests.test_trusted_pmus_dqn.test_the_stated_hyperparameters_are_the_defaults
E10 detection with PMU support is the residual test with trusted PMUs reading truth ours docs/plans/WU_DEFENSE_PLAN.md, Decisions none none
E11 the single-snapshot trusted-meter classes stay as the linear analogue ours docs/plans/WU_DEFENSE_PLAN.md, Decisions none none
E12 IEEE-1354 is not reproduced ours docs/plans/WU_DEFENSE_PLAN.md, Decisions none none
E13 one support is held for the window (a support per trust slot never changed an answer, removed) ours docs/plans/WU_DEFENSE_PLAN.md, Decisions none none
E14 reproduction ratings: each target's last flow plus 0.10 pu (Fig. 4's scale); k times the peak as a sensitivity ours docs/plans/WU_DEFENSE_PLAN.md, Decisions none tests.test_attack_area.test_delta_ratings_generate_am_episodes
E15 generation keeps the linear ramp of D9 ours docs/plans/WU_DEFENSE_PLAN.md, Decisions none none
E16 the attack minimizes the l1 of the window's summed attack, eq. (12) read literally ([37]'s l1) paper docs/plans/WU_DEFENSE_PLAN.md, Decisions trust.wu26 none
E17 the reproduction meters every branch at both ends, each node's SCADA its incident flows ([29]) paper docs/plans/WU_DEFENSE_PLAN.md, Decisions trust.wu26 none
E19 the faithful attack's goal is (24)-(25) as written: the end at S_max, the flow never falling; D9's ramp stays for generation paper docs/plans/WU_DEFENSE_PLAN.md, Decisions trust.wu26
trust.wu26._WindowProblem.constraints
tests.test_wu26_faithful.test_the_goal_is_eqs_24_25_as_written
E18 the reproduction's overload rho, per-snapshot l1 weight tau and trust region are ours ours docs/plans/WU_DEFENSE_PLAN.md, Decisions trust.wu26 none