top of page

INGEST

Ingest is the media offload + verification panel. Its job is to take a source (card/folder or an explicit file list), copy it to a destination (optionally a second backup destination), and prove the copy is correct.

Core responsibilities

1) Source acquisition

  • Accepts either:

    • a source folder (typical card/drive offload), or

    • a source file list (hand-selected files)

  • Resolves paths and builds a deterministic “job plan” (what will be copied, where it will land, and how it will be verified).

2) Copy execution

  • Copies files using a “safe write” strategy (temp output then rename) so you don’t end up with partial files that look complete.

  • Supports preserving the source folder structure or flattening into a single-level destination layout (depending on workflow).

3) Verification
Verification is an explicit job setting. It’s not implied and it’s not silent.

  • Default is hash verification (fast, reliable).

  • Optional byte-for-byte compare exists (slow, absolute).

  • “No verification” is treated as a risk state and requires an explicit user confirmation.

4) Deduplication

  • “Skip duplicates” is implemented via a persistent hash cache so repeat ingests don’t waste time/disk.

  • Cache writes are crash-safe (atomic write + recovery behavior).

Operational modes

Normal Ingest

For standard offloads.

  • Source: folder or file list

  • Destination: required

  • Backup destination: optional

  • Options: flatten/preserve structure, extension filters, verification method, skip duplicates, ignore/cache behavior

Clone Mode (selective folder cloning)

For “copy parts of this drive/card, not everything.”

  • Source: folder only

  • Selection: folder tree (choose subfolders)

  • Same copy/verify/dedupe pipeline as Normal Ingest, but the job plan is built from the selected tree nodes.

Watch Mode (continuous ingest)

For “ingest anything new that appears in this folder.”

  • Source: watch folder only (not a manual file list)

  • Tracks already-processed items internally to prevent reprocessing.

  • Preserves relative paths under the watch root so subfolders mirror cleanly.

  • Includes guardrails to prevent writing outputs back into the watched tree (classic infinite loop failure).

Safety and guardrails

Path sanity

  • Validates source/destination early.

  • Enforces approved-path rules for filesystem scanning and estimation (prevents unintended traversal).

  • Avoids symlink loops and “escape the root” traversal during size/byte estimation.

Noise control

  • Default ignore patterns exclude typical junk/dev/cache directories.

  • “Include cache” flips that policy intentionally.

  • Always-skipped system junk stays skipped because it adds risk/no value.

Automation hook (n8n webhook)

  • Optional webhook call on ingest events (and optionally include logs/metadata).

  • URL validation is strict, with protections against accidentally targeting private/local addresses unless explicitly allowed.

  • Bad webhook config blocks queueing so jobs don’t run with broken automation assumptions.

What the user experiences in practice

  • Pick source(s) → pick destination(s) → choose mode/options → queue job.

  • Panel shows progress, logs, and final status.

  • Verification/QC failures produce actionable “this file failed and why” outcomes instead of silent corruption.

INGEST.png
bottom of page