fix(victauri-test): IPC checkpoint cannot miss a same-millisecond call (0.8.8 audit) - #66
Merged
Merged
Conversation
The pre-release GPT-5.5 adversarial audit of the v0.8.8 candidate found one real issue: ipc_calls_since filters with a strict timestamp > checkpoint comparison, so a call logged in the same millisecond immediately after create_ipc_checkpoint returned was silently invisible. create_ipc_checkpoint now waits until the local clock has advanced past the checkpoint millisecond before returning (bounded at 5ms against clock skew), so calls made after the checkpoint cannot share the boundary timestamp. No API change; semver-checks vs 0.8.7 stays clean. Also adds a stateless-MCP auth regression test pinning Bearer enforcement on the 2026-07-28 server/discover lifecycle method, and folds both into the 0.8.8 CHANGELOG entry. Full local gate re-verified post-restart: fmt, clippy x4 (default / no-default / release / sqlite) -D warnings, workspace tests (+sqlite), doc -D warnings, semver-checks (no update required), cargo deny, cargo audit, install-gate self-test, doc-count lint. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01B3UneTjEcPtULZuER1BSvY
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Pre-release GPT-5.5 adversarial audit of the tagged v0.8.8 candidate (
c9ee229). The auditconfirmed the tagged tree otherwise clean and found one real issue, in exactly the spot the
audit brief disclosed as the weakest (T2 — the checkpoint boundary).
The bug
ipc_calls_sincefilters with a stricttimestamp > checkpoint.create_ipc_checkpointreturnedthe newest visible entry timestamp immediately — so any IPC call logged in the same millisecond
right after the checkpoint returned was silently invisible to
calls_since. On a busy app that'sthe common case, not an edge case: the checkpoint→invoke gap is routinely sub-millisecond.
This is the same family as the bug fixed in #64 (checkpoints silently returning nothing), one layer
deeper: #64 fixed which coordinate the checkpoint uses, this fixes the boundary semantics of
that coordinate.
The fix
create_ipc_checkpointnow waits until the local clock has advanced past the checkpointmillisecond before returning, bounded at 5 ms so a skewed/future server timestamp can't stall the
caller. Calls made after the checkpoint therefore cannot share the boundary timestamp.
crates/victauri-test/src/client.rs— the fix + doc update on the public method.crates/victauri-test/tests/client_tests.rs— regression pinning the same-ms boundary.crates/victauri-plugin/tests/integration_tests.rs— second new test: Bearer-auth enforcement onthe
2026-07-28server/discoverlifecycle method under stateless MCP (audit surface T3 —a new-protocol lifecycle method reaching the rmcp handler before the auth layer would be a real
bypass; it does not, and now that's pinned).
CHANGELOG.md— folded into the existing[0.8.8]entry.No public API change.
cargo semver-checksvs published 0.8.7: no semver update required onboth
victauri-pluginandvictauri-test, so this stays in^0.8.Gate (re-run in full post-restart, on this tree)
cargo fmt --check· clippy ×4 (default/--no-default-features/--release/--features sqlite), all--all-targets -D warnings·cargo test --workspace(and again with--features sqlitevia preflight) ·RUSTDOCFLAGS="-D warnings" cargo doc·cargo semver-checks check-release --workspace·cargo deny check(advisories/bans/licenses/sources ok) ·cargo audit(0, allowed warnings only) ·bash tools/test-install-gate.sh·scripts/preflight.ps1(incl. doc-count lint: 35 tools consistent across README/getting-started/tools-reference).
🤖 Generated with Claude Code
https://claude.ai/code/session_01B3UneTjEcPtULZuER1BSvY