Skip to content

4.2

Choose a tag to compare

@GuardianAudits GuardianAudits released this 22 Apr 05:12
· 12 commits to master since this release

Echidna 4.2

This release makes MCP run status a stable single source of truth for polling orchestrators and fixes elapsed-time reporting so progress clients do not need to scrape CLI stdout.

  • MCP status progress fields:
    • Extended the get_status MCP tool and echidna://run/status resource with top-level runs, tests, corpus, and elapsedMs fields.
    • runs now mirrors counters.totalCalls so consumers can read total fuzz iterations without depending on the nested legacy counters object.
    • tests.total reports the current test roster size directly from the live test store.
    • tests.failed reports broken tests whose state is Solved, Large _, or Failed _, covering fully solved failures, currently shrinking counterexamples, and execution-environment failures.
    • corpus.size reports the corpus entry count alongside the existing legacy corpusSize field.
    • All pre-existing status fields remain available for backwards compatibility, including phase, counters, coveragePoints, uniqueCodehashes, and corpusSize.
  • Monotonic elapsed-time reporting:
    • MCPState now records the campaign start point using GHC.Clock.getMonotonicTimeNSec instead of wall-clock UTCTime.
    • elapsedMs is computed from the monotonic clock delta, so host clock or NTP adjustments cannot make elapsed time move backwards between status polls.
    • The monotonic clock read is injectable through MCPState, allowing deterministic status tests without sleeping or depending on real time.
  • MCP status test coverage:
    • Added a focused runStatus test that builds a real test environment and verifies the new top-level status fields.
    • The test injects a fake monotonic clock and asserts exact elapsedMs values across repeated polls.
    • The test also verifies runs, tests.total, tests.failed, corpus.size, and backwards-compatible counters.totalCalls / corpusSize output.