Reference board · owner-only states

The unfinished step is a status, not a broken card

The backend deliberately shows you your own unpublished steps so you can watch an upload land and retry one that failed. The card owed that state some honesty and gave it a silent gray field instead, wrapped in live dressing for a step nobody else can see. Early users read it as a broken step. The fix: no live chrome, a small state mark in the media field, and one footer line that names the state and the audience.

An unpublished step is not on air. The 24h clock starts at PublishDate, so the card carries no ring, no prompt, no action pills, no counts, no presence line. What remains is the author's own words, the date, and the truth about where the upload stands.

01 Publishing

Media still on its way: uploading from the phone, or the video encoder doing its work (MediaStatus Pending / Processing, PublishDate null). The state resolves by itself; the card just keeps the owner company while it does.

Ran the whole loop without walking. Five weeks ago the first climb wrecked me.Jul 16
Publishing
Publishing this step. Only you can see it until it's up.
What it replaced: a bare gray square, a live ring counting a window that hadn't started, and three lit action pills inviting acts nobody could perform.

The card keeps the owner company, quietly

The note and date render exactly as they will look once published: the card is already the real card, the same stance as the feed's publish moment. Only the media field and the footer speak to the state.

  • State mark: one blinking muted dot + the PUBLISHING kicker, centered in the paper field. Ink and muted gray only: tangerine belongs to on-air, and nothing is on air yet.
  • Footer voice: "Publishing this step. Only you can see it until it's up." One line answers both confusions: what this is, and who can see it.
  • No spinner theatre: no progress bars or percentages on the trail. The publish moment (composer) owns the live watch; the trail owns the fact.
Nothing here invites anyone: no ring, no prompt, no pills, no counts. Live dressing on an invisible step is a false card.

02 Didn't finish

The upload or encode failed (MediaStatus Failed). Quiet ink, never red panic: nothing was lost that a retry can't recover, and the danger palette is reserved for destructive confirms.

Ran the whole loop without walking. Five weeks ago the first climb wrecked me.Jul 16
Try again
This step didn't finish publishing. Only you can see it.

One door out: try again

The media field carries the act (retry glyph + kicker, the whole field is the button) and the footer carries the fact plus the same button, so the door works from either end of the card.

  • Retry re-runs the upload when the local file is still cached; otherwise it opens the step's media picker (the edit-on-failed-media flow the backend visibility exemption was built for).
  • Delete stays in the overflow sheet, where it lives on every step. The failed card gets one primary act, not a fork.
  • Stale truth is the backend's job: a sweep marks media stuck in Pending (order of hours) as Failed. The client renders state and never infers failure from age.
Failure reads in the quiet-error voice: a fact and a door, never an alarm.

03 Bright lines

Card-level rules: they apply wherever the owner meets their own unpublished step (journey trail, feed, step detail), not only where the confusion was first reported.

Server truth
Visibility stays WhereMediaVisibleTo: PublishDate null renders for the owner and no one else. The client never re-filters or second-guesses it.
No live dressing
The 24h clock starts at PublishDate. An unpublished step shows no On-air pill, no countdown ring, no step-with prompt, no action pills, no interaction counts, no presence line.
One status voice
The media field carries a small state mark; the footer carries one sentence naming state + audience. Nothing else on the card mentions the state. No broken-image glyphs, ever.
Quiet failure
Failed is muted ink with a Try again door. The danger palette stays reserved for destructive confirms (step-sheet ruling).
Stale pending is failed
A backend sweep fails media stuck in Pending after an order-of-hours threshold, so "Publishing" is only ever shown while work is plausibly happening.
Tags survive
First step, Final step, and Milestone are authorial facts and keep their header row; the status never replaces them.