You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Trace decoding extracts function argument types from runtime bytecode with
evmole when no project ABI matches the selector, so unverified and forked
calls render decoded arguments instead of 0xselector(...)
Changed
Max-mode campaigns now log under a maxxing{threads=N} span instead of fuzz, and their progress/finished summaries include the current best max value
The shrink progress line now logs structured fields (runs, calls, elapsed, call_rate, gas_rate, initial_calls, current_calls),
matching the fuzz progress summary
Max-mode campaigns no longer print the full call sequence in the log; it
stays available in the trace file
Harnesses may declare an optional summary() function (no arguments, not
view/pure) that ripfuzz calls once after shrinking in the traced re-run, so
it can log a final summary that shows up at the end of the trace
The Found N distinct failed assertion(s) finding now logs at info instead
of error, since the campaign still completes successfully
Shrunk invariant failures are now persisted to the corpus, so the next
campaign discovers the shortest failing sequence during replay instead of
re-fuzzing it
Campaign logs now use shrink{threads=N} and trace spans after fuzzing, so
the whole lifecycle reads build → deploy → replay → fuzz → shrink → trace; shrink progress messages also log assertion, initial_calls, and final_calls as structured fields instead of concatenated text
The trace span now prints only the decoded log entries (when present) below
the trace: line and the trace file path, instead of the compact trace and a fulltrace: line; the campaign log path moves to its own log span
Coverage report generation now logs under a report span, the percentage
line is no longer indented, and the lcov path is full like the trace and log
paths
Session setup logs are now grouped under build, deploy{contract=...}, and replay{items=N} spans, matching the fuzz{threads=N} span
The Loaded harness contract and Deployed messages no longer repeat the
contract name, since the deploy span already carries it
The corpus replay and fuzz progress/finished summaries now collapse the
edge/depth/revert/jump counters into a single compact coverage field (e.g. 8,407e 1,409d 17r 782j) alongside the contract count
Artifact parse warnings now render as failed to parse artifact <path> under
the build:load_artifacts span, without the repeated project path
Fixed
Remove the redundant contract field from the fuzz log span in invariant
and max-mode campaigns, so the line reads fuzz{threads=N} instead of fuzz{contract=Name threads=N}
Invariant campaigns now report failed assertions discovered while replaying
the corpus, instead of seeding coverage and ignoring those panics