Phase status
| Phase | Problem it solved | Status |
|---|---|---|
| 0 · Skeleton | Designing a deployable LLM application from nothing: configuration, safety boundaries, maintainability | Done |
| 1 · Persona | Getting a model to speak consistently in the first person without fine-tuning, while suppressing hallucination and leakage | Done, persona reviewed and approved by me |
| 2 · Backend | A production-grade LLM backend: SSE streaming, cancellation, retries, rate limiting, injection defence, cost control | Done |
| 3 · Frontend | An embeddable chat component with no framework: correct SSE byte-stream consumption, cancel and retry, state recovery, XSS, accessibility | Done |
| 4 · Launch | Shipping safely to a free container platform: secrets out of Git and the image, production CORS, readiness checks, rollback gates | Done, including one real rollback drill |
| 5 · Observability | Knowing whether the system works without storing raw conversations or adding a database | Done |
| 6 · Self-hosted inference | Putting a locally quantised model behind the same call path | Repository work and local verification done; production not switched |
| 7 · Training from scratch | Walking the full chain from training through quantised export to serving | In progress |
A note on those statuses
Phases 6 and 7 do not say “done” because they are not done.
Phase 6 has finished code, adapter layer, and local verification — the full inference path runs against a quantised model on my own machine. But the production GPU host does not exist yet and the live configuration has not been switched. Cutting production over before a host is verified means trading a service that works for one that has not been tested.
Phase 7 currently reaches model initialisation, a GPU compatibility profile, and the download and licence audit of the training corpus. Actual training, evaluation, quantised export, and service integration have not started.
Every phase in this project sits behind an explicit acceptance gate, and nothing moves forward until that gate is met. Writing “nearly there” as “done” is the easiest and least necessary mistake to make on a personal project.