Course Pass 1: The Tracer
A thin system through every layer, before any layer is deep. You learn Python, Rust, HTTP and SSE, Go, and containers as you need them. You build a Python matmul and a byte-level bigram fitted by counting, a Rust engine that streams completions from your checkpoint, a Go gateway that checks a key and streams without buffering, images and Helm charts on kind, one trace across gateway and engine in Jaeger, your first incident drill with its runbook, and your first architecture decision record. C remains optional depth later in the course.
Part of: the course. About 5 weeks at 10 to 12 hours a week. Needs: Pass 0 and its gate MS-P0.
Gate: MS-P1, every layer yours and running end to end.
The stages, their chapters, and what “done” means for each are in path.tsv. The engine serves the checkpoint your CLI wrote.
practice/bin/ol learn course-p01-tracer # stages and progresspractice/bin/ol learn course-p01-tracer next # read the next unfinished stagePass 1 needs a local kind cluster for stages 8 to 11 (ol doctor --pass 1). Everything before stage 8 runs as local processes.
Stages
Section titled “Stages”Generated from path.tsv. Track progress locally with practice/bin/ol learn.
| Stage | Read | Done when |
|---|---|---|
| 1 | Matmul in Python Vectors, matrices, row-major layout, and matmul in Python | Your Python matmul matches numpy on the golden cases. |
| 2 | Byte bigram Byte bigram: counts, logits, safetensors v0 | Your bigram reaches the count-MLE NLL and writes a safetensors file. |
| 3 | Rust Rust: ownership, traits, Result, cargo workspaces, std TCP | Your Rust echo server handles two clients. |
| 4 | HTTP and SSE HTTP/1.1, JSON, and Server-Sent Events from the wire up | You parse an HTTP request and emit an SSE stream by hand. |
| 5 | Your first endpoint Your first endpoint: a std-only Rust HTTP/1.1 + SSE server | Your Rust server streams SSE completions from your checkpoint and exports its span. |
| 6 | Go Go: packages, interfaces, goroutines, channels, context, net/http, testing | Your streaming proxy honors a deadline. |
| 7 | Your gateway Tracer gateway: static API-key check, SSE pass-through without buffering, traceparent and X-Request-Id propagation | Your Go gateway rejects bad keys and streams without buffering. |
| 8 | Containers and Kubernetes Containers and Kubernetes: images, layers, Pods, Deployments, Services, Helm, kind | Your image runs on kind behind a Helm chart and a NodePort. |
| 9 | Images, kind, and Helm Tracer deploy: engine and gateway images, kind cluster, two Helm charts, Jaeger all-in-one | helm install brings both up on kind and curl through the gateway works. |
| 10 | One trace One trace: gateway to engine in Jaeger (tracer) | One request shows as one trace across gateway and engine in Jaeger. |
| 11 | First drill First drill: the engine crashloops | You fixed engine-crashloop and wrote its runbook. |
| 12 | First ADR Architecture decision records | ADR-0001 records why languages meet at process and file boundaries. |
| 13 | Milestone MS-P1: Every Layer Is Yours | Every layer is yours and runs end to end, starting with your CLI training and sampling from a clean shell. |