Repository navigation
4.2
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_statusMCP tool andechidna://run/statusresource with top-levelruns,tests,corpus, andelapsedMsfields. runsnow mirrorscounters.totalCallsso consumers can read total fuzz iterations without depending on the nested legacy counters object.tests.totalreports the current test roster size directly from the live test store.tests.failedreports broken tests whose state isSolved,Large _, orFailed _, covering fully solved failures, currently shrinking counterexamples, and execution-environment failures.corpus.sizereports the corpus entry count alongside the existing legacycorpusSizefield.- All pre-existing status fields remain available for backwards compatibility, including
phase,counters,coveragePoints,uniqueCodehashes, andcorpusSize.
- Extended the
- Monotonic elapsed-time reporting:
MCPStatenow records the campaign start point usingGHC.Clock.getMonotonicTimeNSecinstead of wall-clockUTCTime.elapsedMsis 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
runStatustest that builds a real test environment and verifies the new top-level status fields. - The test injects a fake monotonic clock and asserts exact
elapsedMsvalues across repeated polls. - The test also verifies
runs,tests.total,tests.failed,corpus.size, and backwards-compatiblecounters.totalCalls/corpusSizeoutput.
- Added a focused