Skip to content

conformance: randomized differential testing across every client - #590

Merged
jaredLunde merged 15 commits into
mainfrom
jared/sandbox-differential
Oct 27, 2026
Merged

jaredLunde merged 15 commits into
mainfrom
jared/sandbox-differential

Conversation

@jaredLunde

Copy link
Copy Markdown
Contributor

Hegel generates operation sequences (write, guarded write, read, stat, list, search, mkdir, exec, exec_stream, and changes made behind the client's back). Each runs in lockstep through every driver in drivers.toml, each on its own fresh root, and answers are compared with each other (after the normalisations listed in tests/differential/norm.rs) and, on local backends, with std::fs (the property test's oracle, included by path). Differences shrink to a minimal sequence, printed as scenario JSON.

Known bugs are tolerated by id (N1..N4, and the new D1, D2, D3, D5). New findings are in sdk/conformance/scenarios/differential-found.json, xfail for the failing clients:

  • D1: Python reads the first stderr line with splitlines() (CR etc.), so kinds fall back to io.
  • D2: rg complains about a non-UTF-8 .git file above the search root; exit 2 reads as invalid_query (all clients).
  • D3: TypeScript clips with a JS RegExp, so Rust-syntax patterns ((?i), (?P<x>)) clip as context lines.
  • D5: rg's binary-file WARNING line on stdout is parsed as the start of the next hit's path (all clients).

CI: mise run test:differential in the clients job, fixed seeds and counts. Env vars DIFFERENTIAL_* widen it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HJRTKuPpNNqCLEdyUwZj64

jaredLunde and others added 5 commits October 27, 2026 09:20
Hegel generates operation sequences (files, search, exec, and changes made behind
the client's back); each runs in lockstep through every registered driver on its own
root, and the answers are compared with each other and, on local backends, with std::fs.
Findings D1..D5 are scenarios in differential-found.json, xfail for the clients that fail them.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJRTKuPpNNqCLEdyUwZj64
jaredLunde and others added 2 commits October 27, 2026 10:45
… even on SIGKILL; differential tests run only in the clients job

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJRTKuPpNNqCLEdyUwZj64
…ferential tolerance

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJRTKuPpNNqCLEdyUwZj64
@jaredLunde
jaredLunde added this pull request to the merge queue Oct 27, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 27, 2026
jaredLunde and others added 4 commits October 27, 2026 12:05
… built on the Rust client)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJRTKuPpNNqCLEdyUwZj64
…rop exec.exact from the comparison

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJRTKuPpNNqCLEdyUwZj64
…er lead out of the root

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJRTKuPpNNqCLEdyUwZj64
@jaredLunde
jaredLunde enabled auto-merge October 27, 2026 19:43
@jaredLunde
jaredLunde added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit ed18430 Oct 27, 2026
23 checks passed
@jaredLunde
jaredLunde deleted the jared/sandbox-differential branch October 27, 2026 20:15
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