8000 fix(fuzz): count EDN-separated and valid-at joins in evaluator guard by adityamukho · Pull Request #845 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

fix(fuzz): count EDN-separated and valid-at joins in evaluator guard - #845

Merged
adityamukho merged 1 commit into
v3from
fix/835-fuzz-timeout
Nov 4, 2026
Merged

adityamukho merged 1 commit into
v3from
fix/835-fuzz-timeout

Conversation

@adityamukho
Copy link
Copy Markdown
Collaborator

Summary

The nightly evaluator fuzz run timed out because its join guard underestimated three inputs. It treated ,?v as a constant instead of an EDN-separated variable, missed adjacent symbol/keyword tokens, and did not count the per-visible-fact multiplication of :db/valid-at.

Tokenize pattern atoms while preserving quoted strings, and estimate valid-at scans as [entity _ _]. Add the three exact artifacts, reduced regressions, and coverage documentation. This changes only the fuzz harness; database behavior is unchanged.

Fixes #835

Type of change

  • Bug fix (non-breaking)
  • Documentation / tests only

Validation

  • All 12 standalone guard tests pass; the three new regression tests failed before the fix.
  • All four matcher baseline tests pass.
  • All three original artifacts replay through the sanitizer-enabled fuzz target in 239–364 ms each. Leak detection was disabled because LeakSanitizer cannot run under this sandbox; address sanitization remained enabled.
  • Fixture SHA-1 hashes match the issue's artifact names.
  • rustfmt --check on both changed Rust files and git diff --check pass.
  • Full engine tests and Clippy were not rerun locally for this harness-only change.

Checklist

  • New code has regression tests, including expensive-input rejection and retained selective queries.
  • No library code paths changed.
  • Read PHILOSOPHY.md: strengthens reliability without runtime dependencies or API changes.
  • Coverage documentation updated. No release or planned-work item changes; no changelog entry.

Notes for reviewer

The guard remains a conservative lexical estimate rather than a full Datalog parser. Valid-at metadata constraints are deliberately omitted from its estimate so they cannot hide the underlying fact-scan multiplication.

@codecov
codecov Bot commented Nov 4, 2026
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@adityamukho
adityamukho merged commit d5df1f2 into v3 Nov 4, 2026
19 checks passed
@adityamukho
adityamukho deleted the fix/835-fuzz-timeout branch November 4, 2026 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0