# Priority: pitfalls > Updated 3 October 2026: `concept`, `except_when`, `claim`, `definition … sufficient`, and `default` strength have been removed, together with their special deprecation diagnostic. References below to the former behavior and corpus sources are historical. New source uses `relation`, `unless`, `duty`, a strict rule, and `defeasible`. Wrong forms, silent outcomes, `LDC-E` diagnostics, typical mistakes of formalizers and AI agents, and how to detect them. Items marked “confirmed by runs” were reproduced during this research on the installed engine. ## 1. Answer Contradiction although “it is clear which norm is special” (confirmed by runs) The core does not count speciality by number of conditions: without a declared `priority`, two defeasible opposite inferences are incomparable and both preserved. Reproduction: the `research.priority.no_priority_both` teaching package answers Contradiction on both facts; adding exactly one edge (package `research.priority.special_over_general`) changes the answer to Refuted. Detection: on Contradiction with two applicable opposite heads, look first for the missing edge, not for an engine defect. ## 2. Expected Refuted, got Not established, not refuted A bare `unless` and a defeater remove support without asserting the opposite: after defeat the answer is Not established, not refuted, not Refuted. Refusal is written either in the contrary form `unless C then not A` or as a rule with a `not A` head and priority. Question check: “does the defeating side assert anything?” — no, so Refuted has nowhere to come from. ## 3. `unless` on a strict rule `LDC-E4110`: a strict rule has no exceptions, exception nodes are not generated (plus warning `LDC-E1302` on non-lowering, if the form is written anyway). Fix: make the rule `defeasible` or move the applicability condition into the strict body. ## 4. Priority over a strict rule `LDC-E4105`: source rank is `defeasible` with `priority … reason lex_superior` or `priority policy`, not `strict`. `strict` is inference strength, not act height: a strict norm of an ordinary regulation beats a defeasible norm of the constitution without any edge. ## 5. Edge form violated Two `prefer` clauses in one block or a block without `prefer` — `LDC-E0201`: the second edge is written as a separate declaration (model — the series of four edges over the art. 44 sanction limits). A side naming no package rule — `LDC-E4108` and `LDC-E1318`: such priority never applies, silently. Priority between heads of different predicates — warning `LDC-E4107`: the heads never become complements, the edge is dead. ## 6. Priority ring A statically known ring (`A` over `B`, `B` over `A`, including `prefer A over A`) — rejection `LDC-E4104` already at `check`. A ring where at least one edge is conditional passes statics: at runtime the conflict group gets `PRIORITY_CONFLICT`, both sides preserved, no tie-break. Detection: Contradiction with edges in both directions — look at the conditional `when` clauses of the edges, not at the rules themselves. ## 7. Edge between same-polarity heads (warning, not rejection) Two applications are opposite only on complement heads, so two inferences of one relation never collide under any arguments — and an edge between them expresses nothing: warning `LDC-E2142`. Working forms: the general rule gets a guard, the special one an explicit defeater (priority over a defeater is alive — the only lawful case of matching polarity), or both stakes move into a decision table. Exception: an edge between links of an `unless` chain — it carries order to the transitive closure, not to the pair, and `LDC-E2142` no longer sounds on it. ## 8. Defeater without a candidate; proviso with unbound variables A defeater whose target is produced by no defeasible rule is a rejection `LDC-E4112`: targets from strict-only rules or with no producer cannot be attacked. A proviso binding not all head variables is `LDC-E4101` on the generated rule name: repeat the binding conjunct as the clause’s first premise. Both in detail — the [defeasible-rules pitfalls](/constructs/rule-defeasible-unless/pitfalls/) (items 1–2). ## 9. Cancellation of a valued literal A defeater cancelling a valued literal with two or more defeasible producers of the predicate is warning `LDC-E2144`: matching values carry away another’s inference; cancel the valueless applicability relation instead (in detail — the [defeasible-rules pitfalls](/constructs/rule-defeasible-unless/pitfalls/), item 4).