Skip to content

Feat/v4 mcp and session store - #173

Merged
KonghaYao merged 5 commits into
mainfrom
feat/v4-mcp-and-session-store
Sep 27, 2026
Merged

KonghaYao merged 5 commits into
mainfrom
feat/v4-mcp-and-session-store

Conversation

@KonghaYao

Copy link
Copy Markdown
Owner

No description provided.

v4 MCP 适配第一部分:MCP 从「按需连接的插件能力」变成受生命周期管辖的一等
资源接入面。

- System MCP 启动准入:新增启动闸门 hook `before_react_start`,transport /
  initialize / 协商 / 真实 tools/list 未完成,或必需工具缺失、超时、取消时
  阻止本次 loop 进入后续阶段(该 Err 不降级);配置层三字段与纯校验在
  serde 与项目/全局/插件四条来源都拒绝非法组合;消除 initialize 路径 4 处
  `unwrap_or_default`,tools/list 失败不再伪装成 Connected + 空工具列表。
- 一等工具注入:`system_mcp_tools` 按所属 server 的原始工具名精确匹配后
  all-or-nothing 提升 direct,经目录原子提交后进入首个 Reason 的 LLM tools;
  `[]` 只要求 ready 不注入;普通 MCP 工具仍走 ToolSearch deferred 路径。
- MCP over ACP:client 可声明 acp 型 server,由宿主在会话级接入(与 plugin /
  process 并列的第三种 transport),带 host-policy 与 isolation 契约测试。
- 测试:host seam 用真实子进程 + 真实 rmcp stdio + counting model 断言首个
  LLM 请求入参、失败时模型调用 0 次。
- 文档:配置参考、代码索引、架构契约与测试标准同步,part-1 规划/子计划/
  验收记录入库。

顺带清理三处已失效的 `#[allow(dead_code)]`(`prepare_system_tools`、
`with_direct`、`original_tool_name` 均已有生产调用方)。part-2 规划文档不进
本分支,保留在 `feat/mcp-adaptation-v4-part-2`。

Co-Authored-By: deepseek-v4-flash <deepseek-ai@claude-code-best.win>
@coderabbitai

coderabbitai Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 365 files, which is 265 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 78eea0b6-f67a-4b2f-b041-0b2eaa2f5455

📥 Commits

Reviewing files that changed from the base of the PR and between fbb2b51 and 4d23b72.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (365)
  • .github/workflows/ci.yml
  • .typos.toml
  • CLAUDE.md
  • docs/code-index/peri-acp-types.md
  • docs/code-index/peri-acp.md
  • docs/code-index/peri-agent.md
  • docs/code-index/peri-controller.md
  • docs/code-index/peri-middlewares.md
  • docs/code-index/peri-resources.md
  • docs/code-index/peri-tui.md
  • docs/design/README.md
  • docs/design/mcp-adaptation-v4-part-1.md
  • docs/design/message-transcript.md
  • docs/design/peri-acp-protocol.md
  • docs/design/session-workspace-identity.md
  • docs/design/tui-streaming-markdown-performance.md
  • docs/experiment-tui-streaming-publication/adversarial_review.md
  • docs/reference/mcp-ecosystem.md
  • docs/standards/architecture-contracts.md
  • docs/standards/index.md
  • docs/standards/testing.md
  • peri-acp-types/src/acp_mcp.rs
  • peri-acp-types/src/command.rs
  • peri-acp-types/src/command_handler_test.rs
  • peri-acp-types/src/frozen.rs
  • peri-acp-types/src/lib.rs
  • peri-acp-types/src/plugin.rs
  • peri-acp-types/src/ports.rs
  • peri-acp-types/src/session_resources.rs
  • peri-acp-types/src/session_resources_test.rs
  • peri-acp-types/src/session_store.rs
  • peri-acp-types/src/session_store_test.rs
  • peri-acp-types/src/store/history.rs
  • peri-acp-types/src/store/history_test.rs
  • peri-acp-types/src/store/mod.rs
  • peri-acp-types/src/workspace.rs
  • peri-acp/CLAUDE.md
  • peri-acp/Cargo.toml
  • peri-acp/src/dispatch/execute_command.rs
  • peri-acp/src/dispatch/execute_command_test.rs
  • peri-acp/src/dispatch/init.rs
  • peri-acp/src/dispatch/list_sessions.rs
  • peri-acp/src/dispatch/mod.rs
  • peri-acp/src/dispatch/rewind.rs
  • peri-acp/src/dispatch/session_fork.rs
  • peri-acp/src/dispatch/session_fork_test.rs
  • peri-acp/src/dispatch/session_load.rs
  • peri-acp/src/host/assemble.rs
  • peri-acp/src/host/compact_command_test.rs
  • peri-acp/src/host/compact_recovery_test.rs
  • peri-acp/src/host/executor_flow_test.rs
  • peri-acp/src/host/lifecycle.rs
  • peri-acp/src/host/mcp_v4_startup_test.rs
  • peri-acp/src/host/mod.rs
  • peri-acp/src/host/prediction.rs
  • peri-acp/src/host/prediction_test.rs
  • peri-acp/src/host/prepared.rs
  • peri-acp/src/host/prepared_test.rs
  • peri-acp/src/host/prompt.rs
  • peri-acp/src/host/prompt_test.rs
  • peri-acp/src/host/requests.rs
  • peri-acp/src/host/requests/acp_mcp.rs
  • peri-acp/src/host/requests/acp_mcp_loop_test.rs
  • peri-acp/src/host/requests/acp_mcp_test.rs
  • peri-acp/src/host/requests/legacy_session.rs
  • peri-acp/src/host/requests/rewind.rs
  • peri-acp/src/host/requests/session_lifecycle.rs
  • peri-acp/src/host/requests_legacy_test.rs
  • peri-acp/src/host/requests_recovery_test.rs
  • peri-acp/src/host/requests_test.rs
  • peri-acp/src/host/server_loop.rs
  • peri-acp/src/host/stage_builder.rs
  • peri-acp/src/host/stdio/mod.rs
  • peri-acp/src/host/stdio/run_server_integration_test.rs
  • peri-acp/src/host/stdio/session_store_shutdown_test.rs
  • peri-acp/src/host/task_scope.rs
  • peri-acp/src/host/workflow_agent.rs
  • peri-acp/src/host/workspace.rs
  • peri-acp/src/prompt/mod.rs
  • peri-acp/src/session/command/compact_persistence_test.rs
  • peri-acp/src/session/command/compact_test.rs
  • peri-acp/src/session/command/rewind.rs
  • peri-acp/src/session/frozen.rs
  • peri-acp/src/session/mod.rs
  • peri-acp/src/session/mod_test.rs
  • peri-acp/tests/compact_command_contract_test.rs
  • peri-agent/CLAUDE.md
  • peri-agent/src/agent/compact_v2/full.rs
  • peri-agent/src/agent/compact_v2/full_test.rs
  • peri-agent/src/agent/compact_v2/trigger_test.rs
  • peri-agent/src/agent/stages/budget_recovery_integration_test.rs
  • peri-agent/src/agent/stages/middleware_runner.rs
  • peri-agent/src/agent/stages/middleware_runner_test.rs
  • peri-agent/src/agent/stages/mod.rs
  • peri-agent/src/agent/stages/stages_test.rs
  • peri-agent/src/agent/state.rs
  • peri-agent/src/agent/workflow/agent.rs
  • peri-agent/src/middleware/capabilities.rs
  • peri-agent/src/middleware/chain.rs
  • peri-agent/src/middleware/trait.rs
  • peri-agent/src/resources.rs
  • peri-agent/src/session/exec/compact_pipeline.rs
  • peri-agent/src/session/exec/executor.rs
  • peri-agent/src/session/exec/executor/agent_build.rs
  • peri-agent/src/session/exec/executor/context.rs
  • peri-agent/src/session/exec/executor_helpers.rs
  • peri-agent/src/session/exec/executor_helpers/compact_cancel_test.rs
  • peri-agent/src/session/exec/executor_helpers/event_pump.rs
  • peri-agent/src/session/exec/executor_helpers/intercept.rs
  • peri-agent/src/session/exec/executor_helpers/v2_execute.rs
  • peri-agent/src/session/exec/executor_helpers_test.rs
  • peri-agent/src/session/exec/executor_provenance_test.rs
  • peri-agent/src/session/exec/executor_test.rs
  • peri-agent/src/session/exec/stage_builder.rs
  • peri-agent/src/session/exec/stage_builder/agent.rs
  • peri-agent/src/session/exec/stage_builder/session_setup.rs
  • peri-agent/src/session/exec/stage_builder/subagent_setup.rs
  • peri-agent/src/session/exec/stage_builder/tools.rs
  • peri-agent/src/session/exec/stage_builder/tools_test.rs
  • peri-agent/src/session/factory.rs
  • peri-agent/src/session/mod.rs
  • peri-agent/src/session/subagent.rs
  • peri-agent/src/session/subagent/background.rs
  • peri-agent/src/session/subagent/factory.rs
  • peri-agent/src/session/subagent/factory/claim.rs
  • peri-agent/src/session/subagent/factory/context.rs
  • peri-agent/src/session/subagent/factory/resume.rs
  • peri-agent/src/session/subagent/factory/spawn.rs
  • peri-agent/src/session/subagent/lifecycle.rs
  • peri-agent/src/session/subagent/provenance_test.rs
  • peri-agent/src/session/subagent/run_sync.rs
  • peri-agent/src/session/subagent/types.rs
  • peri-agent/src/session/subagent_test.rs
  • peri-agent/src/session/test_resources.rs
  • peri-agent/src/session/test_resources/mock/fixtures.rs
  • peri-agent/src/session/test_resources/mock/mod.rs
  • peri-agent/src/session/test_resources/mock/observe.rs
  • peri-agent/src/session/test_resources/mock/session_resources.rs
  • peri-agent/src/session/tool_catalog.rs
  • peri-agent/src/session/tool_catalog_test.rs
  • peri-agent/src/session/transcript.rs
  • peri-agent/src/session/transcript/persistence.rs
  • peri-agent/src/session/transcript_test.rs
  • peri-agent/src/thread/mod.rs
  • peri-controller/src/controller.rs
  • peri-controller/src/controller_test.rs
  • peri-js-runtime/Cargo.toml
  • peri-js-runtime/src/artifact.rs
  • peri-js-runtime/src/host.rs
  • peri-js-runtime/src/rpc_test.rs
  • peri-lsp/src/client_document_test.rs
  • peri-lsp/src/client_lifecycle_test.rs
  • peri-lsp/src/client_test.rs
  • peri-lsp/src/pool_test.rs
  • peri-lsp/src/uri.rs
  • peri-middlewares/CLAUDE.md
  • peri-middlewares/src/agents_md/mod.rs
  • peri-middlewares/src/assembly/mcp.rs
  • peri-middlewares/src/assembly/preparation.rs
  • peri-middlewares/src/assembly_test.rs
  • peri-middlewares/src/hooks/loader.rs
  • peri-middlewares/src/hooks/loader_test.rs
  • peri-middlewares/src/mcp/acp/mod.rs
  • peri-middlewares/src/mcp/acp/session.rs
  • peri-middlewares/src/mcp/acp/session_test.rs
  • peri-middlewares/src/mcp/acp/transport.rs
  • peri-middlewares/src/mcp/client.rs
  • peri-middlewares/src/mcp/client/lifecycle.rs
  • peri-middlewares/src/mcp/client/readiness.rs
  • peri-middlewares/src/mcp/client/readiness_test.rs
  • peri-middlewares/src/mcp/client/status.rs
  • peri-middlewares/src/mcp/client_oauth.rs
  • peri-middlewares/src/mcp/client_test.rs
  • peri-middlewares/src/mcp/config.rs
  • peri-middlewares/src/mcp/config_test.rs
  • peri-middlewares/src/mcp/discover_tool.rs
  • peri-middlewares/src/mcp/dynamic/registry.rs
  • peri-middlewares/src/mcp/dynamic/registry/capability.rs
  • peri-middlewares/src/mcp/dynamic/registry_test.rs
  • peri-middlewares/src/mcp/dynamic/tool_test.rs
  • peri-middlewares/src/mcp/initialize.rs
  • peri-middlewares/src/mcp/initialize_test.rs
  • peri-middlewares/src/mcp/mcp_v4_seam_test.rs
  • peri-middlewares/src/mcp/middleware.rs
  • peri-middlewares/src/mcp/middleware_test.rs
  • peri-middlewares/src/mcp/mod.rs
  • peri-middlewares/src/mcp/reconnect.rs
  • peri-middlewares/src/mcp/resource_cache_test.rs
  • peri-middlewares/src/mcp/resource_tool.rs
  • peri-middlewares/src/mcp/system_tools.rs
  • peri-middlewares/src/mcp/system_tools_test.rs
  • peri-middlewares/src/mcp/task_scope.rs
  • peri-middlewares/src/mcp/tool_bridge.rs
  • peri-middlewares/src/mcp/transport.rs
  • peri-middlewares/src/mcp/transport_test.rs
  • peri-middlewares/src/plugin/config.rs
  • peri-middlewares/src/plugin/config_test.rs
  • peri-middlewares/src/plugin/loader.rs
  • peri-middlewares/src/plugin/loader_test.rs
  • peri-middlewares/src/plugin/mod.rs
  • peri-middlewares/src/skills/loader.rs
  • peri-middlewares/src/skills/loader_test.rs
  • peri-middlewares/src/skills/mod.rs
  • peri-middlewares/src/subagent/tool/configuration.rs
  • peri-middlewares/src/subagent/tool/define.rs
  • peri-middlewares/src/subagent/tool/execute_bg.rs
  • peri-middlewares/src/subagent/tool/execute_fork.rs
  • peri-middlewares/src/subagent/tool/execute_resume.rs
  • peri-middlewares/src/subagent/tool/spawn_context.rs
  • peri-middlewares/src/subagent/tool/tool_test.rs
  • peri-middlewares/src/subagent/tool/tool_test/active_message_test.rs
  • peri-middlewares/src/subagent/tool/tool_test/events_contract_test.rs
  • peri-middlewares/src/subagent/tool/tool_test/invoke_test.rs
  • peri-middlewares/src/subagent/tool/tool_test/model_tier_test.rs
  • peri-middlewares/src/subagent/tool/tool_test/resume_integration_test.rs
  • peri-middlewares/src/subagent/tool/tool_test/resume_test.rs
  • peri-middlewares/tests/mcp_host_policy_contract.rs
  • peri-middlewares/tests/mcp_isolation_contract.rs
  • peri-resources/Cargo.toml
  • peri-resources/src/context.rs
  • peri-resources/src/context_test.rs
  • peri-resources/src/lib.rs
  • peri-resources/src/sessions/canonical.rs
  • peri-resources/src/sessions/data.rs
  • peri-resources/src/sessions/default_path_test.rs
  • peri-resources/src/sessions/filesystem.rs
  • peri-resources/src/sessions/filesystem_test.rs
  • peri-resources/src/sessions/local_port.rs
  • peri-resources/src/sessions/mod.rs
  • peri-resources/src/sessions/open.rs
  • peri-resources/src/sessions/open_test.rs
  • peri-resources/src/sessions/remote/cloud_deployment_child_test.rs
  • peri-resources/src/sessions/remote/cloud_deployment_test.rs
  • peri-resources/src/sessions/remote/cloud_history_test.rs
  • peri-resources/src/sessions/remote/cloud_identity_test.rs
  • peri-resources/src/sessions/remote/cloud_lifecycle_test.rs
  • peri-resources/src/sessions/remote/cloud_limit_test.rs
  • peri-resources/src/sessions/remote/cloud_mutation_test.rs
  • peri-resources/src/sessions/remote/cloud_recovery_test.rs
  • peri-resources/src/sessions/remote/cloud_session_test.rs
  • peri-resources/src/sessions/remote/cloud_test.rs
  • peri-resources/src/sessions/remote/composition.rs
  • peri-resources/src/sessions/remote/connection.rs
  • peri-resources/src/sessions/remote/connection_close_test.rs
  • peri-resources/src/sessions/remote/connection_recovery_test.rs
  • peri-resources/src/sessions/remote/credentials.rs
  • peri-resources/src/sessions/remote/endpoint.rs
  • peri-resources/src/sessions/remote/failure.rs
  • peri-resources/src/sessions/remote/generation.rs
  • peri-resources/src/sessions/remote/initialization_test.rs
  • peri-resources/src/sessions/remote/ledger.rs
  • peri-resources/src/sessions/remote/ledger_test.rs
  • peri-resources/src/sessions/remote/mod.rs
  • peri-resources/src/sessions/remote/mutation.rs
  • peri-resources/src/sessions/remote/mutation_test.rs
  • peri-resources/src/sessions/remote/recovery_fixture_test.rs
  • peri-resources/src/sessions/remote/remote_test.rs
  • peri-resources/src/sessions/remote/schema.rs
  • peri-resources/src/sessions/remote/schema_test.rs
  • peri-resources/src/sessions/remote/session_child_guard_test.rs
  • peri-resources/src/sessions/remote/session_close_test.rs
  • peri-resources/src/sessions/remote/session_codec.rs
  • peri-resources/src/sessions/remote/session_data.rs
  • peri-resources/src/sessions/remote/session_history.rs
  • peri-resources/src/sessions/remote/session_lifecycle.rs
  • peri-resources/src/sessions/remote/session_read.rs
  • peri-resources/src/sessions/remote/session_schema.rs
  • peri-resources/src/sessions/remote/session_shape_test.rs
  • peri-resources/src/sessions/remote/session_sql.rs
  • peri-resources/src/sessions/remote/session_write.rs
  • peri-resources/src/sessions/remote/sql.rs
  • peri-resources/src/sessions/resources.rs
  • peri-resources/src/sessions/resources/claim.rs
  • peri-resources/src/sessions/resources/gate.rs
  • peri-resources/src/sessions/resources/lifecycle.rs
  • peri-resources/src/sessions/resources_test.rs
  • peri-resources/src/sessions/sqlite_inherited_context_test.rs
  • peri-resources/src/sessions/sqlite_store.rs
  • peri-resources/src/sessions/sqlite_store/compaction.rs
  • peri-resources/src/sessions/sqlite_store/connection.rs
  • peri-resources/src/sessions/sqlite_store/context.rs
  • peri-resources/src/sessions/sqlite_store/database.rs
  • peri-resources/src/sessions/sqlite_store/execution.rs
  • peri-resources/src/sessions/sqlite_store/failure.rs
  • peri-resources/src/sessions/sqlite_store/legacy_test.rs
  • peri-resources/src/sessions/sqlite_store/local.rs
  • peri-resources/src/sessions/sqlite_store/row_mapping.rs
  • peri-resources/src/sessions/sqlite_store/schema.rs
  • peri-resources/src/sessions/sqlite_store/schema_test.rs
  • peri-resources/src/sessions/sqlite_store/schema_v10_test.rs
  • peri-resources/src/sessions/sqlite_store/schema_v7_test.rs
  • peri-resources/src/sessions/sqlite_store/session_data.rs
  • peri-resources/src/sessions/sqlite_store/session_data_test.rs
  • peri-resources/src/sessions/sqlite_store/session_rows.rs
  • peri-resources/src/sessions/sqlite_store/thread_child_delete_test.rs
  • peri-resources/src/sessions/sqlite_store/workspace.rs
  • peri-resources/src/sessions/sqlite_store/workspace_test.rs
  • peri-resources/src/sessions/sqlite_store_test.rs
  • peri-resources/tests/session_resources_contract.rs
  • peri-tui/locales/en/main.ftl
  • peri-tui/locales/zh-CN/main.ftl
  • peri-tui/src/acp_client/client/recovery_test.rs
  • peri-tui/src/acp_client/client/session.rs
  • peri-tui/src/app/mod.rs
  • peri-tui/src/app/service_registry.rs
  • peri-tui/src/cli_integration_test.rs
  • peri-tui/src/cli_meta.rs
  • peri-tui/src/cli_meta_test.rs
  • peri-tui/src/cli_print.rs
  • peri-tui/src/kit/acp_bridge.rs
  • peri-tui/src/kit/acp_bridge_test.rs
  • peri-tui/src/kit/acp_events/agent.rs
  • peri-tui/src/kit/acp_events/fold.rs
  • peri-tui/src/kit/acp_events/mod.rs
  • peri-tui/src/kit/acp_events/render.rs
  • peri-tui/src/kit/acp_events/streaming.rs
  • peri-tui/src/kit/acp_events/subagent.rs
  • peri-tui/src/kit/acp_events/system.rs
  • peri-tui/src/kit/acp_events/tool.rs
  • peri-tui/src/kit/acp_events/turn.rs
  • peri-tui/src/kit/acp_events_test.rs
  • peri-tui/src/kit/acp_events_test/bg_task_live_test.rs
  • peri-tui/src/kit/acp_events_test/command_feedback_test.rs
  • peri-tui/src/kit/acp_events_test/session_events_test.rs
  • peri-tui/src/kit/acp_events_test/streaming_test.rs
  • peri-tui/src/kit/acp_events_test/subagent_loading_test.rs
  • peri-tui/src/kit/acp_events_test/todo_skill_test.rs
  • peri-tui/src/kit/acp_events_test/turn_archive_test.rs
  • peri-tui/src/kit/acp_events_test/turn_interrupted_test.rs
  • peri-tui/src/kit/acp_types/current_turn.rs
  • peri-tui/src/kit/acp_types/current_turn/projection.rs
  • peri-tui/src/kit/atoms.rs
  • peri-tui/src/kit/entry.rs
  • peri-tui/src/kit/message_area/mod.rs
  • peri-tui/src/kit/message_area/scroll/auto_follow.rs
  • peri-tui/src/kit/popup_overlay.rs
  • peri-tui/src/kit/popups/confirm_popup.rs
  • peri-tui/src/kit/popups/risk_choice_test.rs
  • peri-tui/src/kit/publication_test.rs
  • peri-tui/src/kit/tui_render_unit/tool_card.rs
  • peri-tui/src/launch.rs
  • peri-tui/src/launch_test.rs
  • peri-tui/src/main.rs
  • peri-tui/src/main_test.rs
  • peri-tui/src/thread/mod.rs
  • peri-tui/tests/meta_session_cli.rs
  • peri-tui/tests/print_exit.rs
  • scripts/check-file-size.sh
  • scripts/import-exemptions.conf
  • spec/issues/2026-09-25-mcp-adaptation-v4-part-1-acceptance.md
  • spec/issues/2026-09-25-mcp-adaptation-v4-part-1-plan.md
  • spec/issues/2026-09-25-mcp-adaptation-v4-part-1-sub-plan-a-config.md
  • spec/issues/2026-09-25-mcp-adaptation-v4-part-1-sub-plan-b-readiness.md
  • spec/issues/2026-09-25-mcp-adaptation-v4-part-1-sub-plan-c-injection.md
  • spec/issues/2026-09-25-mcp-adaptation-v4-part-1-sub-plan-d-verification.md
  • spec/issues/2026-09-26-session-store-plan.md
  • spec/issues/2026-09-26-session-store-remote-backend.md
  • spec/issues/2026-09-26-session-store-sub-plan-a-contracts.md
  • spec/issues/2026-09-26-session-store-sub-plan-b-local.md
  • spec/issues/2026-09-26-session-store-sub-plan-c-turso.md
  • spec/issues/2026-09-26-session-store-sub-plan-d-configuration.md
  • spec/issues/2026-09-26-session-store-sub-plan-e-consumers.md
  • spec/issues/2026-09-26-session-store-sub-plan-f-verification.md
  • spec/issues/2026-09-27-p0-tui-streaming-view-rebuild-cpu.md
  • spec/issues/2026-09-27-v4-cloud-architecture-audit.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@KonghaYao
KonghaYao force-pushed the feat/v4-mcp-and-session-store branch from 6dc47f0 to 5b479f5 Compare September 27, 2026 13:21
KonghaYao added a commit that referenced this pull request Sep 27, 2026
现象:PR #173 Windows CI 中以下两例稳定失败(平台语义,非回归):
- sessions::remote::session_shape_tests::binding_cwd_must_be_relative_and_textual
- sessions::sqlite_store::workspace::tests::test_worktree_binding_cwd_text_matches_registration_without_trailing_separator

定位:
1) 用例用 `/etc` 当作「绝对路径」反例。Windows 上带根无盘符的路径
   `Path::new("/etc").is_absolute()` 为 false(缺 Prefix 分量),生产侧
   `session_codec::decode_binding` 与写入准入按契约不会拒绝它,`expect_err`
   就把「按契约未拒绝」误报成契约失败。反例应取该平台真正绝对的路径。
2) 用例断言解析出的执行目录文本 `ends_with("/sub")`。Windows 的路径文本以
   `\` 为分隔符,同一断言必然失败。用例意图是「不带尾部分隔符」
   (`root.join("")` 与解析结果的差异),分隔符随平台。

修复:两处夹具按平台表达同一意图,被测契约不变。

Co-Authored-By: deepseek-v4-flash <deepseek-ai@claude-code-best.win>
KonghaYao and others added 4 commits September 27, 2026 23:45
Introduce a configurable session storage facade with deployment-owned shutdown, local migration and remote Turso/libSQL adapters. Unify remote tables and serialization with the local canonical shape, preserving read-only fallback and explicit unsupported operations. Keep the approved boundaries, migration notes and code index alongside the implementation.

Co-Authored-By: deepseek-v4-flash <deepseek-ai@claude-code-best.win>
Co-Authored-By: gpt-6-astra <openai@claude-code-best.win>
Preserve canonical history through manual and automatic compaction, and keep cancellation and terminal events consistent across the real ACP lifecycle. Include regression coverage and the completed audit documentation.
Honor isolated home paths across plugin and skill discovery, handle platform-specific path and locking semantics, and separate process startup from RPC timing assertions. Use real temporary workspaces in LSP tests and scope unsupported Unix fixtures explicitly. Complete prediction cancellation during host shutdown, serve prediction requests in print fixtures, retain Windows bootstrap variables, and preserve timeout diagnostics while reaping child processes.

Co-Authored-By: deepseek-v4-flash <deepseek-ai@claude-code-best.win>
@KonghaYao
KonghaYao force-pushed the feat/v4-mcp-and-session-store branch from 26d0f44 to 4d23b72 Compare September 27, 2026 15:45
@KonghaYao
KonghaYao merged commit 16683af into main Sep 27, 2026
4 checks passed
@KonghaYao
KonghaYao deleted the feat/v4-mcp-and-session-store branch September 27, 2026 16:17
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