Repository navigation
test: expand invariant, protocol, and fuzz coverage - #340
Conversation
joshrotenberg
left a comment
There was a problem hiding this comment.
Self-review of the actual pushed diff at 1ae1710: passed; no findings requiring changes.
Fetched the published commit and verified its tree (242ddd35fd313f09896bed500ba7a0e6a4c9d89a) and all 21 GitHub file blob IDs against the source that passed final checks. Reviewed configured library/CLI protocol paths, exact HTTP/RPC status and payload assertions, no-dispatch denials, generated JWT role order/duplicate/filter cases, immediate-poll cancellation/generation schedules, shared transformation oracle and pure parser boundary. The deliberate alias corruption failed the shared assertion before restoration and final validation.
Reviewed CI feature separation, isolated fuzz lock and exact approved upstream pins, bounded offline fuzz execution, temporary corpus cleanup and failure artifacts, both dependency audits, documentation claims and release hold. Existing configured startup/Hyper readiness regressions remain in the full suite. Local evidence: 381 unit + 244 integration + 26 doctests; strict Clippy/rustdoc/format; four focused feature builds; 512 instrumented fuzz runs; zero ignored tests. Proceed to ready, then wait for every required/relevant CI/security check on this exact head before merging. Hourly backlog execution is paused by user request.
joshrotenberg
left a comment
There was a problem hiding this comment.
Self-review of the actual second pushed diff at 89882d6: passed; no findings requiring changes. Fetched the commit and verified tree 7f022a99d8d77c728a7d290855de0592e10fbd77 and all 21 GitHub file blob IDs against the tested source.
The follow-up explicitly derives the installed rustc host and passes --target to cargo-fuzz, removing the prebuilt tool's musl-target assumption that caused the first CI fuzz build to fail. AddressSanitizer, offline locked dependencies, execution/input/time/RSS limits and crash artifact handling remain enforced. Reproduction/minimization commands use the same host selection. Reviewed those two changed files in the actual fetched diff; prior protocol/authorization/configuration/cancellation assertions are unchanged.
The fixed runner passed both instrumented targets (256 runs each) with RUSTFLAGS=-Dwarnings, then every mandatory pre-push gate passed again: fmt, strict all-target/all-feature Clippy, 381 unit + 244 integration + 26 doctests, strict rustdoc, zero ignored tests. Isolated fuzz formatting, shell and diff checks also passed. The first CI run passed every other job, including both security audits, all three MSRV/test modes, reduced feature contracts, coverage and Helm. Mark ready and wait for all checks on this new head before merging. The hourly schedule remains paused; releases and dependency pin changes remain held.
The feature matrix did not exercise the modern MCP wire contract or enough cross-layer invariants. Add configured library/CLI protocol checks, generated authorization/configuration properties, controlled cancellation schedules, and finite coverage-guided fuzz smoke checks.
Closes #295.
2025-11-25baseline for five requested revisions, with initialized notification, exact tool listing/call/denial, argument transformation and session cleanup. Assert modern per-request metadata/header behavior, sessionless execution, malformed request/credential denials and explicit unsupported-version errors without the feature.Validation on tree
7f022a99d8d77c728a7d290855de0592e10fbd77:nginx:1.28-alpine/redis:7-alpineimages prepared; real balancer/Redis fixtures passed.RUSTFLAGS=-Dwarningsand an explicit compiler host target, fixed seed 1, 4 KiB inputs, 30-second total / 5-second per-input limits, 1 GiB RSS cap; isolated lock stayed unchanged.Both upstream crates remain pinned to approved revision
1eb3e4ec5f004dfb884004b2be2b083fafdbe88c. Release publication remains held. The hourly backlog schedule has been paused at the user's request; this PR is the final scheduled item.The CI fuzz runner uses the compiler host explicitly because prebuilt cargo-fuzz binaries can default to a static musl target, which AddressSanitizer rejects. The host-selection fix passed both instrumented targets locally, then all six pre-push gates passed again before the second push.