Skip to content

docs(design): differential fuzzer for filter rules vs upstream rsync#3653

Merged
oferchen merged 1 commit into
masterfrom
docs/differential-filter-fuzzer-1290
May 5, 2026
Merged

docs(design): differential fuzzer for filter rules vs upstream rsync#3653
oferchen merged 1 commit into
masterfrom
docs/differential-filter-fuzzer-1290

Conversation

@oferchen
Copy link
Copy Markdown
Owner

@oferchen oferchen commented May 5, 2026

Summary

Adds a 521-line design note for a differential fuzzing harness that compares oc-rsync's filter-rule evaluation byte-for-byte against upstream rsync 3.4.1 over a randomized cross-product of (filter-rule-set, on-disk tree, transfer mode).

Key sections

Wire-compat invariants confirmed

  • Filter evaluation is read-only with respect to wire bytes; harness uses `--dry-run` exclusively.
  • No CompiledRule field, FilterSet API, or merge-file parser entry point is mutated.
  • Production code under `crates/filters/src/`, `crates/daemon/src/`, `crates/transfer/src/generator/filters.rs`, and `crates/core/src/client/remote/flags.rs` remains untouched.
  • The harness is purely additive; only new files under `crates/filters/fuzz/` and `.github/workflows/` are envisioned for the implementation PRs.

Test plan

  • CI fmt+clippy pass (docs-only change; no Rust touched).
  • Markdown renders cleanly on GitHub (verified locally).
  • Cross-references to existing files resolve (`crates/filters/src/compiled/mod.rs`, `crates/filters/src/merge/parse.rs`, `crates/daemon/src/daemon/sections/module_access/helpers.rs`, `crates/filters/fuzz/Cargo.toml`).
  • No production code modified; `git log origin/master..HEAD --stat` shows exactly one file added.

Add design note describing a differential fuzzing harness that compares
oc-rsync filter-rule evaluation byte-for-byte against upstream rsync
3.4.1 across CLI filters, per-directory merge files, and daemon-side
filter directives. Specifies the input grammar, equivalence oracle,
seed corpus, daemon-server cross-product mode, resource budget, and
wire-compat invariants. Production code untouched; the harness is
purely additive.
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label May 5, 2026
@oferchen oferchen merged commit 9fb3528 into master May 5, 2026
8 checks passed
@oferchen oferchen deleted the docs/differential-filter-fuzzer-1290 branch May 5, 2026 10:10
oferchen added a commit that referenced this pull request May 18, 2026
…3653)

Add design note describing a differential fuzzing harness that compares
oc-rsync filter-rule evaluation byte-for-byte against upstream rsync
3.4.1 across CLI filters, per-directory merge files, and daemon-side
filter directives. Specifies the input grammar, equivalence oracle,
seed corpus, daemon-server cross-product mode, resource budget, and
wire-compat invariants. Production code untouched; the harness is
purely additive.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant