Lecture video: beta test evidence

Upload an English lesson, confirm its narration settings, and follow generation through delivery. Usage is sent during processing.

SP-679 · 15 Oct 2026

Status as of 15 Oct 2026

Stage
PRs #544, #572 and #573 are merged and deployed to beta. The saved job delivered successfully after recovery. Player and caption checks remain open.
PR
PR #544, merged at 4822512b.
Delivery fix
PR #572, streaming checksum reader. PR #573, active reservation wait.
Environment
Real beta LMS, existing Stock Market Course 1. These are live test captures, not mocked components.
Test account
Pixel Skill Developer, authorized instructor test.

Why this exists

English lessons need the correct narration language. Instructors can resolve language and timing choices before generation continues. Usage is recorded across failed and successful executions. The runner now sends each usage event in the background and retries from a local journal.

The flow

Upload

Choose the English script and slide deck.

→

Review

Confirm language and resolve timing conflicts when requested.

→

Generate

Create speech and render while usage is reported.

→

Check

Inspect the delivered video and reporting outcome.

Beta walkthrough

Silent recording of the initial beta attempt. Waiting between generation stages is shortened. Later fixes and successful recovery are documented in the screenshots and check table below.

How the test was run

  1. Opened the existing Stock Market Course 1 in the real beta LMS as Pixel Skill Developer.
  2. Uploaded the authorized English XLSX and PPTX files and kept automatic language detection.
  3. Verified that AI selected English; switched the choice to UK English, restored US English and confirmed it.
  4. Observed speech generation and rendering. No timing conflict was raised for these files.
  5. Captured the delivery failure and diagnosed the backend streaming error. Did not retry against the known-broken backend.
Real beta LMS: the upload form includes automatic detection and manual narration choices.
Real beta LMS: the upload form includes automatic detection and manual narration choices.
The authorized English business-email script and PowerPoint deck are selected.
The authorized English business-email script and PowerPoint deck are selected.
AI detected English and selected US English. The instructor must confirm before speech generation.
AI detected English and selected US English. The instructor must confirm before speech generation.
The instructor can switch to UK English before confirming. This temporary selection was changed back to US English for the test.
The instructor can switch to UK English before confirming. This temporary selection was changed back to US English for the test.
After US English confirmation, the same job reaches the render stage.
After US English confirmation, the same job reaches the render stage.
Rendering finished, but artifact confirmation returned HTTP 500. Beta shows a retryable delivery failure, attempt 1 of 3.
Rendering finished, but artifact confirmation returned HTTP 500. Beta shows a retryable delivery failure, attempt 1 of 3.
After the checksum fix, the retry reached delivery but failed while the Bunny reservation was still in progress. US English remained selected. Attempt 2 of 3.
After the checksum fix, the retry reached delivery but failed while the Bunny reservation was still in progress. US English remained selected. Attempt 2 of 3.
After both fixes deployed, the same beta job delivered successfully. US English was retained; captions were pending.
After both fixes deployed, the same beta job delivered successfully. US English was retained; captions were pending.

Checks and evidence

CheckResultEvidence and scope
PR CI and Claude reviewPassedPRs #544, #572 and #573 passed required CI and received Claude approval with zero actionable comments.
Post-merge database suitePassed2,448 tests passed before the beta deployment.
Runner and frontend testsPassed132 runner tests and 759 frontend tests passed locally; TypeScript and frontend build passed.
Beta upload and automatic detectionPassedThe backend accepted both files and returned detected language en and locale en-US.
Instructor overridePassedThe UK English option was selectable. US English was restored and persisted on confirmation.
Speech and renderPassedThe job reached delivery after rendering. The selected voice remained en-US-Chirp3-HD-Aoede.
Usage acknowledgmentsPassedFirst execution window: 36 usage requests, all HTTP 204. Second execution: 30 usage requests, all HTTP 204. Each runner exit reported zero pending and rejected events. Request counts are not unique-event counts.
Video deliveryPassed after fixesThe first attempt failed the checksum reader. PR #572 fixed it. The next attempt exposed the reservation race, fixed in #573. The saved job then delivered successfully.
Playback and new captionsNot verifiedDelivery succeeded, but playback remains unverified because the embedded player stayed blank and browser automation reported a paused document. Captions remain pending. The older course video is not proof.
Timing-conflict reviewNot exercisedThese files did not trigger a timing conflict. Automated timing coverage remains separate.
Checksum fix beta retryPassedArtifact confirmation returned HTTP 204 after PR #572 deployed.
Video reservationFixed; unit testedPR #573 is deployed. Tests cover waiting and reuse of the original GUID. The live recovery reused the completed reservation; a new reservation was not exercised.
Saved delivery recoveryPassedExecution lecture-video-runner-26876 completed successfully in 20.36 seconds. No audio or video was regenerated. Usage exit pending=0, rejected=0, outcomePending=false.

What the reporting result means

Each provider call creates a stable event ID. The backend accepts identical repeats without adding cost again. A final pending count of zero means the runner received acknowledgments for its queued events. It does not independently prove that provider invoices match the database ledger.

Known limits

Decisions taken

DecisionChoice
Usage deliverySend each event directly in the background, one request at a time.
RecoveryKeep a local retry journal. No R2 usage backup.
ProtectionStable event IDs, execution authentication, 600 reporting requests per execution per minute and bounded storage.

Rollout

Beta deployment of 14c5a2ae succeeded after 2,448 database tests passed. The saved delivery recovered in 20 seconds without regenerating speech or video. Production release remains separate.