docs(claude): update build state section to v0.4.0 reality

The "Current build state" section described a scaffolded, intentionally
RED repo (ErrNotImplemented, go 1.23, unverified confirm items). All
stale: build is v0.4.0 green, go 1.26.1 (go.mod), Stage 1 multi-user
with RLS shipped (ADR-012, migrations 001-006). Rewrote to describe the
actual adapters, cmd subcommands (incl. serve), and how to build/run.
Replaced the "confirm" list with the resolved homelab facts (LiteLLM
koala:30401, model-as-config) now pinned in homelab-integration.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-03 22:14:42 +02:00
co-authored by Claude Opus 4.8
parent fb425cbf9a
commit 8415a97d15
+25 -15
View File
@@ -79,23 +79,33 @@ Skills live in the canonical library `mathias/skills` and are wired into this re
## Current build state (start here for the first task) ## Current build state (start here for the first task)
The repo is **scaffolded and intentionally RED**: The repo is **green and shipping** — last tag `v0.4.0`. `task check` passes (fmt, vet, lint,
`go test -p 1 ./...`). Go is `1.26.1` (see `go.mod`).
- Clean Architecture skeleton exists: `internal/domain` (entities), `internal/ports` - Clean Architecture core is implemented: `internal/domain` (entities), `internal/ports`
(interfaces), `internal/usecase` (engine), `cmd/tapir` (entrypoint stub), (interfaces), `internal/usecase.Engine.ProcessNewVideo` (resolve transcript → summarize →
`internal/adapters` (empty — concrete adapters go here). deliver to sinks | skip on no-transcript). The acceptance tests in `test/acceptance/` are
- `usecase.Engine.ProcessNewVideo` returns `ErrNotImplemented`. green against it.
- `test/acceptance/summarize_new_video_test.go` translates the first two Gherkin scenarios and - Adapters present under `internal/adapters/`: `youtube` (captions-first `VideoSource`,
**fails** against the stub. `task check` is therefore red on `test`. timedtext/InnerTube acquisition per ADR-010), `summarizer` + `llm` (the copied AI router,
- **First build task:** implement `ProcessNewVideo` (resolve transcript -> summarize -> deliver to Primary→Fallback per ADR-004), `store` (Postgres, golang-migrate migrations 001006),
sinks | skip on no-transcript) to make the acceptance tests green, following the `.feature` `secrets` (file-backed `SecretStore`). The brain HTTP sink (ADR-005) is the remaining
files. Then add the AI-router `Summarizer` (copy `llm` per ADR-004), the YouTube `VideoSource` optional sink.
adapter (captions-first), and the store + brain sinks. - Stage 1 is open (ADR-012): multi-user with **DB-enforced** isolation — Postgres RLS `FORCE`d
on all user-owned tables (migration 003), two-user isolation test in
`internal/adapters/store/rls_test.go`. Registration gate, per-user YouTube web connect, and
account management (disconnect / delete, ADR-013) all shipped.
- `cmd/tapir` subcommands: `list`, `show`, `auth` (interactive host-side OAuth), `run` (batch
watch→summarize), `serve` (the HTMX+Templ web reader/writer under `internal/web`, a new
transport over the unchanged engine/ports — ADR-003). `tapir env` prints config.
- **Build/run:** `task check` is the gate; `task build` produces the binary. Local dev uses
`StubAuth` (allow-all) and a `TAPIR_DB_DSN` Postgres; the deployed service uses Dex OIDC.
**Unverified setup items** (see `docs/homelab-integration.md`, marked `confirm`): the Go version **Setup facts** (resolved — see `docs/homelab-integration.md` for the live values): LiteLLM is
in `go.mod` (1.23 — match the koala runner; estate elsewhere uses 1.26.1), the brain-mcp URL, the off-cluster at `koala:30401/v1/` with `LITELLM_MASTER_KEY` from 1Password; the summarization
exact ESO secret-ref naming, and the summarization model alias. Resolve against the live cluster model is config (`TAPIR_SUMMARIZER_MODEL`, default `koala/phi4-mini`), never hardcoded. The
before depending on them, and pin answers back into `docs/homelab-integration.md`. brain-mcp base URL and ESO ref scheme are pinned in that doc; check it before wiring rather than
re-deriving.
## Provenance (where this design came from) ## Provenance (where this design came from)