test(mcp): prove tracedecay_remote_status behavior - #1645
ScriptedAlchemy wants to merge 15 commits into
Conversation
|
7ddaa03 to
ae28401
Compare
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
e1e6d5f to
6f33910
Compare
6f33910 to
6e54c61
Compare
|
Review (as part of the 2026-09-18 PR sweep): not merging in this form. Net of master, this branch is not test-only:
Suggested path: resubmit |
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Scope gate never acquired a runner, so the heavy jobs were cancelled before they started. This empty commit starts a fresh pull-request run. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Clippy rejects the smashed continuation as doc_lazy_continuation, which failed the workspace Clippy job before any other crate was checked. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Manual workflow dispatch is not available to this integration, so a same-repo head must declare the pull_request trigger for checks to start. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
A loaded runner still owns the generation store when retention plans, hook ingest reports accepted_for_replay before the commit lands, and the 12-hour search can answer stale for one generation after discovery. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
A text-current successor can be queryable before the cursor's generation is bound. CI treats that one Unavailable as a failure even when retry passes, because flaky results fail the lane. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
The ignored-dependency setup raced a live reconcile for the one permit. Cursor ingest of this fixture finishes as accepted_for_replay, so waiting for committed only burned the deadline. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Read-only git refreshes the index stat cache. A tight status poll cancels the SQL snapshot the session import needs to finish. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
The index filter took ownership of the post-call tree, so the lock assertion no longer compiled. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
A multi-thread runtime can finish the analytics write before the first poll. The RSS child retries a noisy VmHWM sample; a real materialization still fails every attempt. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
A coverage miss on a ready probe is not a source disproof. Clearing the witness there raced the busy-read test into a fabricated None. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
1e9ccaa to
6ca5ee7
Compare
The coverage miss is the stale-pointer disproof and must clear the witness. Sample the expired-proof seat only after the worker is held, so that clear is not a raced republication. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Status refreshes index, reflog, and commit-graph caches. The read-only check is HEAD, config, refs, and object bytes, with lock files separate. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
The snapshot diff used bool::then inside filter_map. The ignored dependency wait expired at 5s on the shard's first scheduler start. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
The mount wait treated that code as terminal. The problem says to reopen, and the same journey passed once polling was allowed to continue. Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Summary
tracedecay_remote_statusthrough real MCPtools/call, not an injected reader.unconfiguredread in both markdown and JSON.unavailableread, not{}and not a semantic tool error.try_lock_sharedchains that already failcargo fmt --all -- --checkon master, so repository gates can run this proof.Motivation
The handler unit test and the composition-root dispatch test either call
handle_remote_statusdirectly or echo a fixture the test installed. Neither exercises the daemon-mounted reader an agent actually calls. The two typed outcomes are different, and a missing mount must not look like an unconfigured plane.Changes
crates/tracedecay/tests/mcp_suite/mcp_handler_test/remote_status_test.rscalls the tool on the production composition harness and on a direct MCP server, and asserts the exact text each caller sees.crates/tracedecay-runtime-core/src/lifecycle_lease.rsandcrates/tracedecay-code-index-retention/src/code_index_generations/locking.rsare rustfmt-only. No lock behavior changes.Test plan
REQUIRE_EXACT_TEST_COUNT=2 scripts/require-exact-test.sh cargo test -p tracedecay --features test-transport --test mcp_suite mcp_handler_test::remote_status_test2 passed; 0 failed(direct_server_reports_unmounted_remote_authority,production_daemon_reports_unconfigured_remote_plane), not a vacuous filter matchcargo fmt --all -- --checkexits 0 on this headChecklist
.envfiles included