Skip to content

fix(fuzz): preserve tmin replay failures#15868

Open
mablr wants to merge 7 commits into
masterfrom
mablr/oss-578-preserve-secondary-replay-failures
Open

fix(fuzz): preserve tmin replay failures#15868
mablr wants to merge 7 commits into
masterfrom
mablr/oss-578-preserve-secondary-replay-failures

Conversation

@mablr

@mablr mablr commented Jul 23, 2026

Copy link
Copy Markdown
Member

Invariant minimization replay retained only one representative failure, allowing tmin candidates to discard secondary handler, predicate, or afterInvariant failures. This records every unique replay failure, derives cmin classification from that set, and requires exact baseline/candidate failure-set equality. Replay skips invariant predicates already observed during the sequence and evaluates afterInvariant after final predicate checks only when no predicate or hook failure was recorded.

Addresses OSS-578.

This PR was written with OpenAI Codex assistance.

Base automatically changed from mablr/fuzz-cmin-predicate-failures to master July 23, 2026 15:24
mablr added 2 commits July 23, 2026 17:48
Minimization replay retained only one representative failure, allowing tmin candidates to drop secondary handler or predicate failures. Record every unique replay failure and compare the complete identity set while preserving existing cmin classification semantics.
Derive replay failure classes from the complete failure set and check afterInvariant after the final invariant predicate pass. This keeps tmin candidates that reproduce a failing afterInvariant hook.
@mablr
mablr force-pushed the mablr/oss-578-preserve-secondary-replay-failures branch from 972916a to 1e5fce9 Compare July 23, 2026 15:54
@mablr
mablr marked this pull request as ready for review July 23, 2026 15:55
mattsse
mattsse previously approved these changes Jul 23, 2026

@mattsse mattsse left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Comment thread crates/evm/evm/src/executors/showmap.rs
Comment thread crates/evm/evm/src/executors/showmap.rs
mablr added 2 commits July 23, 2026 19:25
…ilures

# Conflicts:
#	crates/evm/evm/src/executors/showmap.rs
Preserve every campaign-equivalent replay failure during transaction minimization. Deduplicate handler assertions by site, record fail-on-revert outcomes per invariant, and stop only after all selected predicates fail.

@stevencartavia stevencartavia left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

g2g once tests are fixed

Transaction minimization must stop at the invariant campaign boundary, while corpus minimization must replay the complete sequence for coverage. Keep those modes distinct and represent fail-on-revert outcomes separately so cmin classification and replay diagnostics remain unchanged.
@mablr
mablr requested a review from stevencartavia July 24, 2026 09:33
mattsse
mattsse previously approved these changes Jul 24, 2026

@mattsse mattsse left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@mablr

mablr commented Jul 24, 2026

Copy link
Copy Markdown
Member Author

@mattsse I made smol naming fix sorry

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants