Installation issues
Z3 solver not found
Error:z3-solver, not z3.
Holidays package version
Error:DeadlineGuard issues
Unexpected holiday calculation
Problem: Computed deadline differs from expected by a few days. Cause: Different jurisdictions have different holidays. Solution:“Failed to parse dates” error
Problem:“UNVERIFIABLE” result on a contract term
Problem:verified=False, is_computable=False, and the message starts with ⚠️ UNVERIFIABLE.
Cause: The term argument did not contain both a numeric quantity and a recognized time unit. DeadlineGuard fails closed on ambiguous legal language (“reasonable period”, “promptly”, “as soon as practicable”, “forthwith”) instead of inventing a deadline.
Solution: Pass an explicit term with a number and a unit. Recognized units are day(s), business day(s), calendar day(s), week(s), month(s), and year(s).
is_computable before consuming computed_deadline or difference_days.
LiabilityGuard issues
Float precision errors
Problem: Small differences in large calculations. Cause: Floating-point precision. Solution: LiabilityGuard usesDecimal internally. The default tolerance is 0.01%. Adjust if needed:
ClauseGuard issues
No conflicts detected (false negative)
Problem: You expect a conflict but ClauseGuard doesn’t find it. Cause: ClauseGuard uses heuristic pattern matching, not full NLP. Current Limitations:- Only detects termination-related conflicts
- Limited to English text
- Requires specific keyword patterns
CitationGuard issues
Valid citation marked invalid
Problem: A real citation is flagged as invalid. Cause: The reporter isn’t in our list. Solution: Check if the reporter is a valid Bluebook abbreviation. If it’s a less common reporter, it may not be in our list. File an issue to add it: https://github.com/QWED-AI/qwed-legal/issuesStatute citation format
Problem:42 USC 1983 doesn’t validate.
Solution: Use proper formatting with section symbol:
StatuteOfLimitationsGuard issues
UNVERIFIABLE result for a jurisdiction or claim type
Problem: guard.verify(...) returns verified=False with a message that starts with ⚠️ UNVERIFIABLE, and limitation_period_years is None.
Cause: As of the fail-closed update, StatuteOfLimitationsGuard only computes a result when both the jurisdiction and the claim type match the rule table exactly. There is no longer a substring match ("CALIF" → "CALIFORNIA") or a default fallback (3 years for unknown claim types).
Solution: Inspect the new flags on StatuteResult to see which lookup failed, then pass a supported value:
result.message and documented in Guards — StatuteOfLimitationsGuard.
Treating unverifiable as “in period”
Problem: Downstream code passes whenresult.verified is False because it expects a numeric limitation period.
Cause: StatuteResult.limitation_period_years and expiration_date are now Optional and are None for unverifiable inputs. Code that does if result.days_remaining > 0 will raise on None.
Solution: Branch on verified and the new *_matched flags before reading numeric fields: