@@ -2243,8 +2243,7 @@ async def test_tool_batch_runner_missing_artifact_nudge_names_next_file_after_se |
| 2243 | 2243 | assert persistent_messages |
| 2244 | 2244 | message = persistent_messages[-1] |
| 2245 | 2245 | assert "Directory setup is complete." in message |
| 2246 | | - assert "Continue with the next pending item: `Develop the main index.html file with proper structure`." in message |
| 2247 | | - assert "Resume by creating `index.html` now." in message |
| 2246 | + assert "Next step: create `index.html`." in message |
| 2248 | 2247 | assert ephemeral_messages == [] |
| 2249 | 2248 | |
| 2250 | 2249 | |
@@ -2712,8 +2711,8 @@ async def test_tool_batch_runner_todowrite_uses_concrete_output_language_for_agg |
| 2712 | 2711 | |
| 2713 | 2712 | assert queued_messages |
| 2714 | 2713 | message = queued_messages[-1] |
| 2715 | | - assert "Continue with the next concrete output: `01-introduction.html`." in message |
| 2716 | | - assert "Resume by creating `01-introduction.html` now." in message |
| 2714 | + assert "Todo tracking is updated." in message |
| 2715 | + assert "Next step: create `01-introduction.html`." in message |
| 2717 | 2716 | assert ( |
| 2718 | 2717 | "Continue with the next pending item: `Create chapter files with content and structure`." |
| 2719 | 2718 | not in message |
@@ -3435,10 +3434,9 @@ async def test_tool_batch_runner_todowrite_with_missing_artifact_requeues_exact_ |
| 3435 | 3434 | |
| 3436 | 3435 | assert persistent_messages |
| 3437 | 3436 | message = persistent_messages[-1] |
| 3438 | | - assert "Todo tracking is updated. A declared output artifact is still missing." in message |
| 3439 | | - assert "Resume by creating `02-installation.html` now." in message |
| 3440 | | - assert "refresh `TodoWrite`" in message |
| 3441 | | - assert "Do not spend the next turn on TodoWrite alone" in message |
| 3437 | + assert "Todo tracking is updated. Next step: create `02-installation.html`." in message |
| 3438 | + assert "Prefer one `write(file_path=..., content=...)` call" in message |
| 3439 | + assert "Make your next response the concrete mutation tool call itself." in message |
| 3442 | 3440 | assert ephemeral_messages == [] |
| 3443 | 3441 | |
| 3444 | 3442 | |
@@ -3744,12 +3742,9 @@ async def test_tool_batch_runner_todowrite_with_existing_output_roots_requeues_n |
| 3744 | 3742 | |
| 3745 | 3743 | assert queued_messages |
| 3746 | 3744 | message = queued_messages[-1] |
| 3747 | | - assert "Todo tracking is updated. A declared output artifact is still missing." in message |
| 3748 | | - assert "Continue with the next pending item: `Write the introduction chapter`." in message |
| 3749 | | - assert "Resume by creating `01-introduction.html` now." in message |
| 3750 | | - assert "Prefer one `write` call for `" in message |
| 3751 | | - assert "01-introduction.html` instead of more rereads." in message |
| 3752 | | - assert "Do not spend the next turn on TodoWrite alone" in message |
| 3745 | + assert "Todo tracking is updated. Next step: create `01-introduction.html`." in message |
| 3746 | + assert "Prefer one `write(file_path=..., content=...)` call" in message |
| 3747 | + assert "Make your next response the concrete mutation tool call itself." in message |
| 3753 | 3748 | |
| 3754 | 3749 | |
| 3755 | 3750 | @pytest.mark.asyncio |
@@ -3885,9 +3880,8 @@ async def test_tool_batch_runner_todowrite_prefers_pending_index_over_empty_outp |
| 3885 | 3880 | |
| 3886 | 3881 | assert queued_messages |
| 3887 | 3882 | message = queued_messages[-1] |
| 3888 | | - assert "Continue with the next pending item: `Create a new index.html for the nginx guide`." in message |
| 3889 | | - assert "Resume by creating `index.html` now." in message |
| 3890 | | - assert f"Prefer one `write` call for `{index_path.resolve(strict=False)}`" in message |
| 3883 | + assert "Todo tracking is updated. Next step: create `index.html`." in message |
| 3884 | + assert f"Prefer one `write(file_path=..., content=...)` call for `{index_path.resolve(strict=False)}`" in message |
| 3891 | 3885 | assert "01-introduction.html" not in message |
| 3892 | 3886 | |
| 3893 | 3887 | |
@@ -4011,12 +4005,9 @@ async def test_tool_batch_runner_todowrite_with_declared_child_targets_names_nex |
| 4011 | 4005 | |
| 4012 | 4006 | assert queued_messages |
| 4013 | 4007 | message = queued_messages[-1] |
| 4014 | | - assert "Todo tracking is updated. A declared output artifact is still missing." in message |
| 4015 | | - assert "Continue with the next pending item: `Write the introduction chapter`." in message |
| 4016 | | - assert "Resume by creating `introduction.html` now." in message |
| 4017 | | - assert "Prefer one `write` call for `" in message |
| 4018 | | - assert "introduction.html` instead of more rereads." in message |
| 4019 | | - assert "Do not spend the next turn on TodoWrite alone" in message |
| 4008 | + assert "Todo tracking is updated. Next step: create `introduction.html`." in message |
| 4009 | + assert "Prefer one `write(file_path=..., content=...)` call" in message |
| 4010 | + assert "Make your next response the concrete mutation tool call itself." in message |
| 4020 | 4011 | |
| 4021 | 4012 | |
| 4022 | 4013 | @pytest.mark.asyncio |
@@ -4141,14 +4132,8 @@ async def test_tool_batch_runner_todowrite_names_concrete_pending_file_after_art |
| 4141 | 4132 | |
| 4142 | 4133 | assert queued_messages |
| 4143 | 4134 | message = queued_messages[-1] |
| 4144 | | - assert "Todo tracking is updated. A declared output artifact is still missing." in message |
| 4145 | | - assert "Continue with the next pending item: `Creating Chapter 2: Installation and Setup`." in message |
| 4146 | | - assert "Resume by creating `02-installation.html` now." in message |
| 4147 | | - assert ( |
| 4148 | | - f"Prefer one `write` call for `{(chapters / '02-installation.html').resolve(strict=False)}` " |
| 4149 | | - "instead of more rereads." |
| 4150 | | - in message |
| 4151 | | - ) |
| 4135 | + assert "Todo tracking is updated. Next step: create `02-installation.html`." in message |
| 4136 | + assert "Prefer one `write(file_path=..., content=...)` call" in message |
| 4152 | 4137 | assert "Make your next response the concrete mutation tool call itself" in message |
| 4153 | 4138 | |
| 4154 | 4139 | |
@@ -4278,15 +4263,8 @@ async def test_tool_batch_runner_todowrite_uses_observed_sibling_pattern_for_nex |
| 4278 | 4263 | |
| 4279 | 4264 | assert queued_messages |
| 4280 | 4265 | message = queued_messages[-1] |
| 4281 | | - assert "Todo tracking is updated. A declared output artifact is still missing." in message |
| 4282 | | - assert "Continue with the next pending item: `Write the introduction chapter`." in message |
| 4283 | | - assert "Resume by creating `01-introduction.html` now." in message |
| 4284 | | - assert ( |
| 4285 | | - "It mirrors the observed filename pattern from another `chapters/` directory " |
| 4286 | | - "you already inspected." |
| 4287 | | - in message |
| 4288 | | - ) |
| 4289 | | - assert "01-introduction.html` instead of more rereads." in message |
| 4266 | + assert "Todo tracking is updated. Next step: create `01-introduction.html`." in message |
| 4267 | + assert "Prefer one `write(file_path=..., content=...)` call" in message |
| 4290 | 4268 | |
| 4291 | 4269 | |
| 4292 | 4270 | @pytest.mark.asyncio |