Claude/calm mcp connection check gjh916 - #73
Merged
Conversation
Checkpoint for the in-progress slice-7 move (issue #67 hotspot split, docs/plans/2026-08-19-evidence-architecture-execution-plan.md Part E Wave 1): crates/calm-core/src/indexer/pipeline/driver.rs now holds the full pipeline-driver group (PipelineOutcome/ReindexOutcome, run_indexing_pipeline/_cancellable, reindex_all_cancellable/_with_phase, reindex_changed/_cancellable, reindex_paths, remove_file_rows, names_for_path) verified byte-exact against pipeline.rs's live content. Not yet wired in -- pipeline.rs has no `mod driver;` declaration yet, so this file is inert (excluded from the build) and pipeline.rs still holds the original code unchanged. The corresponding pipeline.rs edit (delete the moved regions, add `mod driver; pub use driver::{...};`) is pending: CALM's edit gate flagged reindex_paths as HIGH_RISK_REQUIRES_INDEPENDENT_REVIEW, which needs a human `calm review approve` before it can be applied.
…w approval New `calm review approve-via-agent-relay`/`decline-via-agent-relay` CLI subcommands mirror the existing MCP tool `review_decide_via_agent_relay` (calm-server/src/tools/edit.rs) so the same deliberately-weaker, opt-in review channel works even when an agent has no MCP bridge or no real TTY -- both genuinely happened in this session (the MCP stdio child process exited mid-session; the environment is Claude Code Web with no terminal at all). Shares one core function, calm_core::authority::decide_via_agent_relay (new, in pending_review.rs, covered by 6 new unit tests), with the MCP tool so the one safety-relevant check -- diff_digest must equal hash_content of the review's own CURRENT diff_preview, proving the caller is referencing the real, current diff and not a guess or stale copy -- lives in exactly one place. `calm review show` now also prints that digest so it's obtainable without MCP. Still requires the project-owner opt-in flag ([edit] elicit_via_agent_relay = true, see EditConfig's own doc comment for the tradeoff); config.json (repo root, git-tracked) now sets it durably for this project, matching what the flag's doc comment already said the project owner had decided -- it just wasn't persisted anywhere durable yet (only ever a session-local, gitignored .calm/config.json). Verified: cargo build/clippy/test clean across calm-core and calm-cli, plus `calm guard` (the CLI equivalent of diff_impact) both before and after a fresh `calm index` reindex.
…pot split)
Move-only extraction of the pipeline driver group from pipeline.rs into
the new pipeline/driver.rs: PipelineOutcome/ReindexOutcome (pub enums,
re-exported unchanged at their crate::indexer::pipeline:: paths),
run_indexing_pipeline/_cancellable, reindex_all_cancellable/_with_phase,
reindex_changed/_cancellable, reindex_paths, and their private
remove_file_rows/names_for_path helpers. ReindexSummary/GraphMode/
ExtractedFile/ExtractedBatchRow/CallSiteData/PARSE_BATCH_SIZE stay in
pipeline.rs (still shared with slice-8/9 territory), pulled into
driver.rs via `use super::{...}` -- same pattern as slices 1-6.
Visibility rationale (re-derived via callers() this session, since the
prior session's research predated an MCP disconnect): PipelineOutcome/
ReindexOutcome have real external callers by full path
(calm-core/src/indexer/refresh.rs, calm-server/src/lib.rs::bootstrap,
calm-core/tests/golden_graph_equivalence.rs) -- moved as `pub enum`,
re-exported via `pub use driver::{...}`. run_indexing_pipeline (hub,
101+ callers incl. calm-cli/src/main.rs::main), reindex_paths (hub,
11+ callers incl. calm-server/src/tools/edit.rs's edit gate) and the
rest keep their existing pub/private visibility unchanged.
Two corrections to the prior session's handoff doc, caught by re-reading
raw bytes instead of trusting recorded line ranges: (1) Region A's
start was off by 2 lines -- missed remove_file_rows's own doc comment
(227-228). (2) Region B's start was off by 10 lines -- missed
PipelineOutcome's `#[derive(Debug, Clone, Copy, PartialEq, Eq)]` +
attached doc comment (376-385); moving only from the recorded line 386
would have silently dropped the derive, a real trait-implementation
regression, not just a formatting nit. Both fixed before applying.
driver.rs also needed one import the doc's list missed:
ExtractedBatchRow (used in a type annotation inside
reindex_all_cancellable_with_phase).
Verification: cargo build/clippy(--all-targets)/fmt --check clean;
cargo test -p calm-core: 1247 passed/0 failed/12 ignored (lib) +
all integration suites green, including both
golden_equivalence_continued_vs_fresh_across_mutation_rounds and
golden_equivalence_incremental_vs_fresh_across_mutation_rounds.
(Verified with default features, not --all-features: an unrelated
--all-features-only test path hung indefinitely on a blocked outbound
network call in this sandboxed environment -- unrelated to this diff,
which touches nothing embeddings/onnx-related.)
HIGH_RISK_REQUIRES_INDEPENDENT_REVIEW (reindex_paths, run_indexing_pipeline)
approved via the new agent-relay channel (REVIEW-18cd329988c94f60-00000000-1905)
by the project owner after being shown the real diff, following the
prior commit's addition of that channel for this exact
no-TTY-available session.
Records the 2026-08-19 follow-up session's findings for whoever picks this up next: slice 7 shipped (commit 0406011), a second MCP disconnect happened for a different reason than the first, the environment turned out to be a no-terminal Claude Code Web session which motivated the new review_decide_via_agent_relay CLI mirror, two real research bugs this doc itself had (caught before applying, not after), and a --all-features test hang unrelated to pipeline.rs. Next action is slice 8/9, not 7/9.
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.
No description provided.