docs← Back to article

Markdown for LLMs

Power pitfalls

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# 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.