Overview

System resources

Checking
System Load

--

Memory Used --
Memory Total --
Memory Load --
Network Usage

--

Server total from host counters; bucket totals start from accounting deployment.

Current Rate --
Direction Totals --
Attributed Downloads

Operational buckets

Real source counters only
Downloads
Collecting

--

Total--
Today--
7-day avg--
Storage

Waiting for disk metrics

Server Control

Hard cancel active work or turn off the VM

Stops active workers, health checks, probes, player streams, and fallback worker processes before restart or shutdown actions.

Title Reports

0 open

No unresolved reports.
Workers

Operational state

Loading workers Checking process state
Current State

Loading documentation

Reading the active V6 system map from the installed docs file.

DocsLoading
Workers

Live state snapshot

Loading workersChecking status endpoints
Loading Current StateParsing V6 docs and live metadata.
No active episode
Idle
0:00 --:--
Buffer: -- Down: --
Mode: Direct Play Encode: --

Completion

V5 queue and resolver flow, adapted for V6 variant cataloging. The worker searches, probes, recovers, verifies, records metadata, then removes temporary media.

Catalog DB: -- Cleanup: --

Provider Conveyor

Shared provider lanes across season and movie completion workers. Up to four providers pull FIFO lookup work while each provider stays one-at-a-time.

idle
Active Lanes0
Waiting Lanes0
Queued Tasks0
Active Owner--
Waiting Owners0
Width4

Provider Lanes

Slot file: --

No provider lanes active right now.

Dialogue Check API

Real outbound subtitle-provider requests from dialogue verification. Cooldowns and local subtitle-cache hits are not counted as API requests.

idle
24h Requests0
OK0
Failed0
Rate Limited0

Breakdown

Last 24 hours

No request telemetry yet.

Request History

Waiting for telemetry.

No dialogue API requests in the last 24 hours.

Season Worker

Season packs resolve through the V5 flow, then the best 720p, 1080p, and 4K variants are probed, verified, cataloged, and cleaned up.

stopped
Queued0
Running0
Done0
Failed0
24h Seasons0

Worker Slots

Sibling workers share the queue and rotate VPN lanes 1, 2, and 3.

Flow Log

Search, AI checks, torrent probing, recovery, dialogue, and cleanup.

No log output yet.

Queued Targets

Next 0 claimable targets · 0 deferred later.

Complete-series rows outrank regular queue items; fewer seasons left means a higher score. Due retries age with queued rows, and only one season per show runs at once.

Recent Verified Catalog

Fresh successes written to DB Library, independent from noisy worker progress.

Worker History

Recent completed, failed, cancelled, or deferred worker runs.

Movie Worker

Movie completion uses the same variant catalog contract, with temporary recovery only long enough to verify and record the best magnets.

stopped
Queued0
Running0
Done0
Failed0
24h Titles0

Worker Slots

Sibling workers share the queue and rotate VPN lanes 1, 2, and 3.

Flow Log

Search, AI checks, torrent probing, recovery, dialogue, and cleanup.

No log output yet.

Queued Movies

Next 0 claimable movies · 0 deferred later.

Recent Verified Catalog

Fresh movie successes written to DB Library.

Worker History

Recent completed, failed, or cancelled movie runs.

Special Request Worker

Idle dispatcher for movie or series requests. It keeps a dedicated retry ledger and only stops a request after discovered options are exhausted.

stopped
Queued0
Running0
Done0
Failed0
Attempts0
Exhausted0

Add Request

Search local title catalog.

Worker Slot

Single always-waiting dispatcher slot for future special requests.

Flow Log

Waiting for the first special request.

No special request work yet.

Queued Requests

Next 0 claimable requests - 0 deferred later.

Retry Ledger

Recent dispatch attempts, transient deferrals, and final exhaustion decisions.

Failure Code Definitions

History pills stay short on purpose. Use this reference to translate each code into the likely cause and next action.

Worker documentation

Completion Worker Rules

This reference documents what every live panel on the Completion page means and the rules the worker follows before a season or movie is allowed into the catalog.

Catalog-safe VPN lanes 1-3 Coverage-gated Health verified
1. QueueClaim target

Queued rows become claimable when not deferred and not blocked by another active season for the same show.

2. SearchFind contenders

Provider conveyor lanes collect candidates while each provider stays one-at-a-time.

3. ProbeProve media

Magnets are ranked, metadata is fetched, files are selected, and qBittorrent/libtorrent readiness is checked.

4. VerifyCheck identity

Episode coverage, dialogue, subtitles, and boundary cases must match the canonical target.

5. PackagePublish assets

Verified media is segmented, cataloged, backed up, and tied to variant metadata.

6. CleanRelease temp state

Temporary downloads and worker ownership are removed unless the run is intentionally deferred.

How To Read This Page
  • The Provider Conveyor shows shared lookup pressure across season and movie workers: active lanes, waiting lanes, queued tasks, the active owner, and waiting owners.
  • The Dialogue Check API card counts outbound subtitle-provider requests only; cache hits and cooldown waits are intentionally excluded.
  • Season Worker and Movie Worker cards show controls, slot state, flow logs, queued targets, recent verified catalog writes, and worker history.
  • Failure Code Definitions translates compact history pills into likely cause and next action.
Read more

Worker Slots are live sibling processes. Each slot reports its lane, stage, actual status, active target, PID, progress, working bucket, and bucket outcomes. The Flow Log is the detailed resolver trace for the selected slot. Queued Targets and Queued Movies are split into claimable rows and deferred-later rows so due work does not get hidden behind future retries.

Queue And Control Rules
  • Preview Only runs the materialization path without enqueueing rows, so target args can be checked before work is committed.
  • Queue Target(s) and Queue Movie(s) materialize the target args into queue rows.
  • On starts the worker; Clean Stop asks active work to finish its safe stop path; Hard Cancel is reserved for forcing active work down.
  • Sibling workers share one queue and rotate across VPN lanes 1, 2, and 3.
Read more

Season queue ordering gives complete-series work priority over ordinary rows, then favors shows with fewer seasons left. Due retries age with normal queued work. The worker avoids running more than one season from the same show at the same time, which keeps cross-season qBittorrent ownership and catalog writes from colliding.

Provider Search Rules
  • The provider conveyor is shared by season and movie completion so multiple workers do not hammer the same provider independently.
  • Provider lanes pull FIFO lookup tasks, but each provider stays serialized to avoid self-inflicted blocks.
  • Search retries compare structured row counts and keep the strongest parse result before candidates are ranked.
  • Provider lockouts, challenge pages, low-row parses, and transient fetch errors are surfaced as search or provider failure codes.
Read more

Search jobs can come from multiple source profiles. The worker records provider key, lane id, queued task count, active owner, waiting owners, heartbeat time, and parse quality so the page can distinguish a genuinely quiet provider from a busy conveyor or a blocked fetch path.

Season Pack Mapping Rules
  • Filename parsing keeps release numbering as conveyor_release_episode_numbers and stores canonical catalog coverage as conveyor_episode_numbers.
  • The combined episode coverage overlay lets one release file cover multiple IMDb catalog episodes without editing the IMDb catalog.
  • Split-part titles are grouped only by normalized base title equality, never substring-only matching.
  • Titleless ordinal alignment is allowed only when selected files are monotonic, target-season safe, start at the expected beginning, and match the catalog release-unit count.
Read more

A combined file such as an Office finale can display once while covering both catalog episodes. The visible app row uses the first catalog episode number, later covered catalog rows are hidden from the normal list, and direct playback or download requests for any covered episode resolve to the same source asset.

Acceptance Rules
  • Season completion accepts a pack only when every expected canonical catalog episode is covered by selected-file metadata.
  • Literal filename episode numbers are evidence, not the final truth, because coverage can be remapped by title-safe split-part units.
  • Partial-season sources do not get unsafe ordinal fallback; missing explicit episode evidence stays missing.
  • Movies must still resolve one verified movie asset and do not use episode coverage mapping.
Read more

For seasons, the gate reads conveyor_episode_numbers after mapping. That means a 2-in-1 source covering E26-E27 counts as both E26 and E27 present, while a pack that never safely covers the finale remains rejected even if its release numbering looks close.

Torrent And Download Rules
  • Selected files are prioritized while unrelated torrent files stay deprioritized.
  • A rolling priority window advances as selected files prove readiness.
  • qBittorrent-owned files must show meaningful progress and pass ffprobe/container readiness before processing.
  • Late stalls after useful progress can defer the run for retry instead of poisoning the candidate permanently.
Read more

The worker tracks first-byte timeout, selected-file progress, front-buffer readiness, no-growth windows, sparse/preallocated file parseability, qBittorrent API reachability, and lane/network mode. Recovery actions can reapply priorities, reannounce, recheck, rotate lanes, or defer when the evidence says the source is likely recoverable later.

Dialogue And Subtitle Rules
  • Dialogue verification runs before segment packaging unless explicitly skipped by worker args.
  • Subtitle-provider requests, rate limits, cache hits, and provider failures feed the Dialogue Check API telemetry and failure codes.
  • Boundary checks verify the first and last required source units so wrong seasons and wrong finales are caught early.
  • Combined sources are checked once per source asset; the requested boundary IMDb id is tried first, then other covered IMDb ids may be used as fallback.
Read more

When subtitle embedding is active, packaging requires a dialogue summary. Provider outages can mark the run deferred with a retry time instead of failed. The persisted dialogue result records which IMDb id matched, which matters for combined episode files that legitimately cover more than one catalog row.

Packaging And Catalog Rules
  • Verified media is segmented into package sets and written with catalog metadata for the chosen variant bucket.
  • A combined source creates one package asset, not duplicate uploads for each covered catalog episode.
  • Coverage rows let health and mobile playback treat one package set as available for every covered episode number.
  • Recent Verified Catalog shows successful DB Library writes, separate from noisy worker-progress rows.
Read more

The catalog keeps IMDb rows unchanged. Coverage metadata lives on top of package and selected-file records, so the app can show a clean E26-E27 row while old direct episode requests still resolve. Finalization state is preserved across route changes and clean stops; temporary downloads are cleaned only after cataloging or safe failure handling.

Failure, Retry, And Health Rules
  • Failure pills are compact labels; the definitions panel gives meaning and next action for each code.
  • Terminal failures mean the current contender cannot be accepted; deferred failures mean the system intentionally waits for a safer retry window.
  • Season health counts a mapped package set as healthy for every episode in its coverage rows.
  • Worker History includes completed, failed, cancelled, and deferred runs so retry behavior can be audited after the live slot moves on.
Read more

Use the Flow Log when all contenders look bad: it shows whether denial came from search quality, missing episode coverage, qBittorrent readiness, dialogue mismatch, subtitle-provider deferral, packaging failure, finalization, admin cancel, or health verification. That distinction matters because only some failures should be retried immediately.

Repair Work

FIFO repair queue for confirmed health issues. Slow-probe repairs replace only the affected resolution bucket, avoid the old magnet/infohash, and defer unresolved work for seven days.

stopped
Queued0
Running0
Done0
Failed0

Worker Slots

Default one enabled slot. Extra siblings can be enabled; claimed jobs alternate over VPN lanes 4 and 5.

Flow Log

Waiting for repair work.

No repair work yet.

Repair Queue

Next 0 claimable repairs - 0 deferred later.

Repair History

Recent verified replacements, deferrals, failures, and cancel decisions.

Worker documentation

How Repair Work decides what is safe to replace

Repair Work is the controlled replacement path for catalog variants that Health has already proven unsafe, slow, incomplete, or no longer streamable. It repairs the exact damaged bucket, keeps unrelated catalog rows intact, and now compares the replacement against the old variant before final acceptance.

Slow-probe repair VPN lanes 4-5 Same bucket only Old-vs-new proof
1. Trigger Health opens a repair

Confirmed slow, failed, or damaged health evidence creates a deduped repair queue row with the old identity attached.

2. Claim Repair owns lanes 4-5

The worker claims FIFO work and pins child completion to the assigned repair VPN lane.

3. Replace Same bucket search

Only the affected 720p, 1080p, or 2160p bucket is rebuilt; the old magnet and infohash are blocked.

4. Verify Catalog snapshot check

The replacement must appear in DB Library with matching kind, title, season, bucket, and a changed torrent identity.

5. Compare Old-vs-replacement streamability

The same streamability probe measures the old and new variants before the queue row can be marked done.

6. Finish Accept or defer

Better replacements are finalized; weak, inconclusive, or missing comparisons are deferred instead of silently taking over.

What It Repairs
  • Slow-probe variants where Health measured sustained speed below the required bucket threshold.
  • Movie variants and single season variants with enough identity data to find the exact catalog target.
  • Only the damaged resolution bucket; healthy buckets on the same title remain untouched.
  • Rows that can be safely retried later when providers, seeds, or lane conditions improve.
Read more

Repair is not a general completion backlog. Health has to provide the reason, the target kind, IMDb or TVDB identity, the bucket, and old torrent evidence such as magnet URI, infohash, selected files, or runtime probe details. That keeps the repair queue narrow and auditable.

Queue And VPN Lane Ownership
  • Claimable rows are processed FIFO while deferred rows wait until their next-at time.
  • Repair workers use VPN lanes 4-5 only; normal completion and artwork stay on lanes 1-3.
  • The default slot is always available, and sibling slots can be enabled for parallel repair work.
  • Each claimed repair pins its child movie or season completion process to the assigned repair lane.
Read more

Lane assignment alternates across lanes 4 and 5 so repair qBittorrent work does not collide with health probes on lanes 6-9 or the user/config-prober streamer on lane 10. The queue row records slot, process, stage, attempts, and heartbeat data so Clean Stop and Hard Cancel have visible state.

Replacement Search Rules
  • The old magnet and infohash are passed as avoid-candidates so the worker cannot pick the same bad source again.
  • The child completion worker runs in repair mode with the target bucket forced by replace-bucket.
  • Season repairs target the affected season and preserve the rest of the show catalog.
  • Movie repairs use the same quality, subtitle, dialogue, packaging, and DB Library checks as normal movie completion.
Read more

The child worker is expected to finish as a normal terminal completion run. Repair then reopens the catalog snapshot and confirms that the expected bucket exists, maps to the same title or season, and no longer points at the old identity before any success is considered.

Old-vs-Replacement Streamability
  • After replacement verification, the row enters comparing_streamability and comparison_status becomes running.
  • The old and replacement variants are measured with the same health streamability probe path.
  • The default comparison window is 900 seconds, with warmup and metadata timeouts kept separate.
  • A replacement must be healthy and materially better, or healthy while the old variant is slow, failed, or inconclusive.
Read more

The comparison writes compact old and replacement probe summaries into comparison_result_json. A healthy old variant can block acceptance if the replacement does not beat it by the configured margin, which prevents repair from swapping a known source for an equal or weaker one.

Finalization, Deferral, And History
  • Accepted replacements move to done and appear in Repair History as verified replacement decisions.
  • Rejected comparisons are deferred with the comparison reason preserved for later review.
  • Missing catalog evidence, unchanged torrent identity, failed children, and weak probes are recorded as terminal or deferred outcomes.
  • Deferred slow-probe repair defaults to a seven-day wait so repeated bad searches do not churn the system.
Read more

The history list is the audit trail: status, stage, attempts, old infohash, replacement identity, and comparison details explain why a row finished or waited. A deferred row is not ignored; it is deliberately parked until the next safe retry window.

Operator Controls And Signals
  • On starts the supervised repair worker; Clean Stop lets the current child finish or exit cleanly.
  • Sibling adds parallel slots, while the slot cards show process state, lane, stage, heartbeat, and current item.
  • Clear Queue removes waiting work; Hard Cancel is for stopping active repair work immediately.
  • The Flow Log follows the selected slot and is the fastest place to inspect search, child completion, and comparison progress.
Read more

Use Hard Cancel when a repair child is stuck at the process level. Use Clean Stop when the worker is behaving but you want it to drain safely. If a row looks stuck after child completion, check for comparing_streamability, comparison_status, and comparison_result_json in the history entry before retrying.

Networking

Live VPN lane roles, active leases, qB ownership, and libtorrent daemon workload.

Schedulable lanes--
Reserved lanes--
Active leases--
Last updated--
Dashboard egress VPN-only round robin Lanes 1-3 route artwork, logos, and live probes. Trailers use direct host egress.
Host fallback off
Active routed--
Total routed--
Success--
Errors--
Config tester rules How lane 10 chooses and proves VPN configs These are the current service rules from the user-lane torrent config tester. Fixture sets reset at server local midnight, and the previous top 10 are retested first.
Daily set
Idle gate

The service polls user activity every 1 second. Testing starts only after no active playback, player presence, foreground app presence, or recent authenticated app activity for 300 continuous seconds.

User priority

Any active playback or fresh app/player presence cancels testing, kills active probe children, applies the best unused lane-10 config, and starts the lane-10 streamer.

Magnet source

It selects 3 fixtures once per local day from health/catalog rows declared healthy in the last 24h. Pinned magnets only fill gaps.

Daily sampling

The daily set is a stable weighted sample for that local day, biased by recent speed, seeders, and peers so the same 3 are reused fairly across all configs.

Per-config test

For each lane-10 config, it stops the user-lane streamer, preserves port-forward data, writes the config, prepares v6lane10, then starts 3 parallel torrent probes.

Buffer target

Each probe prioritizes the selected file front and must reach 16 MiB of contiguous verified bytes from offset 0. Timeout is 240 seconds per config.

Lane-10 settings

Probe/user lane settings are min_start_buffer_mib 16, max_startup_buffer_mib 192, urgent_window_mib 192, and lookahead_mib 8192.

Leaderboard

A config is top-eligible only if all 3 torrents succeed against today's fixtures. Ranking is lowest worst time, then lowest mean time, then highest throughput.

Daily top 10

At local midnight the new day starts by retesting yesterday's top 10 first. Old rows stay historical until those configs prove themselves again against today's fixtures.

Promotion

After a successful sample, qB lanes 1-5 and health lanes 6-9 outside the top set are blocked from new work, drained cleanly, switched to unused top configs, verified, then unblocked.

Today's probe magnets Waiting for daily fixture set The tester reuses one daily set for every config until local midnight.
0 / 3
No daily fixtures yetWaiting for the prober to select today's set.
Lane-10 torrent config tester Waiting for rotation state Lane 10 waits for user idle, then ranks configs with three parallel startup torrents.
Continuous
Probe mode--
Probe lane--
Last run--
Today top configs--
Today top configsNo leaderboard yetWaiting for today's torrent cycle.
VPN Lane 1 Completion qB Loading lane status
Loading
Waiting for lane manager data.
VPN Lane 2 Completion qB Loading lane status
Loading
Waiting for lane manager data.
VPN Lane 3 Completion qB Loading lane status
Loading
Waiting for lane manager data.
VPN Lanes 6-9 Health libtorrent Loading lane status
Loading
Waiting for lane manager data.
VPN Lane 10 User libtorrent Loading lane status
Loading
Waiting for lane manager data.

Health

Continuous swarm identity checks and daily stream-speed probes are separated here so queues, active slots, and history stay readable.

Swarm FIFOstopped
Speed Probestopped
Swarm today0
Probe today0
Avg swarm--
Avg probe--
Probe FIFO0
Slow0
Borderline0
Dead0

Swarm FIFO

Continuous metadata, identity, seeds, peers, and availability checks.

Workers--
Waiting0
Active0
Forecast--
Active slots--
FIFO queue--
Recent history--

Speed Probe FIFO

Continuous stream-speed checks on dedicated health lanes 6-9.

Workers--
Waiting0
ModeFIFO
Active0
Forecast--
Active slots--
FIFO queue--
Recent history--

Magnet Inventory

All saved health rows. Use this for inspection; queues and histories above are the operational view.

No health rows loaded yet.
Page 1
Diagnostics Worker DB, flags, lanes, schedule normalization, and raw log.
Combined statestopped
Mode--
Next check--
Healthy0
Old schedule rows will be cleared for FIFO mode.
Worker DB: -- Flags: -- Lanes: --
No log output yet.

Health Worker Execution Manual

This is the detailed operating reference for the Health system: how rows enter the queues, how workers claim them, how lanes are leased, how checks are judged, and exactly what each state means.

Documentation only
Architecture: one inventory, two FIFOs, separate responsibilities

The worker maintains a local health inventory in variant_health. Each saved completion variant can be checked by the Swarm FIFO worker and the Speed Probe FIFO worker independently, which lets cheap metadata checks keep running without blocking expensive stream probes.

Catalog sync

Health starts by syncing completion catalog variants into variant_health. The row stores title, target IDs, infohash, selected files, saved swarm numbers, resolution bucket, latest state, claim tokens, probe due time, and check counters.

Swarm FIFO worker

The swarm path checks torrent identity and swarm viability: metadata, selected-file match, seeders, peers, availability, distributed copies, and whether the saved magnet still represents the expected media.

Speed Probe FIFO worker

The probe path checks whether a variant can actually stream fast enough for its resolution bucket. It warms up, measures throughput, computes average speed over the probe, and compares that average against the required Mbps gate.

History trail

Each finished check writes a check_runs row with check type, result state, lane summary, previous values, current values, speed statistics, VPN origin, errors, and any requeue result.

Execution lifecycle: the exact loop every worker follows
Step 1Wake

Worker wakes on its loop interval, a manual Wake FIFO action, or a start/restart. The default loop interval is 300 seconds and a full pass is normalized around 24 hours.

Step 2Sync

The catalog is mirrored into variant_health so the worker has local rows to claim and can preserve health data even while the completion catalog changes.

Step 3Claim FIFO row

Swarm claims use swarm claim fields; probe claims use probe claim fields. FIFO ordering prefers never-checked rows first, then the oldest checked rows, while probe rows also respect next-due timing.

Step 4Lease lane

The worker asks the lane manager for a lane lease owned by completion-health-worker. If no lane is available, the row is unclaimed and the slot reports a waiting state.

Step 5Run check

The worker runs the qB/torrent probe subprocess for either swarm or speed_probe, updates the slot card while running, and classifies the observed result.

Step 6Persist and release

The worker updates variant_health, inserts check_runs, clears claim fields, updates the slot result, and releases the lane lease even on errors.

Swarm FIFO worker: identity, metadata, and swarm viability

Swarm checks are the cheap, continuous truth checks. They decide whether the magnet still has usable torrent metadata and whether the saved swarm is alive enough to keep the variant trusted.

Claim rule

The queue orders rows by never swarm-checked first, then oldest swarm_checked_at_utc. Each active slot owns one claim token until it finishes or returns the row to the queue.

Metadata rule

The metadata wait has a 180 second timeout. After metadata is usable, the swarm is allowed to settle for 90 seconds before judging seeds, peers, availability, and distributed copies.

Dead confirmation

A clean dead result first becomes suspect_dead. The worker only treats it as confirmed dead when the prior state already supports that suspicion, reducing one-bad-lane false positives.

Repair behavior

If a row was stale-dead but the swarm later appears alive with complete availability, the worker can repair the stale state back toward probe work instead of leaving the variant buried.

Speed Probe FIFO worker: stream-speed measurement rules

Probe checks answer one question: would playback stay ahead if someone pressed play? The primary judgement is buffer lead from contiguous selected-file bytes, not raw average Mbps. Mbps is still recorded as supporting telemetry and as a fallback if piece telemetry is unavailable.

BucketRequired fallbackBuffer-lead ruleNotes
720p5.0 Mbps at 24 fpsHealthy at 180s lead; borderline at 60s lead.Fallback bitrate converts contiguous bytes into playable seconds when duration is unknown.
1080p10.0 Mbps at 24 fpsHealthy at 180s lead; borderline at 60s lead.This is the normal default bucket when resolution is unknown.
2160p35.0 Mbps at 24 fpsHealthy at 180s lead; borderline at 60s lead.Also used for 4K and UHD labels.
Warmup and measurement

The normal probe warms up for 60 seconds, can extend warmup up to 90 seconds, then measures for 300 seconds. Slow reprobes use a longer 450 second measurement window.

Healthy rule

buffer_lead_seconds >= 180 passes. If selected-file progress is already at least 98%, the probe can also be treated as ready because the file is effectively present.

Borderline rule

buffer_lead_seconds >= 60 is borderline when the lead is not falling. This means playback has usable headroom, but not enough to be called healthy.

Slow probe rule

A slow result means contiguous playback lead is below 60 seconds, falling, or unavailable and the Mbps fallback also failed. Slow rows are scheduled for reprobe after 3600 seconds rather than being immediately discarded.

Quarantine rule

Slow quarantine requires confirmation from 2 distinct lanes. This prevents one bad VPN lane from deleting or replacing a variant by itself.

Missing bucket nudge

If verified resolution buckets are missing, the worker can nudge completion search after every 3 relevant checks so the catalog keeps trying to fill the missing bucket.

Lane leases, worker slots, and cancellation semantics
Lease owner

Health uses lane-manager leases with owner completion-health-worker. Swarm leases use task type health-swarm; speed probes use health-probe.

Probe lane policy

The probe policy is dedicated_lanes6_9_parallel_health. Lanes 6-9 run health swarm and speed checks through persistent libtorrent daemons with configurable parallel slots for both worker types.

Slot cards

Each slot card shows the claimed row, stage, lane, result state, speed, and message. A slot returning to idle means the claim was cleared and the lane lease was released.

Clean stop

Clean Stop asks the worker loop to stop after current work reaches a safe boundary. Running subprocesses are allowed to finish instead of being killed mid-check.

Hard cancel

Hard Cancel is the emergency path. It marks the worker for cancellation and is expected to stop active work aggressively when the lane or subprocess is wedged.

Sibling slots

The dashboard can add or remove sibling worker slots. Swarm and probe workers have independent slot counts and independent maximums, so one side can be scaled without changing the other.

Color-coded state legend
healthy

The row passed its current health requirement. For probes, the average speed met the bucket gate or the selected file was effectively complete.

running / claimed

A worker slot owns the row right now. The matching claim token should clear when the check persists its result.

borderline_probe

The variant was not a clean healthy pass, but it showed enough near-required speed to stay visible as borderline instead of immediately slow/dead.

weak_swarm

The swarm exists but its observed seed/peer/availability evidence is weak enough that operators should treat it as risky.

slow_probe

The measured average speed missed the required gate. The row is retained for reprobe and may later be quarantined only after distinct-lane confirmation.

dead / changed

The magnet appears unusable, mismatched, or no longer represents the saved media. Confirmed dead or changed rows can trigger catalog reset and requeue work.

check_error

The worker hit an exception or probe failure that prevented a clean classification. Previous usable health can be preserved for transient errors.

pending

The row exists in inventory but has not yet completed the relevant swarm or probe check.

Persistence and history: what gets written where
StorePurposeImportant fieldsHow the dashboard uses it
variant_healthCurrent inventory row and queue state.Health state, swarm state, probe state, claim tokens, next due time, speed stats, swarm stats, errors, check counts.Inventory table, FIFO queue summaries, counts, filters, slow/borderline/dead totals.
check_runsAppend-only history of individual checks.Check type, result state, previous JSON, current JSON, lane summary, VPN origin, required speed, measured speed, average speed, sample count.Recent history panes, 24h check counts, average swarm/probe durations, debugging evidence.
worker slotsLive slot readout for active workers.Slot index, state, label, resolution bucket, lane, stage, result, current speed, message.Active slot cards for Swarm FIFO and Speed Probe FIFO.
worker flagsControl-plane state for start/stop behavior.Worker PID, state, stop requested, hard cancel requested, permanent-off state.Top status strip, On buttons, Clean Stop, Permanent Off, Hard Cancel.

Transient error preservation is intentional. Prior useful states such as healthy, borderline_probe, slow_probe, and weak_swarm are not casually erased by a single temporary failure.

Operator interpretation: how to read the page while it is running
  • Swarm FIFO state shows whether the metadata/swarm worker is running, stopped, starting, or cancelled.
  • Speed Probe state shows whether stream-speed measurement is running separately from swarm checks.
  • Swarm today and Probe today count completed checks in the last 24 hours, excluding quiet-lane waits.
  • Avg swarm and Avg probe split the average check duration by check type so slow speed probes do not hide fast swarm checks.
  • FIFO queue lists the rows that are actually waiting next, not a legacy schedule list.
  • Recent history is the fastest place to verify whether a row was judged healthy, borderline, slow, dead, changed, or errored.
  • Diagnostics exposes the raw worker DB path, flags, lanes, schedule normalization, stale-warning controls, and live worker log for deeper debugging.

System Readout

Health state, FIFO pressure, speed-probe quality, and today throughput without mixing controls into the readout.

Health Command

Waiting for live Health worker status.

stopped
Latest check--
ModeFIFO
Next duecontinuous
Worker DB--
Healthy0
Slow0
Borderline0
Dead0
Swarm FIFO stopped

Waiting 0 | today 0 | forecast --

Speed Probe stopped

Waiting 0 | today 0 | forecast --

Average swarm --

No forecast data loaded.

Average probe --

No forecast data loaded.

Worker Controls

Swarm and speed probes stay separated so scaling, stopping, and emergency actions are easy to scan.

Swarm Worker

Metadata, identity, seed, peer, and availability checks.

stopped
Workers--
Active0
Waiting0
Forecast--
Flagsidle
Lane capacity--

Speed Probe Worker

Stream-speed checks, buffer lead, and slow-probe reprobes.

stopped
Workers--
Active0
Waiting0
Forecast--
Flagsidle
Lane capacity--

Live Work

Active slots, FIFO pressure, and recent outcomes are separated by worker type.

Swarm Active Slots

--

Swarm FIFO Queue

--

Swarm Recent History

--

Speed Probe Active Slots

--

Speed Probe FIFO Queue

--

Speed Probe Recent History

--

Health Inventory

Saved health rows with streamability, swarm state, lane outcome, quarantine, and requeue context.

No health rows loaded yet.
Page 1

Diagnostics

Worker DB, flags, lanes, schedule normalization, and raw log.

stopped
Worker DB--
Flagsidle
Lanes--
Combined state--
Old schedule rows will be cleared for FIFO mode.
No log output yet.

Reference Manual

Full Health Worker Execution Manual with architecture, lifecycle, queue rules, states, storage, and operator guidance.

reference
Loading the full Health Worker Execution Manual.

Disk Management

Passive dry-run pressure monitor for V6 completion downloads. It records what the future controller would pause or allow, but enforcement is off.

loading
Mode: dry run Updated: -- History DB: --
MainBulk free space --

Waiting for storage snapshot.

Selected remaining--
Projected free--
Would pause--
Cleanup-held--
Hard reserve--
Soft reserve--
Active qB work--
Stale qB debris--

Dry-Run Decisions

Items are sorted like the eventual controller: real completion work before probes, then smallest remaining payload first.

Would Continue

No active decisions yet.

Would Pause

No pauses recommended.

Lane Readout

Recent Snapshots

Cleanup Worker

Queue-less janitor for disposable completion artifacts across the bulk roots and worker-run state roots.

stopped
Worker DB: -- Flags: --
Loop--
Grace--
Last sweep--
Deleted items0
Deleted bytes0 B
Protected refs0

Live Log

Sweep loop, live reference collection, and deletion decisions.

No log output yet.

Scope

Loading the disposable cleanup roots.

Recent Deletions

Last deleted items across recent sweeps.

DB Integrity

Snapshot caps, write gate state, semantic checks, and restore protections for the SQLite databases that keep the library coherent.

--
Guardian DB: -- Root backups: -- Bulk backups: --
Guardian warning.

Catalog Interpretation Rules

Rules that explain how raw title metadata is interpreted before the app, dailies, completion queue, and DB Library decide what is visible or complete.

Placeholder episodes: exact IMDb shells like Episode #4.1 stay metadata-only until they gain a real title, runtime, plot, rating, or past release datedocumented
Completion-eligible seasons: automatic completion and dailies use only seasons with completion-eligible episodesdocumented
Series completeness: verified coverage for every eligible season is complete; placeholder-only future seasons do not block app visibilitydocumented
Verified buckets: verified means the source was proven playable for that target and bucket; missing optional buckets do not hide a titledocumented
Health and quarantine exclusions: bad quick-start or quarantine state can remove a source from daily selection without deleting catalog metadatadocumented
Combined episode coverage: multi-episode files such as S06E01-E02 count for every covered official episode before completeness is decideddocumented
Latest snapshot--
Verification--
Root usage--
Bulk usage--
Semantic checks--
Boot preflight--
IMDb datasets--
IMDb IDs added--

Protection Layers

What the system does before, during, and after database mutations.

SQLite backup API snapshots before guarded mutationsenabled
quick_check on every protected SQLite copyenabled
optional integrity_check for deep verification and restoresenabled
foreign_key_check on protected SQLite databasesenabled
post-mutation semantic checks for published segment consistencyenabled
write gate blocks failed snapshots, checks, or restoresenabled
verified restore path with emergency snapshotenabled
snapshot manifest with SHA256 and protected item inventoryenabled
retention and byte-cap pruningenabled
boot preflight blocks workers when protected DBs or VPN lanes are unsafeenabled
stale VPN namespace detection and automatic lane rebuild before qB startsenabled

Semantic Metrics

Domain checks that catch structurally valid but logically broken data.

Protected Databases And Files

Every item included in guardian snapshots, with live existence and size.

IMDb Dataset Updates

Daily 10:00 dataset ingestion into the title catalog used by completion workers, dailies, TV search, and mobile APIs.

No updater run recorded yetwaiting

Recent Guardian Events

Snapshot, prune, write-gate, verification, and restore decisions.

Users & Tokens

Household access tokens, viewing profiles, and root-backed player cache ownership.

Episode cache2
Movie cache1
Handoff grace60s
Untouched TTL72h
Player cache root--

Generate Token

Create a reusable 6-digit household access token.

No household token generated.

Household Tokens

Reusable household access tokens and their claim state.

Households & Profiles

Profiles own watch history, active streams, prefetched files, cached movies, and cleanup timing.

Live Activity

Watching and prefetch slots currently attached to the shared player streamer.

User Slot Title State Swarm Speed Lane Cache
No live streams.

User Activity

Live and historical mobile playback, downloads, prefetches, successes, failures, cancellations, and cleanup outcomes.

Active Streams0
Active Downloads0
Completed0
Failed / Cancelled0
Last User Seen--

Filters

Last 24 hours | exact events plus inferred legacy history.

Live Now

Current watching, downloading, prefetching, and app/player presence by user.

Waiting for activity.
User Type Title State Progress Speed Swarm Updated
No live user activity.

Recent Timeline

Exact activity events recorded after this dashboard update.

No exact activity events in this window yet.

Inferred History

Best-effort rows from older stream, progress, and scope tables.

No inferred activity in this window.

Live App Viewport

Only titles currently visible in an open Android app appear here, plus explicitly labeled startup and Continue Watching session scope. Reports update in place.

waiting
Users0
Tiles0
Updated--
Expires--

How User Scope Works

This is the operating contract for User / Global Scope. The system keeps likely playback torrents peer-hot for the active Android user without intentionally downloading media bytes before Play. It is not the old global pin panel, not a byte prebuffer scheduler, and not a root-pressure control surface.

Scope Inputs

  • startup_prediction starts when the app foregrounds. The server predicts the first four non-empty App Layout rows before Android finishes rendering.
  • Actual viewport scope comes from POST /api/mobile/user-scope/visible-tiles after Compose measures visible tiles.
  • Continue Watching session scope includes the 5 most recent Continue Watching items while the app is open, plus any Continue Watching tiles currently visible in the viewport.
  • Search scope is reported by the search screen and behaves like regular scope unless an explicit episode is supplied.
  • inactive scope means the app closed, backgrounded, settings opened, or the session is otherwise no longer browsing. It clears scope immediately.

App Layout Rules

  • Prediction never invents row order. It reads the same generated daily_picks.position rows used by Android home.
  • Dashboard App Layout row order, enabled state, row type, category CSV order, sort_mode, tile size, and tile ratio all affect what can be predicted.
  • Row save, delete, reorder, category import, and category delete invalidate today's generated picks so the next home load and app-open prediction use the current layout.
  • Regular rows predict only leading likely-visible tiles using Android tile math. Continue Watching predicts the 5 most recent session items.

Episodes And Identity

  • Regular show tiles are separate from Continue Watching tiles even when both share the same IMDb id.
  • Regular series scope resolves to the first regular episode, usually S01E01.
  • Continue Watching scope resolves to the resume season and episode from user progress or the tile payload.
  • Cleanup follows the resolved source fingerprint, not IMDb id alone, so two rows for the same show can keep different episodes hot.

Peer-Hot Meaning

  • Peer-hot means metadata, peers, seeds, and selected file information are actively discovered and maintained in the shared lane-10 torrent daemon.
  • User Scope aliases run with metadata_only=true, peer_hot=true, and prebuffer_only=false.
  • User Scope must not intentionally download playable title media bytes before Play. Artwork now loads lazily from Android image requests, and proactive detail asset pre-send is disabled.
  • When Play matches a peer-hot warmup, the alias is promoted to the user's watching slot and normal playback startup begins downloading then.

Status Labels

  • discovering means queued or resolving; metadata and peers are not ready enough yet.
  • metadata ready means torrent metadata and file selection are known, but the alias has not proven a peer-hot runtime state.
  • peer hot means metadata-only peer discovery is alive and maintaining swarm information.
  • activated means a matching warmup is attached to a real active player stream and the Android app has sent fresh player_active=true presence. It should not appear for idle browsing.
  • failed means the warmup hit a terminal error and will not be used for handoff.

Correction And Cleanup

  • Startup-predicted regular/banner entries get a 5 second grace window.
  • The first real viewport report confirms matching entries, adds true visible tiles, and keeps unexpired predictions only until their grace expires.
  • After grace, predicted-only entries detach and unused peer-hot aliases stop unless another user still references the source or it became an active player stream.
  • Inactive reports clear viewport, prediction, and Continue Watching session scope immediately.
  • Removed legacy behavior stays removed: no old settings forms, no global pinned sections, no byte prebuffer counters, no root-pressure panels, and no background maintenance controls.

Dailies

Daily home rows picked from verified DB Library titles for the Android app.

Service date--
Total picks0
Next roll--
Pin expiry--
Loading dailies Reading today's global home rows.

App Layout

Configure Android home rows, category feeds, and layout controls independently from today's generated dailies list.

Editable Rows

Tile rows drive generated Android home rows. Banner rows drive the featured slideshow. Continue Watching rows are personalized per account and only appear in Android after watch history exists.

Loading editable row config...

Category Imports

Upload CSV files to create category pools. Dailies only choose from categories that are selected on active App Layout rows.

How to prepare the CSV Required columns: category_name and parent_imdb_id. Aliases also work: category_title, category, or name; and imdb_id or parent_id. One title per row. Parent IDs must be IMDb title IDs like tt0068646. Optional columns: position, title_hint, and notes. Example: category_name,parent_imdb_id,position,title_hint then Crime Favorites,tt0068646,1,The Godfather. Large files are fine: the browser uploads the file directly and the server parses the cached CSV.
Choose a CSV to preview before importing.
Loading imported category files...

TV-App Layout

Configure independent Samsung TV home rows. Poster rows and banner slideshows use CSV categories; Continue Watching is personalized per account.

Loading TV row config...

Artwork / Images

Stored server cache for trailer files, transparent logos, posters, banners, and Android episode stills. Downloads use the original cached files.

Artwork Worker

Stopped

24/7 cache completion for verified DB Library titles over VPN lanes 1, 2, and 3.

Verified titles0
Queue depth0
Bytes written0 B
Ready tasks0
Skipped0
Failures0
Deferred0
Trailer lock0 / 8
Trailer nextNow
Trailer laneLane 1
Trailer backlog0
Artwork lock0 / 50
Artwork nextNow
Artwork backlog0

Live Queue

No worker activity yetStart or sweep the worker to build the cache.

Recent Failures

No recent failuresErrors will appear here with the title and phase.
Worker log
No log output yet.

Trailers

Cached trailer videos used by the Android detail hero.

Total trailers0
Stored files0
Ready / Error0 / 0
Video size0 B
Budget used0%
No trailers loaded yet.
Trailer cache root: --
Loading trailer storage Reading server-side trailer cache metadata.
Page 1 of 1

Logos

Stored transparent logo assets from the persistent artwork cache.

Total logos0
Cache size0 B
Ready / Error0 / 0
Budget used0%
No logos loaded yet.
Loading logos Reading cached transparent logo rows.
Page 1 of 1

Images / Posters / Banners

Stored posters, banners, continue banners, and episode stills.

Total images0
Cache size0 B
Budget used0%
Ready / Error0 / 0
Episodes0
No images loaded yet.
Loading artwork Reading the persistent server image cache.
Page 1 of 1
Reference manual

Artwork Gathering Mechanics

Everything on this page is built from verified DB Library titles, persistent server cache rows, and a worker that fills missing artwork without making the Android app wait on expensive searches.

Cache-first
01Banners

Fetch poster, portrait banner slots, and the default banner before any logo work so Android rows have a visual fallback.

02Logos

Resolve transparent title logos, normalize them to 192px height, OCR-gate them, then mirror the same clean source into full and small logo rows.

03Episodes

For complete series, cache stills only for concrete IMDb episode IDs and official episode numbers that belong to visible seasons.

04Continue

Create 16:9 continue-watching banners from textless still frames so resume rows never depend on portrait artwork.

05Trailers

Download trailer media after non-trailer artwork so heavy video work does not starve posters, banners, logos, or stills.

Scheduler

Who Gets Work

  • Only verified DB Library titles enter the artwork queue; unavailable, dead, incomplete, failed-check, and rejected targets are ignored.
  • Each sweep builds title tasks from missing or stale cache rows and respects the fixed phase order: banners → logo → episodes → continue → trailer.
  • Recent hard failures stay under a retry guard, while transient VPN, DNS, rate-limit, and database-lock failures defer instead of poisoning the title.
Network

Lanes And Throttle Rules

  • Artwork image and Google/TMDB logo searches run through VPN namespaces v6lane1, v6lane2, and v6lane3.
  • Non-trailer artwork is capped at 15 title starts per hour by default; trailer downloads are capped separately at 4 per hour with spacing.
  • Trailers use direct host egress by design, while image lookups keep the rotating VPN policy and record dashboard egress telemetry.
Banners

Posters, Hero Slots, Continue Frames

  • Posters come from upstream image resolution and are optimized to WebP under the shared artwork cache format.
  • Banner and continue candidates must be still-frame artwork, match the required aspect profile, and pass text/letterbox rejection before storage.
  • The first accepted portrait banner is mirrored into the generic banner row; all title banner slots keep their own slot files and metadata.
Logos

Transparent Logo Safety

  • Logo search tries TMDB logo pages first, then Google Images through the interactive, headless, and HTML fallback paths.
  • Every PNG is normalized, cropped to visible alpha, resized to LOGO_NORMALIZED_HEIGHT, and rejected if it is black-only.
  • Tesseract OCR runs on light and dark composites; readable words outside the target title reject that candidate and the worker retries the next URL.
  • The logo-specific format logo-ocr-h192-v4 intentionally makes old logo rows stale after logo size or OCR policy changes.
Cache

Storage And Invalidation

  • Persistent files live under /var/lib/v6-server/artwork-cache/persistent/{imdb}/; trailer files live under the bulk media root.
  • Rows are keyed by service date, IMDb ID, and image kind; ready rows must have a matching file, content type, and current format version.
  • Android cache keys are versioned separately, so full-logo-h192-ocr-v4 and small-logo-h192-ocr-v4 force phones to refetch corrected logos.
  • Pruning preserves the active row, honors the cache budget, and keeps downloads pointed at original cached files rather than resized previews.
Android

Lazy Fetch Contract

  • The phone receives artwork URLs and stable cache keys; it does not own source search, logo OCR, banner filtering, or trailer acquisition.
  • Mobile endpoints lazily fetch missing or stale rows through the same cache functions as the worker, so manual browsing and app requests obey the same policy.
  • Search, detail, daily home, continue watching, and user-scope targets all point back to these server cache rows instead of duplicating artwork logic.
Episodes

Series Still Selection

  • Episode stills are fetched only for series with complete, concrete season metadata and valid tt episode IDs.
  • Placeholder future episodes and unofficial season shells are skipped so artwork work does not imply a playable or visible episode.
  • Stored episode art is cropped to 16:9 WebP for Android rows and counted separately in the Images summary.
Operators

Buttons And Recovery

  • Start keeps the background worker alive; Sweep Now asks the running worker to rescan immediately.
  • Clean Stop lets in-flight work wind down; Hard Cancel terminates now and marks running tasks interrupted.
  • Wipe Logo PNG Cache clears logo rows only; Wipe All Artwork Cache clears image rows and files so the worker rebuilds from policy.
Why

The Peaky Blinders Rule

  • Logo sources can return sequel, spin-off, episode, or subtitle logos that still share title tokens with the real show.
  • OCR rejects extra readable text such as Immortal Man for a Peaky Blinders target, then retries another candidate instead of storing a mismatch.
  • Blank OCR is treated as inconclusive rather than bad, because stylized transparent logos sometimes defeat OCR even when the source is correct.
Golden path Verified title enters a sweep, the worker fills cache rows in phase order, mobile endpoints reuse those same rows, stale format versions trigger refetch, and Android cache signatures make corrected artwork visible on device.

DB Library

Targets0
Movies0
Complete series0
Incomplete series0
Movies/day 7d0
Seasons/day 7d0
Verified variants0
Unavailable0
Failed attempts0
Latest update--
IMDb update--
New IMDb titles0
New episode IDs0
No rows loaded yet.
Loading catalog Reading the completion catalog database.
Page 1

Failure Mailbox

Completion-worker triage for search, LM, magnet, dialogue, torrent, packaging, legacy finalization, and runtime failures.

Mailbox DB: --
Open0
Resolved0
Dialogue0
LM / Search0
Torrent0
Packaging / Legacy0
Latest--
No failures loaded yet.
Loading failures Reading the completion failure mailbox.
Page 1

Settings

Runtime knobs for completion search, subtitle providers, and VPN lanes. Completion and dialogue settings are saved to the worker runtime file so they survive dashboard restarts and are picked up by new worker runs.

Settings: -- Runtime: -- Lane root: --
Completion Search

Torrent Source URLs

loading

The season and movie completion workers use these sources when searching for torrent candidates. Each row maps to the simulator source format: home URL, optional search URL template, and parser profile.

Active sources --
Default source file --
Worker behavior --
Templates may use {query}, {title}, {title_slug}, {imdb_id}, {season}, {episode}, {season_padded}, {episode_padded}, and {sxe}. Profiles are 1 TPB-style pages, 2 cell/link pages, and 3 APIBay JSON.
Waiting for settings...
Completion Dialogue

Subtitle Providers

not configured

Used by the completion worker to verify selected media against episode/movie dialogue before cataloging and packaging.

Runtime settings --
Current SubDL key --
Provider order SubDL
SubDL network VPN Lane 1 / v6lane1
Leaving the API key field blank preserves the existing stored key. Provider calls and subtitle downloads run server-side through VPN Lane 1 (v6lane1); keys are never sent to browser code after saving.
Waiting for settings...
Torrent Payload Network

Completion Download Route

loading

This only changes qBittorrent payload downloads for season/movie completion. Search pages, APIs, subtitle providers, metadata fetches, health checks, and player streams keep using VPN lanes.

Current route --
Direct qB service --
Direct qB URL --
Direct downloads --
Saving this clean-stops active completion torrent stages, requeues those downloads, and restarts previously running season/movie workers under the selected route. Existing finalization state is not destroyed.
Waiting for settings...
Completion Workers

IDLE / FULLSPEED Autoscaling

loading

Keeps completion siblings low while mobile or TV users are active, then opens extra season/movie slots after the quiet window.

Current mode --
Target slots --
Activity window --
Last scale action --

VPN Lanes

Lanes 1-3 run completion and artwork work. Lanes 4-5 run repair qBittorrent work. Lanes 6-9 run health libtorrent checks, and lane 10 is reserved for user playback and config proving.

VPN Bulk Import

Config Zips and Torrent Ports

operator

Apply one AirVPN WireGuard zip to selected lanes and update forwarded torrent ports in one save.

Bulk zip import chooses distinct WireGuard endpoints per selected lane when the archive contains enough configs. Port lines use lane=port.
Waiting for input...