• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

thanos / ex_datalog / a5a58bc94a3f97a021af103bf76be2963a025de9-PR-162
93%
main: 93%

Build:
Build:
LAST BUILD BRANCH: v0.5.0/code_review_fixes
DEFAULT BRANCH: main
Ran 22 Jun 2026 08:55PM UTC
Jobs 1
Files 45
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Jun 2026 08:54PM UTC coverage: 93.369% (-0.6%) from 93.998%
a5a58bc94a3f97a021af103bf76be2963a025de9-PR-162

Pull #162

github

thanos
Summary of fixes
High — Correctness
- F-001 (the real bug): MagicSets.rewrite_rule/5 now uses Enum.map_reduce to give each supplementary rule a distinct ID, and do_transform runs a defensive assert_unique_rule_ids!/1 on the transformed IR. Verified the doubly-recursive case now produces IDs [0,1,2,3] with no provenance-map collapse.
- F-007: Added a doubly-recursive (reach(X,Z) :- reach(X,Y), reach(Y,Z)) regression suite — asserts unique IDs, full provenance map, correct goal subset, and a clean explain: true run.
High — Documentation contradictions (introduced by the branch)
- F-002 / F-013: Rewrote article 06 — the planner is now correctly described as a standalone inspection tool off the eval path; removed the nonexistent eval_plan/2; corrected the "magic sets still runs semi-naive" claim; fixed the "is now.Compiler" typo and all the "engine consumes the plan" statements.
- F-003: Article 07 now documents the :aggregate_result_not_in_head rejection and that non-integer inputs raise ArgumentError.
- F-004: Article 09 now shows the correct /5 and /4 signatures, documents the supplementary demand-propagation rule, and replaces the false "derives only four facts" claim with an accurate disconnected-component explanation.
Medium
- F-005: New tests for result-not-in-head rejection, sum/min/max integer guards raising, and count accepting non-integers.
- F-006: Settled the contract — non-integer aggregate inputs raise (consistent with the integer-only design); documented in materialize/2 and the aggregate moduledoc, with tests pinning it.
Low / Nit
- F-008/F-009/F-010: Corrected stale docstrings (no build-time validation claim; sum raises not filters; updated the Enum.min/max reference).
- F-011: flushlate → flush_late.
- F-012: Zero-field relations now raise a clear DSL.CompileError at compile time instead of silently breaking the whole schema; documented.
Pull Request #162: V0.5.0/code review fixes

363 of 404 new or added lines in 17 files covered. (89.85%)

1408 of 1508 relevant lines covered (93.37%)

541.71 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
84.91
lib/ex_datalog/planner.ex
7
79.41
lib/ex_datalog/constraints/beam_callback.ex
7
90.41
lib/ex_datalog/magic_sets.ex
4
93.55
1.0% lib/ex_datalog/engine/naive.ex
3
91.94
1.03% lib/ex_datalog/program.ex
2
90.91
lib/ex_datalog/constraints/aggregate.ex
2
97.59
1.85% lib/ex_datalog/engine/evaluator.ex
2
91.43
-5.45% lib/ex_datalog/ir.ex
2
98.0
-2.0% lib/ex_datalog/validator/stratification.ex
1
98.51
-1.49% lib/ex_datalog/constraint.ex
1
96.97
-3.03% lib/ex_datalog/rule.ex
1
86.98
1.18% lib/ex_datalog/schema.ex
1
97.37
-0.19% lib/ex_datalog/validator/safety.ex
Jobs
ID Job ID Ran Files Coverage
1 a5a58bc94a3f97a021af103bf76be2963a025de9-PR-162.1 22 Jun 2026 08:55PM UTC 45
93.37
GitHub Action Run
Source Files on build a5a58bc94a3f97a021af103bf76be2963a025de9-PR-162
  • Tree
  • List 45
  • Changed 15
  • Source Changed 0
  • Coverage Changed 15
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #162
  • PR Base - main (#ECA4A546...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc