flower
/
All briefs
idea draft note vodmanager
epic · VOD Manager — post-review roadmap (ambassador launch...

Local VOD source cache — pull once, reuse across transcribe/encode/refine/clip

Dispatch

canonical · plan

Spec

markdown

hand-off · dispatch

Dispatch

Auto-dispatch

when it reaches planned

Design-loop

design pass before build

Direct dispatch — no refine required. The packet tells the agent to ask questions only if the request is blocked by ambiguity.

kind

No dispatch requests yet — dispatch above to generate a copy-paste packet.

provenance · append-only

Trace

live
or paste a screenshot uploading…
  1. parent set 10h ago

    Grouped under epic #272.

    agent · claude-code
  2. note added 10h ago

    Strategic layer above the clip P0-1 fix. Today, after archive we upload the source to the user's remote storage and delete the local copy — so the whole post-archive wave (transcription→audio, encoding/renditions, highlight refinement, clip cutting) RE-PULLS the full 40GB source from the very bucket we just uploaded to, each independently. A shared local source cache collapses N pulls into one. Especially valuable for OAuth-storage users (Drive/Dropbox/OneDrive pulls are slow + rate-limited). OPERATOR DECISIONS (all confirmed): 1. WARM-AT-ARCHIVE: yes — "do all the work when we first get the VOD." The source is already on local disk between VodDownloader (pull) and VodUploader (upload); instead of deleting it after upload, promote it into the cache so the post-archive wave reuses it with zero extra pulls. (Deliberately softens the delete-after-upload rule; the free-space-driven sweep keeps it safe.) 2. EVICTION: free-space-driven + max-age backstop. 3. SCOPE: source-MP4 cache (VodSourceCache) composing with the existing AudioCache (which stays as the derived-MP3 cache). Not a unified rewrite. 4. FORGE VOLUME: the 400GB "Temp workdir" at /srv/vodmanager/data/yt-dlp-tmp (config vodmanager.temp_download_path) — 370GB free. Cache lives on THIS volume, shared with the download scratch. App-root is a separate 75GB volume — keep the cache off it. DESIGN: - App: VodSourceCache with get-or-pull: localPath(Vod) → cache hit returns the local path (mtime-touch = LRU); miss pulls the source from the VOD's storage profile under a per-VOD lock (Cache::lock("vod-source:{vod_id}")) so a fan-out of jobs for the same VOD doesn't stampede N concurrent pulls — first pulls, rest reuse. - Key: {vod_id}-{file_size_bytes}.mp4 (same pattern as AudioCache; file_size is the cheap cache-buster). Store under a cache subdir on the temp volume. - Warm: in the archive path, if downstream work is queued (auto-transcribe / auto-highlights / auto-encode), MOVE the temp source into the cache instead of deleting. Else delete as today. - AudioCache composes on top: audio extraction reads the cached MP4 (or the warm-seeded one), not a fresh remote pull. - Consumers switch from ad-hoc pulls to VodSourceCache::localPath: TranscriptionDispatcher (audio extract), VodEncoder (renditions), HighlightRefinementDispatcher, the clip cutter's CutsHighlightClips trait (single + batch). The clip agent's P0-1 tactical fix (single-pull batch, AudioCache reuse) stays as belt-and-suspenders inside operations. - Sweep: vodmanager:sweep-vod-source-cache (scheduled ~per-minute, like sweep-audio-cache). Evict oldest-mtime-first whenever free bytes on the temp volume drop below (temp_min_free_bytes + buffer) REGARDLESS of the cache's own size cap — active archives always win — plus a max-age backstop. Unlinking a file a running job already opened is safe on Linux (fd survives), so no refcounts needed. - Config: cache dir, max_age_days, free-space buffer; all env/AppSettings-tunable. - Observability: log cache hit/miss + bytes-saved; optional admin cache-size view. Relates to clip track #151. Independent of the ambassador work.

    agent · claude-code
  3. participant joined 10h ago
    system · claude-code

epic · dependencies

Relationships

depends on

No dependencies — dispatchable once planned.

agents · waves

Participants

  • claude-code participant · active

trace · graph

Links

No links yet — they accrue as agents work the brief.

scope

Projects

  • vodmanager · primary

dogfood · read-only

Agent’s-eye view

The literal recall_brief payload an agent gets — same service path as the MCP tool.