M4a tasks 08 and 09: finer skeletons after task 08's session wrote nothing

Task 08's `header` was one todo!() with a dozen branches; Ornith planned it in its head until the
turn ran out (tip T25). `next_message` and `header` are now written as glue over seven small
helpers, and task 09's `poll` over four, each checked to pass when filled from its comments.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-23 20:37:48 -07:00
co-authored by Claude Opus 5.5
parent d56fcf8611
commit 02681069b6
6 changed files with 227 additions and 54 deletions
+14
View File
@@ -65,6 +65,20 @@ checked to compile against its task's tests and fail them.
At the end of task 15: about 762 tests (650 before task 01).
## Changes during the run
- 2026-09-23, task 08: tasks 01 to 07 committed; task 08's session ended with nothing written. It
planned all four `todo!()`s in its head, most of it deliberating how to avoid indexing, and was
cut off (tip T25, again: `Decoder::header` has a dozen branches and was one `todo!()`). The
tree also had `handshake.rs` with its imports in 2021-edition order, which no logged command
explains; it was reverted. The attempt is saved in `.state/runs/M4a/08-first-attempt.diff`.
The design model split the skeleton: `next_message` and `header` are now written as glue, over
seven helpers of a few lines each whose comments give the exact expressions. The same was done
for task 09's `poll` (glue over four helpers) before it could stop the same way. Both new
skeletons were checked in a scratch copy of the branch: they compile and fail their tests, and
filled literally from their comments they pass (7 of 7, 10 of 10 five times), clippy clean, gate
ok. Resume from task 08.
## Running it
```sh