Close the gap where docs/use-cases/*.feature claimed to be the behavior spec but nothing executed them — so scenarios drifted (the stale "auto summarizes every new video" and "manual is the default" were proof). Decision (per issue #5 BDD-runner fork): no godog — keep .feature as design records, add a cheap name-coverage gate instead. TestScenarioCoverage parses every scenario and asserts each non-@pending one maps to an existing Go test in the scenarioCoverage manifest; it flags unmapped scenarios, missing/renamed tests, and stale entries. It checks the link, not that the test exercises the scenario (the deliberate trade for skipping godog). Also: - Fix the stale ADR-018 drift: "Manual is the default" -> auto is the default for new users; added an explicit default scenario + a plain manual scenario. - Tag 4 documented-but-unbuilt/untested scenarios @pending with reasons (Vimeo connect, BYO config flow, logout->welcome, re-register-after-delete) so they are tracked without a false coverage claim. - CLAUDE.md BDD section now describes the real setup (design records + the gate + @pending convention) instead of claiming an executable spec. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
48 lines
2.2 KiB
Gherkin
48 lines
2.2 KiB
Gherkin
Feature: Choose how new videos get summarized
|
|
As a user who wants control over compute and noise
|
|
I want to pick whether new videos are summarized automatically or on demand
|
|
So that I only spend summarization on the videos I actually care about
|
|
|
|
Background:
|
|
Given I am a registered user with a connected video account
|
|
|
|
Scenario: Auto mode summarizes recent new videos automatically
|
|
Given my summarization mode is "auto"
|
|
When a subscribed channel posts a new video with captions within the recency window
|
|
Then Tapir summarizes it without my asking
|
|
And the summary appears in my list
|
|
|
|
Scenario: Auto mode lists older videos without summarizing them
|
|
Given my summarization mode is "auto"
|
|
When discovery finds a video published before the recency window
|
|
Then the video appears in my list with no summary
|
|
And it is not summarized automatically
|
|
And I can still summarize it on demand with "Summarize"
|
|
|
|
Scenario: Automatic is the default for a new user
|
|
Given I have just registered
|
|
Then my summarization mode is "auto"
|
|
|
|
Scenario: Manual mode leaves new videos unsummarized
|
|
Given my summarization mode is "manual"
|
|
When a subscribed channel posts a new video with captions
|
|
Then the video appears in my list with no summary
|
|
And nothing is summarized until I request it
|
|
|
|
Scenario: Requesting a summary in manual mode queues it for the next run
|
|
Given my summarization mode is "manual"
|
|
And a new video is in my list with no summary
|
|
When I click "Summarize" on that video
|
|
Then the video is marked as requested
|
|
And the next run summarizes it
|
|
And the request flag is cleared after it is processed
|
|
|
|
# auto_summarize is a per-user setting and summarize_requested is a per-video queue
|
|
# flag (migration 006). The web button sets the flag; `tapir run` processes both the
|
|
# auto videos and the manually queued ones, then clears the flag.
|
|
#
|
|
# Recency bound (ADR-020): in auto mode the scheduler only summarizes videos published
|
|
# within TAPIR_AUTO_SUMMARIZE_WINDOW (default ~7d); older videos are discovered and
|
|
# listed but wait for an explicit "Summarize" — so a back-catalogue does not re-drive
|
|
# the per-IP caption gate (ADR-014) every cycle. A manual request bypasses the bound.
|