summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-10-08 07:08:33 +0000
committerClaude <noreply@anthropic.com>2026-10-08 07:08:33 +0000
commit7f0601e42b9df979dab2a780ebaf1a19358bf072 (patch)
treeadfe71c69805969323ab63ee5094f33d8225011e
parent979d9c4fd5a6ec2f375cea69bc7ddc9f3d9eebe4 (diff)
Record the approach-2 decision and the furniture toggle
Approach 2 chosen, built in the phase order already proposed -- it is a superset of approach 1, so the ad-detection work still lands first and the library last. Advertising is always skipped; the show own intro, cue and credits obey a single preference defaulting to on, because that is what happens today. The toggle settles a bootstrapping question the design had left open. A furniture clip cannot be promoted until a second fetch occasion has passed, so until then there is nothing to label with. The zero-gap classification fills that gap: served length equal to declared means nothing was inserted, so every break is furniture and position decides which kind; otherwise a break is advertising unless a promoted clip says otherwise. Day one is correct on the 138 zero-gap episodes and identical to current behaviour everywhere else. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
-rw-r--r--docs/superpowers/specs/2026-10-08-furniture-and-cues-design.md47
1 files changed, 47 insertions, 0 deletions
diff --git a/docs/superpowers/specs/2026-10-08-furniture-and-cues-design.md b/docs/superpowers/specs/2026-10-08-furniture-and-cues-design.md
index 2e91362..0451a9b 100644
--- a/docs/superpowers/specs/2026-10-08-furniture-and-cues-design.md
+++ b/docs/superpowers/specs/2026-10-08-furniture-and-cues-design.md
@@ -140,3 +140,50 @@ for. The alternative is to skip only inserted advertising and merely mark the fu
against real shows before it moves a playhead.
3. The cue prior, validated against the length gap.
4. Approach 2's library, if D3 is wanted.
+
+---
+
+## Decisions, 2026-10-08
+
+**Approach 2, built in the phase order above.** Approach 2 is a superset of approach 1, so the
+sequencing recommendation stands: the ad-detection improvements land first and the library last.
+
+**Furniture skipping is a setting; advertising is not.** Advertising is always skipped. The show's
+own intro, break cue and credits are skipped according to a single preference, default on --
+default on because that is what happens today, so defaulting it off would be an unrequested
+behaviour change.
+
+### What this adds to the design
+
+**Breaks carry a kind.** `ad`, `intro`, `cue`, `outro`. The server decides it; the phone stores it
+alongside the range and filters on it at playback.
+
+**The kind is decided by a rule that works before the library has anything in it**, which matters
+because a clip cannot be promoted until a second fetch occasion has passed:
+
+1. If the episode's served length equals its declared length, nothing was inserted, so every
+ break is furniture. Position decides which: opening, closing, or `cue` in between.
+2. Otherwise the episode does carry advertising, so a break is `ad` unless it matches a promoted
+ furniture clip.
+
+So day one gives correct labels for the 138 zero-gap episodes and treats everything else as
+advertising -- exactly today's behaviour, which is the safe default -- and the labels get finer as
+the library fills.
+
+**The cue stays skippable even with furniture skipping off.** A cue sits immediately before an
+advertisement, so hearing it is a useful signal that something was cut. It is furniture, it obeys
+the setting, and nothing special is needed.
+
+### Where each part lives
+
+- Server: `kind` on `store.Break`, decided in `skips.DetectAds` plus the zero-gap rule, carried in
+ the API's break objects.
+- Phone: a `kind` column on `episode_midrolls` (Room schema 13), a boolean in the existing
+ preferences, and a filter in `MidrollSkip` and `PlayheadPolicy`.
+- Readout: the episode screen names each break by kind and shows whether it will be skipped, so
+ the setting's effect is visible rather than inferred.
+
+### Open, deliberately
+
+How the library's clips are chosen for eviction when a show exceeds eight, beyond
+least-recently-seen. Not worth settling before there is a real library to watch fill.