docs: land prior ADR + prompt updates
Commit pre-existing uncommitted working-tree changes that predate the license/public-readiness work — NOT authored in this session, just flushed so they're not lost: ADR-0003/0005/0009/0012 edits, the new ADR-0013 (embeddings-bypass + two-slot residency, already referenced by CLAUDE.md), and the phase-0..3 prompt revisions + prompts/README.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# foreman build prompts
|
||||
|
||||
This directory drives the autonomous Claude Code build of foreman.
|
||||
|
||||
## How to run
|
||||
|
||||
Start with **`phase-0-kickoff.md`** — it is the master driver. Paste it (or the
|
||||
command below) into Claude Code from the repo root. It reads `CLAUDE.md`, the
|
||||
ADRs in `docs/adr/`, and the `go-llm` / `steveternet` sources, then runs phases
|
||||
1 → 6 **autonomously** to a finished, deployable foreman. You do **not** paste the
|
||||
individual phase files — the kickoff reads them as it goes.
|
||||
|
||||
Kickoff command:
|
||||
|
||||
```
|
||||
Read and follow prompts/phase-0-kickoff.md. The per-phase specs it references
|
||||
(prompts/phase-1.md … phase-6.md) are in this same prompts/ directory. This is a
|
||||
fully autonomous run: execute all six phases in order to a finished, working
|
||||
deliverable without pausing between them. Honor docs/adr/ (note the new 0013) and
|
||||
CLAUDE.md as source of truth. For the two cross-repo changes (llm.Foreman() in
|
||||
steve/go-llm and the docker-compose in steve/steveternet), open a branch and PR
|
||||
on each for my review — do not commit to their main. When done, report what each
|
||||
phase built, the PR links, any ADRs you added, and a smoke-test checklist.
|
||||
```
|
||||
|
||||
## What each phase produces
|
||||
|
||||
1. `phase-1` — scaffold, config, SQLite store, health, CI, Dockerfile.
|
||||
2. `phase-2` — Ollama client + model poller + native passthrough + embedding
|
||||
bypass. The Mac is usable as a `go-llm` target after this.
|
||||
3. `phase-3` — durable queue + single worker + drain-by-model. **M0 complete.**
|
||||
4. `phase-4` — async `/jobs` + job IDs + state webhooks + artifacts. The headline
|
||||
queue-and-webhooks capability.
|
||||
5. `phase-5` — Go client package (sync facade) + `llm.Foreman()` in `go-llm`.
|
||||
6. `phase-6` — deploy: steveternet compose + Traefik, `.env.example`, deploy
|
||||
docs, model-pull script.
|
||||
|
||||
## Conventions during the run
|
||||
|
||||
- Each phase must pass the gates before continuing: `go build ./...`,
|
||||
`go vet ./...`, `go test -race -count=1 ./...`, and `go mod tidy` +
|
||||
`git diff --exit-code go.mod go.sum`.
|
||||
- Commits go to foreman's `main` with conventional-commit messages; `progress.md`
|
||||
gets a dated entry each phase.
|
||||
- A decision not covered by `CLAUDE.md` or an ADR → record a new ADR
|
||||
(append-only, next number after 0013) and continue.
|
||||
|
||||
## Cross-repo caveat (phases 5 & 6)
|
||||
|
||||
The `llm.Foreman()` constructor lives in **steve/go-llm** and the deploy compose
|
||||
in **steve/steveternet**. Those changes go on a **branch + PR for review — never
|
||||
their main.**
|
||||
|
||||
## Known caveat (phase 6)
|
||||
|
||||
Phase 6 mirrors the Traefik/compose conventions from sibling services
|
||||
(`kalimdor/orgrimmar/warhol-queue`, `ratchet`, `mort`) read via the gitea MCP.
|
||||
Those reads were intermittently erroring during planning. **If phase 6 can't read
|
||||
them, paste a sibling `docker-compose.yml` (e.g. ratchet's) straight into the
|
||||
session** so it can mirror the network name, entrypoint, certresolver, and
|
||||
router/service labels rather than inventing them.
|
||||
Reference in New Issue
Block a user