Lecture video review

Review timing approval, failed-job retry, and caption status in the full LMS.

SP-679 | Updated 10 Oct 2026

Status as of 10 Oct 2026

Stage
Debt fixes are pushed for review. They have not been deployed to beta or production.
PR
PR #544 is open. Its pushed revision 6bce3e4a includes these debt fixes and the current main branch.
Ticket
SP-679
Evidence
Eight screenshots from the real frontend with mock API responses and demo authentication. Names and numbers are demo data. No walkthrough video was recorded.

Why this exists

Instructors need to resolve script timing conflicts before audio generation. Failed videos should offer a clear retry action. Caption failures should remain visible while the video stays available.

What changed

Review timing

The job pauses before speech generation when authored durations conflict.

Choose explicitly

Approve narration timing or upload corrected files.

Retry a failed job

Reuse retained inputs and show the attempt limit.

Read caption status

See attached, pending, and failed captions separately from video status.

How to review the screens

Open an image for full size. Desktop captures are 1440 pixels wide. Mobile captures are 360 pixels wide.

Review the conflict

The lesson target is 120 seconds. Two specified rows total 150 seconds. Row 7 has no duration and is not counted as zero.
The lesson target is 120 seconds. Two specified rows total 150 seconds. Row 7 has no duration and is not counted as zero. Click to open full size.

Approve narration timing

An explicit approval resumes the same demo job to Waiting. Loading the conflict sends no approval request.
An explicit approval resumes the same demo job to Waiting. Loading the conflict sends no approval request. Click to open full size.

Review a failed job

The original failure remains visible. This demo job has used attempt 1 of 3 and offers Retry.
The original failure remains visible. This demo job has used attempt 1 of 3 and offers Retry. Click to open full size.

Queue the retry

Retry queues the same job. The interaction check confirms no new upload or draft request.
Retry queues the same job. The interaction check confirms no new upload or draft request. Click to open full size.

Read caption states

Attached, pending, and failed captions appear separately. Watch remains available when captions fail.
Attached, pending, and failed captions appear separately. Watch remains available when captions fail. Click to open full size.

Review timing on mobile

Both choices remain readable at 360 pixels. Choose narration timing or upload corrected files.
Both choices remain readable at 360 pixels. Choose narration timing or upload corrected files. Click to open full size.

Review retry on mobile

The failure message and attempt count wrap without horizontal page scrolling.
The failure message and attempt count wrap without horizontal page scrolling. Click to open full size.

Read captions on mobile

Caption status and delivered notes wrap without overlapping.
Caption status and delivered notes wrap without overlapping. Click to open full size.

Checks and limits

This evidence does not verify beta, real speech generation, R2 recovery, live Bunny playback, or caption synchronization. Those checks remain open. Audio approval, required custom visuals, learner interactions, retention, and a shared render limit still need decisions.

Decisions taken

QuestionDecision
Conflicting authored durationsPause and ask the instructor. Never approve automatically.
Caption failureKeep the delivered video available and show the caption outcome.
Failed-job retryReuse retained inputs and enforce the stored attempt limit.

Before beta verification

  1. Review and commit the local debt fixes.
  2. Deploy the runner before the backend so new claims provide execution tokens. No new migration was added in this debt batch.
  3. Configure the timeout-maintenance scheduler and agree artifact retention.
  4. Test interrupted upload recovery and caption on/off, seeking, and synchronization on beta.