C.W.K.
Stream
Lesson 04 of 05 · published

Explicit Time Beats Resume

~12 min · observed-state, resume, precedence, deep-link

Level 0Reel Novice
0 XP0/39 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Recall timestamps and user-selected chapter jumps override remembered position. Resume never makes a deep link land at the wrong moment."

Two Sources of 'Where Should Playback Start?'

When Ashen Reel opens a file, two different voices want to set the starting position. One is resume: "you were at 22:14 last time, pick up there." A lovely convenience. The other is explicit intent: a Recall deep link that says "start at 41:00," or a Jump to Time, or a chapter selection. When both have an opinion, one has to win — and getting the precedence wrong quietly breaks the whole product.

Picture it: Dad searches a transcript, clicks the line at 41:00, and the app... resumes at 22:14 because that's where he stopped last week. The deep link — the entire reason Ashen Reel exists — just landed nineteen minutes off. Resume, trying to be helpful, sabotaged the one feature that matters most.

Explicit intent overrides remembered convenience. A value the user or a caller just asked for now always beats a value the system remembered from before. Memory is a courtesy; intent is a command. When they conflict, the command wins.

The rule is a three-line precedence, and the order is the whole feature:

Resume is disposable convenience state, written safely. Positions are persisted with debounced, transactional writes so a crash can't corrupt the database, and losing them entirely is merely annoying, never damaging. Resume earns its keep by being helpful when nothing louder is asking — and by getting out of the way the instant something is.

Least Astonishment Is the Deep Reason

Under the rule is a principle worth carrying everywhere: the system should do the least surprising thing. If you explicitly ask to go to 41:00, landing anywhere else is astonishing, no matter how well-meant. Resume is only unsurprising when you didn't ask for something specific. So the precedence isn't an arbitrary choice — it's the direct consequence of 'honor what the user just said.' Whenever a remembered default and a fresh explicit request collide, the fresh request is almost always the one that keeps the user un-astonished.

Code

The start position is pure precedence — explicit, then resume, then zero·swift
struct OpenPlan {
    let file: URL
    let explicitTime: Double?   // from a Recall deep link, Jump to Time, or chapter
}

/// Precedence IS the feature: a just-asked-for time beats a remembered one.
func startPosition(for plan: OpenPlan, resume: Double?) -> Double {
    if let t = plan.explicitTime { return t }   // deep link / jump / chapter wins
    if let r = resume            { return r }   // else pick up where we left off
    return 0                                    // else the beginning
}

// A Recall open sets explicitTime, so resume is suppressed for THAT open.
// A plain reopen leaves explicitTime nil, so resume gets to be helpful.
// The whole 'lands at the right second' guarantee is these three lines.

External links

Exercise

Find a place in your app where a remembered/default value and a fresh explicit request could both set the same thing — a saved filter versus a URL query param, a remembered sort versus a user's click, a cached selection versus a deep link. Trace which one currently wins. If the remembered value can ever override the fresh explicit one, write the precedence rule that fixes it, and name the case where a user would be astonished by the current behavior.
Hint
The precedence is almost always: explicit-right-now > remembered-from-before > system-default. If your code checks the remembered value first and only falls back to the explicit request, it's backwards. Check the fresh intent first; let memory fill in only the silence.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.