docs← Back to article

Markdown for LLMs

Precedent: pitfalls

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

Download this articlePlain text ↗
# Precedent: pitfalls

Wrong forms, silent outcomes, `LDC-E` diagnostics, typical mistakes of
formalizers and AI agents, how to detect them. The item marked
"confirmed by run" was reproduced during this research on the installed
`law` (semantics `law.core/0.2`); the rest follows the precedent profile
and the teaching package.

## 1. General rule with strict instead of defeasible strength (confirmed by run)

A generated holding outranks no strict rule with any priority:
the generated `priority_rule` acts inside the defeasible stratum. Symptom —
`FALSE_ONLY` where `TRUE_ONLY` was expected, with a clean `check OK`.
Reproduction: in the `research.precedent.forced_holding` package temporarily swap
`defeasible` on `AdIsNotAnOffer` for `strict` — test `01-bound` fails with
`truth_status == TRUE_ONLY: in the document FALSE_ONLY`. Detection: the
holding's opponent is always `defeasible` (the specimen is the teaching package's
general rule).

## 2. Factor outside the vocabulary — LDC-E2701 (confirmed by run)

A precedent factor undeclared in the vocabulary as a side is a static refusal.
Reproduction during this research (a trial package
outside the corpus, factor name `surprise`):

```text
error LDC-E2701: precedent Pbad: фактор `surprise` не объявлен в словаре как plaintiff (§276.3)
```

Same group: a factor outside the signature and an outcome not over signature
variables (`LDC-E2703`). Detection: check every identifier in the precedent's
`plaintiff`/`defendant`/`outcome` against the vocabulary before running.

## 3. Factor on both sides — LDC-E2702

A factor's side is a vocabulary property; one factor in both lists is
a refusal. AI agents often duplicate a "key" factor into both sides "for
reliability" — that is a refusal, not reinforcement. Detection: the side lists
must not overlap.

## 4. ratio outside X_s — LDC-E2704

`ratio` must be a subset of the winning side's set; a ground the court never
found must not go into `ratio`. Same group: `overruled` earlier than
`decided`, a reference to an unknown decision. Detection: check `ratio ⊆ X_s`
as a set inclusion by hand.

## 5. Domain not binding all signature variables

Without a domain, a holding with an empty winning-side set would consist of
`not_known` alone and would not bind the head. Symptom — the holding
stays silent where facts seem present: the domain reads first,
and its non-firing quenches the whole body. Detection: in `domain` every
signature variable must occur.

## 6. Expecting binding from a persuasive precedent

Courts unlinked by a `courts` chain are incomparable: the holding binds
the case (a fortiori), but a conflict with another-outcome holding resolves not
by priority but by honest conflict. The mistake is
reading `BINDING` as "beats any rival": only a higher or equal later court
dominates. In the teaching package the three jurisdictions are incomparable on
purpose.

## 7. Searching for argue and court as declarations

There is no `argue` keyword in the grammar, and no standalone `court` either
(verified against the grammar during the research). A `court HIGH;` outside `precedent` is
a syntax error; a "side argument" is written as a plain rule, not a profile
construct. Detection: `court` only inside `precedent Name of Vocabulary {
… }`.

## 8. Profile without prefer over against a statute — silent BOTH

Without `prefer over` the holding and the general rule are equal: the profile
says `FORCED_*`, while baseline gives an honest conflict. Not a
lowering defect but design: which general rule beats the holding is known by
the author. The mistake is reading profile-vs-baseline divergence as
breakage; the only true lowering-defect marker is `agreesWithRules = false`.

## 9. Open judgment question read as distinguishing

A side-s̄ judgment factor without a court answer gives
`JUDGMENT_PENDING`, not `DISTINGUISHED`: the baseline holding then
FIRES (`not_known` satisfied by silence), and that is not a mismatch.
Anyone quenching the holding "by hand" on a judgment factor breaks
`agreesWithRules`. In the teaching package this is `mere_puff`.

## 10. Base consistency read as a refusal

`LDC-W2705` is a warning, not an error: courts contradict each other as a
matter of fact, and the law must show it. Trying to "repair" the base
by deleting a precedent destroys data instead of the diagnostic.