Add detailed render telemetry and concise video status - #5
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Telemetry contract
The v2 video-job contract uses these phases:
waiting,preparing_source,applying_effects,finalizing_output,verifying_output,saving_output,completed,failed, andcanceled.Runtime snapshots use a monotonic clock for elapsed calculations and UTC timestamps for serialization. Frame updates are capped at approximately 4 Hz, history is bounded, ETA is derived from progress and elapsed time, and active telemetry becomes stale after approximately five seconds without an update. Queue snapshots include position, depth, concurrency, and active-worker counts.
FFmpeg finalization now uses
-progress pipe:1 -nostats. Dedicated bounded stdout/stderr readers parse progress without allowing either pipe or retained diagnostics to grow without limit, while cancellation still terminates and escalates to kill when required.Persistence behavior
The manifest schema remains v2. Video job records now preserve bounded phase milestones, terminal timing summaries, and coarse frame counters. Existing 0.2.0 records are accepted and their phase is inferred from their prior state. Restart reconciliation reconstructs useful terminal telemetry and retains explicit cancellation/failure outcomes without attempting to persist high-frequency runtime samples.
UI behavior
The primary status stays intentionally concise: truthful phase text, progress, ETA or queue context, and cancellation state. A semantic details disclosure contains frames, FPS, speed, size, elapsed time, ordered effects, and phase history. Polling maintains one timer and one request, guards stale job revisions, backs off by job state, retries transient network failures, and stops at terminal states. Announcements are throttled to phase changes, meaningful progress thresholds, periodic elapsed milestones, and terminal outcomes. A prior successful output remains available while a new render runs.
Validation
python check.pythrough.venv: 213 tests passedqualityandbrowserpassedKnown limitations