docs(bdd): scenario for transcript reuse — re-analysis never re-fetches
Capture the ADR-021 promise as a mapped BDD scenario: re-analyzing a stored video reads the stored transcript and does not fetch captions. Since paste-a-URL and the onboarding burst summarize through the same engine chokepoint (resolveTranscript, store-first), this one scenario covers their reuse path too — there is exactly one gated caption entry point (youtube.FetchTranscript → WaitFetchGate) and one engine caller in front of it, so the dedup is structural, not per-feature. Mapped to TestProcessNewVideo_SecondSummarizeDoesNotRefetch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -31,5 +31,16 @@ Feature: Summarize new videos from subscribed channels
|
|||||||
When the watcher sees "Designing for Attention" again
|
When the watcher sees "Designing for Attention" again
|
||||||
Then Tapir does not produce a second summary for it
|
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
|
# Captions-first is the core path (ADR-007). Audio-download + speech-to-text is
|
||||||
# deferred and intentionally has no scenario here yet.
|
# 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.
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ var scenarioCoverage = map[string]string{
|
|||||||
"A subscribed channel posts a video with no usable transcript": "TestVideoWithNoTranscriptIsSkipped",
|
"A subscribed channel posts a video with no usable transcript": "TestVideoWithNoTranscriptIsSkipped",
|
||||||
"A channel I am not subscribed to posts a video": "TestUnsubscribedChannelVideoIsNotProcessed",
|
"A channel I am not subscribed to posts a video": "TestUnsubscribedChannelVideoIsNotProcessed",
|
||||||
"The same video is not summarized twice": "TestAlreadySummarizedVideoIsNotReprocessed",
|
"The same video is not summarized twice": "TestAlreadySummarizedVideoIsNotReprocessed",
|
||||||
|
"Re-analyzing a stored video does not re-fetch its transcript": "TestProcessNewVideo_SecondSummarizeDoesNotRefetch",
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
Reference in New Issue
Block a user