Add M2a plan: thirteen tasks, tests, fake server and recordings

The tasks build the inference path: emsha-backed SHA-256, inferproxy,
config, a hand-written HTTP and SSE client, request building, delta
assembly, the chat state machine, the thinking cap, the slot gate with
retry, the startup self-test and on-device verification.

Everything the tasks copy in was checked against a private reference
implementation: the gate passes after each task in order, the timing
tests pass repeatedly under CPU load, and the reference passes the
self-test and all four device checks on straylight. Expected results
for the recorded streams were derived by a separate script.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-17 13:34:11 -07:00
co-authored by Claude Fable 5.1
parent a49db39b54
commit 76ccc251cd
56 changed files with 6367 additions and 3 deletions
+2 -1
View File
@@ -55,7 +55,8 @@ Each is one file under 500 lines with one purpose. None of them starts a thread.
| `llama::request` | Builds the chat-completions JSON from typed inputs: messages, tools, slot, sampling. |
| `llama::assemble` | Folds streamed deltas into one assistant message, and keeps the latest per-chunk timings. |
| `llama::chat` | One request from gate to completion: the waits, liveness, the thinking cap. |
| `llama::retry` | `chat_with_retry`, and the slot gate. |
| `llama::gate` | The slot gate: one request in flight per slot, first come first served, bounded queue. |
| `llama::retry` | `chat_with_retry`, what is retryable, and the backoff schedule. |
| `llama::info` | `props`, `slots`, `tokenize`, and the cache-loss function. |
| `selftest` | The three startup checks. `loopd selftest --config <path>` runs them and exits. |