Skip to content

fix(victauri-test): timestamp-based IPC checkpoints survive the log window cap - #64

Merged
runyourempire merged 1 commit into
mainfrom
fix/ipc-checkpoint-sliding-window
Aug 11, 2026
Merged

fix(victauri-test): timestamp-based IPC checkpoints survive the log window cap#64
runyourempire merged 1 commit into
mainfrom
fix/ipc-checkpoint-sliding-window

Conversation

@runyourempire

Copy link
Copy Markdown
Collaborator

Summary

Found live on 4DA during the rmcp 3.1.2 verification. create_ipc_checkpoint() snapshotted the IPC log length and ipc_calls_since() did skip(length) — but the server's log tools return a capped sliding window of the newest entries (default 100, since 0.7.10). On any app with >~100 logged IPC calls, checkpoint == window size and calls_since is silently always empty.

Live evidence chain: 4DA's dogfood suite failed ipc_integrity_healthy + parallel_ipc_burst ("calls since checkpoint: []"); a manual REST canary (invoke get_settings → count entries 14→15) proved capture works — the client arithmetic was the bug. Latent since 0.7.10; unrelated to rmcp 3.x.

Fix

Checkpoint = newest entry timestamp (epoch ms); calls_since filters by it over a 1000-entry read — immune to window position. Signatures unchanged (usize). Timestamp-less entries included only for the zero checkpoint.

Verification

  • The two failing 4DA dogfood tests pass against live 4DA with this client (suite: 152/165 → 153/165; all remaining failures are 4DA-branch API/UI drift, triaged).
  • Two new mock-server regression tests pin the sliding-window scenario (window at cap → checkpoint → window slides → canary visible).
  • Existing ipc_checkpoint_tracks_new_calls stays green under the new semantics; fmt/clippy/full workspace tests clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KSa8Fdy8xgexFYYx47DkAg

…indow cap

create_ipc_checkpoint snapshotted the IPC log LENGTH and ipc_calls_since
did skip(length) - but the server's log tools return a capped sliding
window of the NEWEST entries (default 100). On any app with more than
~100 logged IPC calls the checkpoint equals the window size and
calls_since is silently ALWAYS empty.

Found live on 4DA during the rmcp 3.1.2 verification: its dogfood
suite's ipc_integrity_healthy and parallel_ipc_burst canary assertions
failed ("calls since checkpoint: []") while a manual canary repro
proved capture itself worked - the client arithmetic was the bug.
Latent since the 0.7.10 log-capping change; unrelated to rmcp.

Fix: the checkpoint is now the newest entry timestamp (epoch ms);
calls_since filters by it over a 1000-entry read - immune to window
position. Signatures unchanged (usize). Entries without a timestamp are
included only for the zero checkpoint.

Verified: the two failing 4DA dogfood tests pass against live 4DA with
this client (153/165 suite, all remaining failures 4DA-side drift);
two new mock-server regression tests pin the sliding-window scenario;
existing ipc_checkpoint_tracks_new_calls stays green; fmt/clippy/full
workspace tests clean.

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KSa8Fdy8xgexFYYx47DkAg
@runyourempire
runyourempire merged commit 15dcdb1 into main Aug 11, 2026
21 checks passed
@runyourempire
runyourempire deleted the fix/ipc-checkpoint-sliding-window branch August 11, 2026 13:11
runyourempire added a commit that referenced this pull request Aug 11, 2026
…ive-verified (#65)

Version bump 0.8.7 -> 0.8.8 across the workspace (bump script + manual:
server.json, which the script does not cover and which was still at 0.8.6
- missed by the 0.8.7 release; vscode extension to 0.8.8).

Release-prep adversarial sweep applied on top of the merged train
(#62 rmcp 3.1.2, #63 tauri 2.11.5 lock, #64 checkpoint fix):
- Fixed stale session-era claims in faq/testing/architecture/
  getting-started docs, victauri-test rustdoc, and the CLI init template
  (the transport is stateless by default; 2026-07-28 removes sessions).
- Fixed two stale "31 tools" counts (plugin README, agent-session
  example) and the "subscribable resources" claim (subscribe was never
  advertised and is legacy-only); documented the new SEP-2549 cache
  hints; refreshed stale sample versions.
- build_app_stateful doc notes 2026-07-28 clients are always sessionless.

Adversarial verification before this release: zero stale rmcp-1.5 API
refs in code; tools_fallback.json verified at 35 entries; JS log
timestamps verified integer Date.now() everywhere (checkpoint-fix
soundness); privacy config verified init-only (list-TTL soundness);
REAL stdio bridge e2e vs the new server for BOTH the shipped 0.8.6 CLI
and this tree's CLI (initialize/tools-list/tool-calls + identity
selection across two live apps) - all pass.

Gate: fmt clean; clippy --all-targets 0 warnings (default, no-default,
release); full workspace tests 0 failures; cargo doc -D warnings clean;
cargo semver-checks: no semver update required (x3 crates);
cargo package OK for all leaf crates (dependents blocked only on the
not-yet-published 0.8.8 core - expected pre-publish ordering).


Claude-Session: https://claude.ai/code/session_01KSa8Fdy8xgexFYYx47DkAg

Co-authored-by: audit <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant