Repository navigation
fix(mcp): name the unfinished-run tick fuse as loop_fuse - #21
Merged
Merged
Conversation
Standing instructions and the fuse redirect_reason now match the #20 envelope, so a host can read loop_fuse without treating the bare code as a next_action or looking for it on error. Co-authored-by: Steper Lin <linker.lin@live.com>
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.
Summary
未完成 run 的 tick 保险丝与连上时的常驻说明对齐到 #20 的信封:码在
loop_fuse=pending_redirect_loop,保险丝的redirect_reason用同一个码。裸pending_redirect_loop不再被写成next_action的并列值,error字段仍然不出现。The unfinished-run tick fuse and the connect-time instructions now match the #20 envelope. The code is
loop_fuse=pending_redirect_loop, and the fuseredirect_reasonuses that same code. A barepending_redirect_loopis no longer written as a peer ofnext_action, anderrorstays absent.What changed
standing_instructions()把or pending_redirect_loop改成or loop_fuse=pending_redirect_loop。不写error=pending_redirect_loop,也不把裸码当成next_action。全文 1195 字,仍小于 1200。closed)在无软缺口的早返回和有软缺口的返回上都写redirect_reason=pending_redirect_loop。dispatch_reason仍是pending_solidify。loop_fuse、ok=false、error缺席、session_not_failed=true、preserve 三元组、tick_again=false不动。有软缺口时仍不写gate_soft_continue。redirect_reason=pending_solidify,没有loop_fuse,ok=true。next_action两次都是swarm_solidify。swarm_tick参数说明、README(英/中)、quickstart、AGENTS、DEBUG #68 写同一口径。DEBUG #61 的tools/list缓存没有做假修复。skip_validation。How to test
uv run pytest tests/test_mcp_host_usability_pending_smoke.py tests/test_mcp_host_usability_p0.py tests/test_mcp_host_usability_p1.py tests/test_mcp_host_usability_p2.py tests/test_mcp_host_usability_polish.py tests/test_swarm.py tests/test_mcp_server.py tests/test_mcp_protocol.py tests/test_open_box_setup_doctor.py tests/e2e/test_swarm_full_e2e.py tests/test_usability_external_state_e2e.py tests/test_swarm_instrument_soft_copy.py tests/test_swarm_beginner_guidance.py -m "not slow and not llm"uv run ruff check src/evolver/swarm.py src/evolver/mcp_server.py tests/test_mcp_host_usability_pending_smoke.py tests/test_mcp_server.pyuv run ruff format --check同上四个文件uv run mypy src/evolver/swarm.py src/evolver/mcp_server.py常驻说明含
loop_fuse=pending_redirect_loop,不含裸or pending_redirect_loop、error=pending_redirect_loop、next_action=pending_redirect_loop。保险丝:loop_fuse=pending_redirect_loop、redirect_reason=pending_redirect_loop、无error、ok=false、session_not_failed=true、preserve 三元组仍在;软缺口省略gate_soft_continue。第一次重定向:redirect_reason=pending_solidify,没有loop_fuse。boot / status 仍是gate_soft_continue=true,没有session_not_failed。只查error == pending_redirect_loop的宿主模型会错过保险丝;查loop_fuse或保险丝redirect_reason的模型会去固化。Risk
Low — 公开 MCP 返回体只在保险丝上把
redirect_reason从pending_solidify改成pending_redirect_loop。dispatch_reason、ok、error缺席、next_action、session_not_failed与 preserve 三元组没变。常驻说明换了一句,长度从 1196 降到 1195。固化门、Parent baseline、val 密封都没有动。仍在的宿主摩擦
gate_soft_continue当成「继续 tick」(只在严格 false 时才停),并且不看tick_again/next_action/ok的宿主,仍可能再 tick。保险丝上ok=false仍能停住只看ok的宿主。ok=false本身当成整段会话失败、且不读session_not_failed与loop_fuse的宿主,仍会在第二次 tick 上停掉会话。ok=false留着,是因为只看ok的宿主靠它停止空转。tools/list缓存滞后(DEBUG #61)没有做假修复。安全信号在返回体上。Harness/evaluator governance
Upstream governance surface: MCP swarm host contract (
standing_instructions, unfinished-run tick fuseredirect_reason/loop_fuse, instrument text, and tool schema). Solidify gates, Parent baseline, and val seals are unchanged.Downstream EvoX impact: N/A -- not a harness/evaluator governance change
Rollout-local scope: N/A -- not a harness/evaluator governance change
Promotion boundary: N/A -- not a harness/evaluator governance change
Evaluator mismatch sets: N/A -- not a harness/evaluator governance change
Non-regression evidence: pending-smoke host models plus the 190-test host-usability / swarm / MCP / e2e suite (
not slow and not llm)Fix-severity review: low
Owner approval: N/A -- not a harness/evaluator governance change
Security boundary: host-facing MCP envelope and connect-time instructions only; no new data, tool, or secret path
Rollback: revert this commit
Live promotion: no
Autonomous evaluator self-editing: no
Self-check