diff --git a/CLAUDE.md b/CLAUDE.md index 6890043..517ce8c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -86,7 +86,7 @@ Skills live in the canonical library `mathias/skills` and are wired into this re ## Current build state (start here for the first task) -The repo is **green and shipping** — last tag `v0.9.0`. `task check` passes (fmt, vet, lint, +The repo is **green and shipping** — last tag `v0.14.0`. `task check` passes (fmt, vet, lint, `go test -p 1 ./...`). Go is `1.26.1` (see `go.mod`). - Clean Architecture core is implemented: `internal/domain` (entities), `internal/ports` @@ -95,13 +95,18 @@ The repo is **green and shipping** — last tag `v0.9.0`. `task check` passes (f green against it. - Adapters present under `internal/adapters/`: `youtube` (captions-first `VideoSource`, timedtext/InnerTube acquisition per ADR-010), `summarizer` + `llm` (the copied AI router, - Primary→Fallback per ADR-004), `store` (Postgres, golang-migrate migrations 001–006), + Primary→Fallback per ADR-004), `store` (Postgres, golang-migrate migrations 001–015), `secrets` (file-backed `SecretStore`). The brain HTTP sink (ADR-005) is the remaining optional sink. - 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. +- Transcript persistence (ADR-021, migration 015): transcripts are a **shared, non-RLS** store + keyed by `(provider, provider_video_id)` — the single exception to the isolation boundary + (`TestTranscriptsTableIsSharedNotRLS`). The engine reads stored transcripts before any caption + fetch (`usecase.resolveTranscript`), so re-analysis — re-summarize, paste-a-URL, onboarding + burst — never re-touches YouTube. Per-user summaries/videos stay RLS-scoped. - `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.