Skip to content
docs
Arxo ↗

Time: pitfalls

For LLMs8 sections

Wrong forms, silent outcomes, diagnostics, typical mistakes of formalizers and AI agents, how to detect them.

Check legal_time against effective and against the in_force of the edition @source leads to: why_not names a NOT_APPLICABLE candidate, the document — EDITION_NOT_APPLICABLE. A stub edition with future in_force removes all rules anchored to it at once. Detection: why_not first, not premise enumeration.

at < @2026-01-01 with at: Instant — refusal LDC-E2108 on check; days_between(due, @…T00:00:00Z) passes check, but execution answers TYPE_ERROR with result status TYPE_ERROR. Detection: write the threshold in the argument’s kind — date to date, instant to instant. Instants order by moment: 23:30:00Z 31 December is later than Almaty midnight 1 January.

days_between(due, paid) >= 30 days — LDC-E2108: 30 days is Quantity, days_between gives Integer. due + 30 days — the same refusal: a date does not add a magnitude; a period is built by the period step (add_calendar_period). Detection: law engine check.

effective [start_of_regime, infinity) with an undeclared name — LDC-E1305: a bound is a date, an instant or infinity; a declared constant is allowed. In a target window a bare name gives LDC-E2115: write a date, a body variable or the corpus field [@0001-01-01, infinity).

applicability timeless next to in_force — LDC-E1305: two incompatible models of one edition. Doctrine and custom are not invented dates: without an applicability event the node is outside dating — “law not dated”, not “not in force”.

during, overlaps, before, after as predicates — LDC-E2102: check refuses. Time conditions are written as date comparisons. during names in the corpus (74 uses in 12 packages) are parameters and text, not predicates. (The target short form achieve … during […] is surface sugar, not a predicate.)

  • A term window bound without a period policy silently gives MISSING_POLICY: window [appointed, add_calendar_period(appointed, 60 calendar_day)] requires a named deadline policy and a calendar snapshot; without them — not “window computed approximately” but no answer.
  • governs event_time … executes, but the axis is not recorded onto a fact by the surface: a .lawtest case will never support such a rule, and check stays silent about it. In acts with surface cases — only fact-date comparison in the body.
  • A repeated effective in one block — LDC-E1329.
  • Silent outcome: NEITHER at a date outside effective means “rule does not participate”, not “condition false”. Read why_not.
  • The string "2026-03-31" passes check as Text and breaks only at execution — write @2026-03-31.

8. Incomparable lifecycle event — EDITION_APPLICABILITY_AMBIGUOUS

Section titled “8. Incomparable lifecycle event — EDITION_APPLICABILITY_AMBIGUOUS”

A lifecycle event incomparable with legal_time by kind (date versus instant) is warning EDITION_APPLICABILITY_AMBIGUOUS: the node stays, but its dating is shaky. Detection: a warning in check; fixed by aligning kinds — dates to dates, instants to instants (see item 2).

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.