# Constraints: pitfalls Wrong forms, silent outcomes, `LDC-E` diagnostics, typical mistakes of formalizers and AI agents, and how to detect them. ## 1. Expecting inference from a constraint `require Y` with true `when X` does not establish `Y`: the `Y` query answers Not established, not refuted, the constraint verdict is undetermined. Proven by the section’s run: case 02 of the enrolled-needs-consent teaching package (`enrolled` without `consent`) answers Not established, not refuted on the `has_consent` query. The AI agent reading a constraint as “a rule backwards” gets a vacuous example. Detection: mentally delete `require` — if the meaning is lost, it was a rule. ## 2. Expecting a sanction from failure A constraint’s violated verdict is issue `CONSTRAINT_VIOLATED`, not a legal violation: a sanction is encoded by a separate ordinary rule on established facts/position statuses. Whoever equates the finding with a violation builds a hidden evaluator side effect — directly forbidden by the language. ## 3. A constraint as a producer of its strata A constraint evaluates after the producer strata it depends on and cannot be a producer for them. An attempt at “the constraint establishes a fact for the rule that feeds it” is a cycle; in 0.1 — a stratification rejection. Rules infer, constraints check; one direction only. ## 4. Body composition: repeats and silent skips `scope` and `effective` — at most one clause per block, a repeat is `LDC-E1329` (as for a rule). Every written element is either parsed or rejected statically (`LDC-E0201`); silent skipping is forbidden — a constraint lowered without a written clause applies wider than written. Forms without a defined expansion (`source_anchor_item`, `interpretation`, `metadata_item`) are rejected, not ignored. ## 5. `effective` outside the law date — silent non-application A constraint with `effective` outside the law date does not apply: no finding, no issue, no verdict. Silence is the norm here, but an author forgetting the source rule’s window reads it as “composition coherent”. Detection: check the case’s law date against the constraint’s `effective` before rejoicing at empty results. ## 6. An unexecutable body — the constraint is not evaluated Formulas outside the executable subset or a range-restriction breach — issue `NON_EXECUTABLE_CONSTRAINT` (warning, related nodes are the constraint itself), the constraint declares it and is not evaluated. Detection: an issue in the document instead of the expected findings. ## 7. Header parameters and binders are mutually exclusive `constraint C(x: T) { … }` instead of `for x: T;` in the body: both forms at once is a rejection. Constraint semantics and binder order are preserved — the form choice is readability, not meaning.