# Power pitfalls ## 1. No exercise — no effect A power with no exercise fact in the case answers `NEITHER`, and this is not a package defect (the two-step scheme). Diagnostics: no issue (the position is `ACTIVE`, there is no effect). Detection: check the `assert` of the `exercise` fact in `given`. Fix: add the exercise fact. ## 2. Exercise without valid_when — POWER_INVALID_EXERCISE An `exercise` fact with unestablished `valid_when`: no effect + issue `POWER_INVALID_EXERCISE` (info). Detection: the document's issues. Fix: establish the ground, or admit there was no exercise. ## 3. Conjunction in valid_when without parentheses `valid_when a and b;` — `LDC-E0201` ("expected `;`") plus `LDC-E1305` on an unknown field; compilation fails. Write `valid_when (a and b);`. Detection: `law engine check`. ## 4. A judge in valid_when reads as a request, not a refusal A judgment relation in `valid_when` gives `NEITHER` + `REQUIRES_JUDGMENT` + `JudgmentRequest`; no `POWER_INVALID_EXERCISE` is issued then. The mistake is reading `NEITHER` as "the power is invalid". Check `evaluation_status`. If the effect is already locked by immunity, the judge is not asked. ## 5. Traps for automated authors - `_` in `valid_when` passes `check`, but the effect materializes silently never: the power is `ACTIVE`, the exercise attempt is only info `POWER_INVALID_EXERCISE`, the effect is `NEITHER` (a known open gap). Bind the variable with the rule body. - An undefeated power/immunity pair: `truth_status NEITHER`, but `evaluation_status UNRESOLVED_NORMATIVE_CONFLICT` in `examples/power-immunity/`. Do not confuse the result status with the truth status. - A `power` effect is invisible to a same-round defeater (a known open remainder): an `unless` condition reading an effect-reachable predicate silently does not fire. Write the defeater over a raw case fact. - `subject` does not affect the status: its absence/presence never changes the engine's answer. - Diagnostic `LDC-E1305` names each missing one of the four fields separately — read the whole list, not the first.