docs: resolve ADR-014 migration-008 false alarm (cols shipped in 007)
CI / Lint / Test / Vet (push) Successful in 13s
CI / Build & Import (push) Successful in 10s

Reconciliation finding: the v0.6.0 report's "migration 008 videos.rate_limited_at"
was a mislabel. Both transcript_status and rate_limited_at shipped in migration
007; the sequence legitimately skips 008, nothing was lost, and the runner's
column reads are sound. Updated the ADR-014 implementation note to state this
(was flagged as an unresolved discrepancy). The item-2 (shared per-egress-IP rate
gate vs per-video backoff) flag stays open — still unconfirmed.
This commit is contained in:
mathias
2026-06-04 18:54:56 +00:00
parent 561ba79360
commit b4da97e0e2
+11 -10
View File
@@ -402,16 +402,17 @@ the rate gate (the batch path moves into k3s per the deferred CronJob item).
**Implementation note (2026-06-03, v0.6.0 — added during reconciliation).** A v0.6.0 release **Implementation note (2026-06-03, v0.6.0 — added during reconciliation).** A v0.6.0 release
shipped 429 handling: `domain.SourceRateLimited` (429 no longer collapsed to `SourceNone`), shipped 429 handling: `domain.SourceRateLimited` (429 no longer collapsed to `SourceNone`),
youtube adapter maps 429 → `SourceRateLimited`, migration 007 `transcript_status` + (per the youtube adapter maps 429 → `SourceRateLimited`, **migration 007 added `videos.transcript_status`
v0.6.0 report) a `videos.rate_limited_at` column, `TAPIR_FETCH_BACKOFF` config, runner records + `videos.rate_limited_at`** (durable per-video retry state), `TAPIR_FETCH_BACKOFF` config,
rate-limited + skips within the backoff window, and a "⏳ Retrying later" badge. This realises runner records rate-limited + skips within the backoff window, and a "⏳ Retrying later" badge.
decision items 1, 3, and 4 well. **Item 2 (a single shared per-egress-IP rate gate) appears to This realises decision items 1, 3, and 4 well. **Item 2 (a single shared per-egress-IP rate
be realised as per-*video* backoff state, NOT a process-wide IP gate** — multiple videos can gate) appears to be realised as per-*video* backoff state, NOT a process-wide IP gate** —
still each hit the endpoint and collectively trip the per-IP 429. Treat item 2 as **not yet multiple videos can still each hit the endpoint and collectively trip the per-IP 429. Treat item
confirmed done**; verify in `internal/runner`/youtube adapter and, if absent, it remains open. 2 as **not yet confirmed done**; verify in `internal/runner`/youtube adapter and, if absent, it
ALSO: the v0.6.0 report referenced "migration 008 videos.rate_limited_at" but **no migration 008 remains open. (Resolved during reconciliation: the v0.6.0 report's reference to "migration 008
exists on `main`** (tree jumps 007→009). Resolve whether `rate_limited_at` actually shipped (in videos.rate_limited_at" was a **mislabel** — both columns shipped in migration **007**, not a
007? lost? renumbered?) — a documentation/build discrepancy flagged during reconciliation. missing 008. No migration was lost; the sequence legitimately skips 008. `rate_limited_at`
exists and the runner's column reads are sound.)
--- ---