diff --git a/docs/use-cases/summarize_new_video.feature b/docs/use-cases/summarize_new_video.feature index 1249dac..39b5e40 100644 --- a/docs/use-cases/summarize_new_video.feature +++ b/docs/use-cases/summarize_new_video.feature @@ -31,5 +31,16 @@ Feature: Summarize new videos from subscribed channels When the watcher sees "Designing for Attention" again Then Tapir does not produce a second summary for it + Scenario: Re-analyzing a stored video does not re-fetch its transcript + Given a transcript for "Designing for Attention" is already stored + When the video is summarized again + Then Tapir reads the stored transcript + And Tapir does not fetch captions from YouTube + # Captions-first is the core path (ADR-007). Audio-download + speech-to-text is # deferred and intentionally has no scenario here yet. + # + # Transcript persistence (ADR-021): the stored transcript is shared, keyed by + # (provider, provider_video_id) and read before any caption fetch, so the + # re-analysis scenario above also covers paste-a-URL and the onboarding burst — + # both summarize through the same engine chokepoint. diff --git a/test/acceptance/scenario_coverage_test.go b/test/acceptance/scenario_coverage_test.go index 912ac10..a4a4708 100644 --- a/test/acceptance/scenario_coverage_test.go +++ b/test/acceptance/scenario_coverage_test.go @@ -67,6 +67,7 @@ var scenarioCoverage = map[string]string{ "A subscribed channel posts a video with no usable transcript": "TestVideoWithNoTranscriptIsSkipped", "A channel I am not subscribed to posts a video": "TestUnsubscribedChannelVideoIsNotProcessed", "The same video is not summarized twice": "TestAlreadySummarizedVideoIsNotReprocessed", + "Re-analyzing a stored video does not re-fetch its transcript": "TestProcessNewVideo_SecondSummarizeDoesNotRefetch", } var (