Spaces:
Running
Running
| # 05 Β· Batch Queue | |
| The honest view of the machine. What's running, what's waiting, what went wrong, and where in the pipeline each job is parked. Named "Batch" because once the task queue is persistent, batches of videos become the natural unit of work. | |
| ## View | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β β° βΊ Batch Queue [+ New batch] βReady β | |
| βββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ | |
| β β β | |
| β β Active 2 running β | |
| β π¬ β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β β β | |
| β 𧬠β β β£ Keynote 2026 (ENβDE) started 14:02 β β | |
| β β β β β | |
| β π β β Ingest ASR Transcribe Translate Generate Export β β β | |
| β β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β | |
| β π β β 14/42 β β | |
| β β β ETA 3m 20s GPU ββββββββββ 72% VRAM 6.1 GB [βΈ] [βΉ] β β | |
| β π¦ β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β | |
| β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β β β | |
| β β β β£ Tutorial ep. 2 (ENβJA) started 13:48 β β | |
| β β β β β | |
| β β β Ingest ASR Transcribe Translate Generate Export β β β | |
| β β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β | |
| β β β βΈ awaiting review β β | |
| β β β Paused by user Β· 3 flagged segments need approval [Review] [βΉ] β β | |
| β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β | |
| β β Queued 3 pending β | |
| β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β #3 Product demo v3 Β· ENβES Β· est. 9 min Β· depends-on: none [β ] β β | |
| β β β #4 Product demo v3 Β· ENβFR Β· est. 9 min Β· depends-on: #3 [β ] β β | |
| β β β #5 Cooking show pilot Β· ENβIT Β· est. 22 min Β· depends-on: none [β ] β β | |
| β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β | |
| β β Completed today 4 done β | |
| β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β β Interview β Huberman (ENβDE) 12m 04s Β· 42 seg Β· 1 warning [open] β β | |
| β β β β Product demo v3 (ENβDE) 9m 12s Β· 28 seg [open] β β | |
| β β β β Marketing cutdown v4 2m 31s Β· 7 seg [open] β β | |
| β β β β Untitled-17 (ENβKO) failed at step 6 Β· "OOM" [retry] [logs] β β | |
| β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β | |
| β β Logs (tail -f) [β filter] β | |
| β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β 14:07:11 info dub.generate seg=14 dur=4.6s voice=marcus β β | |
| β β β 14:07:13 info dub.generate seg=14 lip_sync=0.98 ok β β | |
| β β β 14:07:13 info dub.generate seg=15 dur=4.9s voice=spk-02 β β | |
| β β β 14:07:15 warn rvc skipped: model not loaded β β | |
| β β β 14:07:15 info dub.generate seg=15 lip_sync=1.04 ok β β | |
| β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β | |
| βββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## Pipeline step glyphs | |
| ``` | |
| β completed | |
| β in progress | |
| β paused at checkpoint (awaiting review) | |
| β queued | |
| β failed | |
| ``` | |
| Each stage is explicitly **resumable**: a `β` means the artifact for that stage is persisted in the job store with a checksum. A crash before a `β` re-runs just that stage. | |
| ## Anatomy of a job row | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β β | |
| β [icon] {project name} {from β to} started {time} β | |
| β β | |
| β {pipeline steps visualised} β | |
| β β | |
| β {current-step progress} β | |
| β β | |
| β {resource readout} {wall-clock ETA} [action buttons] β | |
| β β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| - Pipeline glyphs are **never** animated (no spinners inside the ASCII track). The current step pulses the text underneath. | |
| - Action buttons are role-aware: `[βΈ]` when running, `[Resume]` when paused, `[retry]` when failed. | |
| ## Rules of the view | |
| - **Only one GPU job runs at a time.** Queued jobs with no dependency run in FIFO order. Users can reorder (`[β ]`) at will. | |
| - **Dependencies** are first-class. `depends-on: #3` means "start after #3 finishes, regardless of final state." Failures break the chain and surface a banner. | |
| - **Paused jobs don't block the queue.** A job in `awaiting_review` releases the GPU; the next queued job starts. When the user resumes, it re-queues. | |
| - **Completed today** is a 24-hour window. Older jobs live in each project's own history. | |
| - **Logs pane** tails `/metrics/logs` SSE with filter chips. Defaults to active-job logs only. | |
| ## States the view must handle | |
| - **Empty queue**: full-page empty state with `[+ New batch]` and a link to Launchpad. | |
| - **Nothing active, things queued** (rare, usually means GPU is warming up): active region shows `β³ GPU warming upβ¦`. | |
| - **Server restart during a run**: job re-appears in "Active" on reload with the step marker rewound to the last `β`; banner: *"Resumed from checkpoint at step 5 β no data lost."* | |
| ## What binds to what | |
| | UI region | API | Store | | |
| |---|---|---| | |
| | Active jobs | `GET /jobs?state=active`, SSE `/jobs/stream` | `jobs.active` | | |
| | Step glyph state | SSE payload `{job_id, step, state}` | `jobs.steps[job_id]` | | |
| | Reorder | `PUT /jobs/{id}/priority` | `jobs.queued` | | |
| | Cancel / retry | `POST /jobs/{id}/{cancel|retry}` | `jobs` | | |
| | Logs pane | SSE `/metrics/logs?job={id}` | `logs.tail` | | |
| ## Roadmap phase | |
| Fully realised in **Phase 4** (staged checkpoints + step-level resumability). Skeleton of this page appears at end of **Phase 1** (active/queued strips, no checkpoint gating yet). Logs pane requires Phase 1.6 (structured logging baseline). | |