{ "tool": "probe_stdio_lifecycle.py", "started_at": "2026-10-30T02:29:16.328645+00:00", "python": "3.12.3", "platform_note": "Linux/CPython; pipe buffer 64 KiB default", "catalog_sha256_source": "fixtures/", "versions": { "mcp": "2.2.0", "anyio": "4.15.1", "pydantic": "2.14.2" }, "L1_control_drain": { "scenario": "L1", "arm": "drain_stdout_control", "blob_bytes": 262144, "started_at": "2026-10-30T02:29:16.331461+00:00", "alive_before_eof": "S", "seconds_waited_after_eof": 10.0, "state_at_wait_end": "Z", "exited_on_eof_within_10s": true, "exit_status": 0, "signal_needed": null, "stdout_bytes_read": 262190, "stderr_tail": [ "FIXTURE_READY mode=big blob_bytes=262144", "FIXTURE_BIG_QUEUED", "FIXTURE_STDIN_EOF" ], "finished_at": "2026-10-30T02:29:18.536050+00:00" }, "L1_unread": { "scenario": "L1", "arm": "leave_stdout_unread", "blob_bytes": 262144, "started_at": "2026-10-30T02:29:18.536842+00:00", "alive_before_eof": "S", "seconds_waited_after_eof": 10.0, "state_at_wait_end": "S", "exited_on_eof_within_10s": false, "state_after_sigterm": "Z", "signal_needed": "SIGTERM", "exit_status": -15, "stdout_bytes_read": 0, "stderr_tail": [ "FIXTURE_READY mode=big blob_bytes=262144", "FIXTURE_BIG_QUEUED", "FIXTURE_STDIN_EOF" ], "finished_at": "2026-10-30T02:29:33.555990+00:00" }, "L2": { "scenario": "L2", "started_at": "2026-10-30T02:29:33.556835+00:00", "stdout_bytes": 0, "stdout_nonempty_lines": [], "stderr": [ "FIXTURE_READY mode=surrogate repr='bad-\\udcff-name'", "FIXTURE_BAD_QUEUED", "FIXTURE_TOP_LEVEL_EXIT ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)", "+ Exception Group Traceback (most recent call last):", "| File \"/home/ubuntu/blog-automation/workspaces/348a8b3b-2c35-4497-81c7-b0d56d61ba52/tree/research/evidence/mcp-stdio-transport-lifecycle-2026/probe-r1/fixtures/fixture_stdio_writer.py\", line 68, in ", "| anyio.run(main)", "| File \"/tmp/rockb-7b6bfda2-zbx_5rkh/venv/lib/python3.12/site-packages/anyio/_core/_eventloop.py\", line 83, in run", "| return async_backend.run(func, args, {}, backend_options)", "| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^", "| File \"/tmp/rockb-7b6bfda2-zbx_5rkh/venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py\", line 2548, in run", "| return runner.run(wrapper())", "| ^^^^^^^^^^^^^^^^^^^^^", "| File \"/usr/lib/python3.12/asyncio/runners.py\", line 118, in run", "| return self._loop.run_until_complete(task)", "| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^", "| File \"/usr/lib/python3.12/asyncio/base_events.py\", line 687, in run_until_complete", "| return future.result()", "| ^^^^^^^^^^^^^^^", "| File \"/tmp/rockb-7b6bfda2-zbx_5rkh/venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py\", line 2531, in wrapper", "| return await func(*args)", "| ^^^^^^^^^^^^^^^^^", "| File \"/home/ubuntu/blog-automation/workspaces/348a8b3b-2c35-4497-81c7-b0d56d61ba52/tree/research/evidence/mcp-stdio-transport-lifecycle-2026/probe-r1/fixtures/fixture_stdio_writer.py\", line 34, in main", "| async with stdio_server() as (read_stream, write_stream):", "| File \"/usr/lib/python3.12/contextlib.py\", line 231, in __aexit__", "| await self.gen.athrow(value)", "| File \"/tmp/rockb-7b6bfda2-zbx_5rkh/venv/lib/python3.12/site-packages/mcp/server/stdio.py\", line 209, in stdio_server", "| async with anyio.create_task_group() as tg:", "| File \"/tmp/rockb-7b6bfda2-zbx_5rkh/venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py\", line 847, in __aexit__", "| raise BaseExceptionGroup(", "| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)", "+-+---------------- 1 ----------------", "| Traceback (most recent call last):", "| File \"/tmp/rockb-7b6bfda2-zbx_5rkh/venv/lib/python3.12/site-packages/anyio/_core/_tasks.py\", line 327, in _run_coro", "| retval = await self._coro", "| ^^^^^^^^^^^^^^^^", "| File \"/tmp/rockb-7b6bfda2-zbx_5rkh/venv/lib/python3.12/site-packages/mcp/server/stdio.py\", line 203, in stdout_writer", "| json = session_message.message.model_dump_json(by_alias=True, exclude_unset=True)", "| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^", "| File \"/tmp/rockb-7b6bfda2-zbx_5rkh/venv/lib/python3.12/site-packages/pydantic/main.py\", line 587, in model_dump_json", "| return self.__pydantic_serializer__.to_json(", "| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^", "| pydantic_core._pydantic_core.PydanticSerializationError: Error serializing to JSON: UnicodeEncodeError: 'utf-8' codec can't encode character '\\udcff' in position 4: surrogates not allowed", "+------------------------------------" ], "serialization_error_class": null, "process_state_after": "S", "process_alive_after": true, "exits_on_stdin_eof": true, "signal_needed": null, "finished_at": "2026-10-30T02:29:41.058971+00:00" }, "L3": { "scenario": "L3", "started_at": "2026-10-30T02:29:56.432394+00:00", "after_first_connect": { "sessions": 1, "tools": [ "echo" ], "children": 1 }, "second_connect": "MCPError: {'echo'} already exist in group tools.", "after_rejected_connect": { "sessions": 1, "tools": [ "echo" ], "children": 2, "children_detail": [ { "pid": 4074800, "state": "S" }, { "pid": 4074805, "state": "S" } ] }, "after_group_close": { "children": 0 }, "finished_at": "2026-10-30T02:29:59.192526+00:00" }, "L4": { "scenario": "L4", "started_at": "2026-10-30T02:29:59.193276+00:00", "first_registration_tools": [ "old" ], "second_registration_tools": [ "new", "old" ], "after_disconnect": { "sessions": 0, "tools": [ "old" ] }, "stale_tools_remaining": [ "old" ], "finished_at": "2026-10-30T02:30:00.439536+00:00" }, "finished_at": "2026-10-30T02:30:00.440646+00:00" }