Markdown for LLMs
Power pitfalls
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# 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.