Review M2a: accept with two follow-up tasks; record models and lessons
The branch passes every check, including make verify-device on straylight and repeated timing runs under load. Reading and probing found that inferproxy does not pass an upstream close on to a client that is still sending, and that the chunked body reader delivers a stream only when the caller's buffer fills or the stream ends. Both were also gaps in the tasks and tests, so tasks 14 and 15 carry the fixes with new tests checked against the reference. The Model column is corrected: tasks 04 to 06 and 08 to 13 were Ornith. Lessons gain four implementer tips and five task-writing tips; three rules are promoted to AGENTS.md. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# M2a implementation plan: the inference path
|
||||
|
||||
> **For the implementing model:** do not work from this file. The owner gives you one task file at
|
||||
> a time (`01-…` to `13-…`). This file is the index for the owner and the reviewer.
|
||||
> a time (`01-…` to `15-…`). This file is the index for the owner and the reviewer.
|
||||
|
||||
**Goal:** `loopd` can hold a correct, robust conversation with `llama-server` through a Unix
|
||||
socket: requests built from typed input, streams reassembled exactly, every kind of silence and
|
||||
@@ -28,7 +28,7 @@ fake server replaying responses recorded from straylight.
|
||||
use and newer builds add more, so structs that parse the server's responses must not use
|
||||
`deny_unknown_fields`. Each task says which kind it is dealing with.
|
||||
- Branch `m2a`. One task, one fresh OpenCode session, one commit. Run `cargo fmt --all` before the
|
||||
gate. Review happens once, after task 13.
|
||||
gate. Review happened once, after task 13; tasks 14 and 15 are its follow-ups.
|
||||
|
||||
## Tasks
|
||||
|
||||
@@ -47,6 +47,8 @@ fake server replaying responses recorded from straylight.
|
||||
| 11 | `11-llama-gate-retry.md` | `SlotGate`, `chat_with_retry` | `loopd/tests/retry.rs` |
|
||||
| 12 | `12-selftest.md` | `loopd::selftest`, `loopd selftest --config` | `loopd/tests/selftest.rs` |
|
||||
| 13 | `13-verify-device.md` | `make verify-device` against straylight | `loopd/tests/device.rs` |
|
||||
| 14 | `14-inferproxy-close.md` | Review follow-up: `inferproxy` closes towards the client when the upstream closes | updated `inferproxy/tests/forward.rs` |
|
||||
| 15 | `15-http-streaming.md` | Review follow-up: chunked body data is returned as soon as it is available | updated `loopd/tests/http.rs` |
|
||||
|
||||
`files/` holds everything the tasks copy into place: tests, the fake server
|
||||
(`loopd/tests/support/mod.rs`), recordings (`fixtures/http/*.http`), expected results derived from
|
||||
|
||||
Reference in New Issue
Block a user