# Rindle v0.1.5 - Table of Contents

Phoenix/Ecto-native media lifecycle library. Media, made durable.

## Pages

- [Rindle](readme.md)
- [Running Rindle AV Profiles](running.md)

- Guides
  - [Getting Started with Rindle](getting_started.md)
  - [Upgrading Existing Adopters](upgrading.md)
  - [Core Concepts](core_concepts.md)
  - [Storage Capabilities](storage_capabilities.md)
  - [Profiles](profiles.md)
  - [Secure Delivery](secure_delivery.md)
  - [Streaming Providers](streaming_providers.md)
  - [Background Processing](background_processing.md)
  - [Operations](operations.md)
  - [Release Publishing](release_publish.md)
  - [Troubleshooting](troubleshooting.md)

## Modules

- [Rindle.AV.Capability](Rindle.AV.Capability.md): Domain vocabulary for processing capabilities.

- [Rindle.AV.Ffprobe](Rindle.AV.Ffprobe.md): FFprobe metadata extractor shim.
- [Rindle.AV.MetadataSanitizer](Rindle.AV.MetadataSanitizer.md): Container-metadata sanitization for untrusted FFprobe output.
- [Rindle.AV.Subprocess](Rindle.AV.Subprocess.md): MuonTrap execution wrapper + 4-cap enforcement.

- [Rindle.Capability](Rindle.Capability.md): Aggregates Rindle runtime capability surfaces for ops/doctor consumers.
- [Rindle.Delivery.ContentDisposition](Rindle.Delivery.ContentDisposition.md): Normalizes caller-supplied download disposition intent.
- [Rindle.Delivery.LocalPlug](Rindle.Delivery.LocalPlug.md): Dev-parity-only local playback Plug for `Rindle.Storage.Local`.
- [Rindle.Delivery.WebhookBodyReader](Rindle.Delivery.WebhookBodyReader.md): Raw-body cache for `Rindle.Delivery.WebhookPlug`.
- [Rindle.Delivery.WebhookPlug](Rindle.Delivery.WebhookPlug.md): Mountable provider-aware Plug for streaming-provider webhooks.
- [Rindle.Domain.MediaProviderAsset](Rindle.Domain.MediaProviderAsset.md): Ecto schema for a provider-side asset row (Phase 33 — `media_provider_assets`).
- [Rindle.Ops.OrphanReaper](Rindle.Ops.OrphanReaper.md): Scans a configured temporary directory and cleans up files older than a threshold.
Prevents storage bloat from orphaned AV temporary files.

- [Rindle.Ops.SweepOrphanedTempFiles](Rindle.Ops.SweepOrphanedTempFiles.md): Dedicated recursive sweeper for `Rindle.tmp/` AV run directories.
- [Rindle.Probe](Rindle.Probe.md): Behaviour contract for content-analysis probes.
- [Rindle.Probe.AVProbe](Rindle.Probe.AVProbe.md): FFprobe-backed probe for video and audio. Wraps `Rindle.AV.Ffprobe.probe/1`
and reshapes raw FFprobe JSON into `Rindle.Probe.result()`.
- [Rindle.Probe.Image](Rindle.Probe.Image.md): Image probe adapter using the [Image](https://hex.pm/packages/image) library
(powered by libvips/Vix). Symmetric with `Rindle.Processor.Image`.
- [Rindle.Processor.AV](Rindle.Processor.AV.md): Public AV processor boundary for preset-led video, audio, and waveform recipes.

- [Rindle.Processor.AV.OutputProbe](Rindle.Processor.AV.OutputProbe.md): Post-condition verification for generated AV outputs.

- [Rindle.Processor.AV.RuntimeGuard](Rindle.Processor.AV.RuntimeGuard.md): Runtime admission checks for AV processing.

- [Rindle.Processor.Ffmpeg](Rindle.Processor.Ffmpeg.md): FFmpeg processor adapter using the `Rindle.Processor` behaviour and integrating with the MuonTrap subprocess wrapper.

- [Rindle.Profile.Presets.MuxWeb](Rindle.Profile.Presets.MuxWeb.md): Mux streaming preset — the canonical AV web preset PLUS streaming opt-in.
- [Rindle.Profile.Presets.Web](Rindle.Profile.Presets.Web.md): Stock AV preset helpers for the canonical web onboarding story.
- [Rindle.Security.Argv](Rindle.Security.Argv.md): Argv sanitization and format validation.

- [Rindle.Streaming.Provider](Rindle.Streaming.Provider.md): Behaviour contract for streaming providers (Phase 33 — promoted from v1.4 reserved shim).
- [Rindle.Streaming.Provider.Mux](Rindle.Streaming.Provider.Mux.md): Mux REST adapter implementing `Rindle.Streaming.Provider`.
- [Rindle.Workers.IngestProviderWebhook](Rindle.Workers.IngestProviderWebhook.md): Oban worker driving idempotent ingest of streaming-provider webhooks.
- [Rindle.Workers.MuxIngestVariant](Rindle.Workers.MuxIngestVariant.md): Push a Rindle-produced AV variant to Mux from server context.
- [Rindle.Workers.MuxSyncCoordinator](Rindle.Workers.MuxSyncCoordinator.md): Oban cron worker that fans out per-row sync jobs for `media_provider_assets`
rows in (`processing`, `uploading`) older than `provider_polling_floor_seconds`.
- [Rindle.Workers.MuxSyncProviderAsset](Rindle.Workers.MuxSyncProviderAsset.md): Per-row defensive sync for `media_provider_assets` rows that may have
missed a webhook. Called by `Rindle.Workers.MuxSyncCoordinator` (Phase 34
ships the cron coordinator; Phase 35 wires up webhook-driven sync).

- Facade
  - [Rindle](Rindle.md): Phoenix/Ecto-native media lifecycle library.
  - [Rindle.Error](Rindle.Error.md): Exception raised by bang variants on the `Rindle` facade when an
operation fails for a non-changeset reason.

- Profiles
  - [Rindle.Profile](Rindle.Profile.md): Profile DSL used to declare upload policy and variant recipes.

- Upload
  - [Rindle.Upload.Broker](Rindle.Upload.Broker.md): Manages direct-to-storage upload sessions.

- Delivery
  - [Rindle.Delivery](Rindle.Delivery.md): Delivery policy and URL resolution helpers.

- Optional Integrations
  - [Rindle.HTML](Rindle.HTML.md): Phoenix template helpers for responsive media markup.
  - [Rindle.LiveView](Rindle.LiveView.md): LiveView integration helpers for direct-to-storage uploads via Rindle.

- Extension Points
  - [Rindle.Analyzer](Rindle.Analyzer.md): Behaviour contract for metadata analyzers.
  - [Rindle.Authorizer](Rindle.Authorizer.md): Behaviour contract for delivery authorization hooks.
  - [Rindle.Processor](Rindle.Processor.md): Behaviour contract for media processors that generate variants.
  - [Rindle.Scanner](Rindle.Scanner.md): Behaviour contract for security scanning before promotion.

- Storage and Processor Adapters
  - [Rindle.Processor.Image](Rindle.Processor.Image.md): Image processor adapter using the [Image](https://hex.pm/packages/image) library
(powered by libvips/Vix).
  - [Rindle.Storage](Rindle.Storage.md): Behaviour contract for all storage adapters used by Rindle.
  - [Rindle.Storage.GCS](Rindle.Storage.GCS.md): Google Cloud Storage adapter using `goth ~> 1.4` (auth) + `finch ~> 0.21` (HTTP) +
`gcs_signed_url ~> 0.4.6` (V4 signing).
  - [Rindle.Storage.Local](Rindle.Storage.Local.md): Local filesystem storage adapter.

  - [Rindle.Storage.S3](Rindle.Storage.S3.md): S3-compatible storage adapter powered by ExAws.

- Operations
  - [Rindle.Workers.AbortIncompleteUploads](Rindle.Workers.AbortIncompleteUploads.md): Oban cron worker for transitioning incomplete upload sessions to `expired`.
  - [Rindle.Workers.CleanupOrphans](Rindle.Workers.CleanupOrphans.md): Oban cron worker for removing expired upload sessions and their staged objects.

- Data Types
  - [Rindle.Domain.MediaAsset](Rindle.Domain.MediaAsset.md): Ecto schema for a media asset.
  - [Rindle.Domain.MediaAttachment](Rindle.Domain.MediaAttachment.md): Ecto schema linking a `Rindle.Domain.MediaAsset` to an owning entity.
  - [Rindle.Domain.MediaProcessingRun](Rindle.Domain.MediaProcessingRun.md): Ecto schema recording the outcome of a single processing or maintenance
operation against a media asset or variant.
  - [Rindle.Domain.MediaUploadSession](Rindle.Domain.MediaUploadSession.md): Ecto schema for a direct upload session.
  - [Rindle.Domain.MediaVariant](Rindle.Domain.MediaVariant.md): Ecto schema for a derived variant of a media asset.

## Mix Tasks

- [mix rindle.doctor](Mix.Tasks.Rindle.Doctor.md): Validates that the host environment has all necessary system dependencies installed.
- [mix rindle.runtime_status](Mix.Tasks.Rindle.RuntimeStatus.md): Reports bounded runtime diagnostics for Rindle lifecycle work.
- [mix rindle.sweep_orphaned_temp_files](Mix.Tasks.Rindle.SweepOrphanedTempFiles.md): Sweeps orphaned AV temp run directories under `Rindle.tmp/`.

- Operations
  - [mix rindle.abort_incomplete_uploads](Mix.Tasks.Rindle.AbortIncompleteUploads.md): Transitions timed-out upload sessions through the abort half of Rindle's
maintenance lane.
  - [mix rindle.backfill_metadata](Mix.Tasks.Rindle.BackfillMetadata.md): Reruns the configured analyzer for assets in `ready`, `available`, or
`degraded` states and persists the updated metadata to the database.
  - [mix rindle.cleanup_orphans](Mix.Tasks.Rindle.CleanupOrphans.md): Removes expired upload sessions and the staged objects they reference.
  - [mix rindle.regenerate_variants](Mix.Tasks.Rindle.RegenerateVariants.md): Enqueues `ProcessVariant` Oban jobs for broad stale/missing variant
regeneration, optionally filtered by profile module or variant name.
  - [mix rindle.verify_storage](Mix.Tasks.Rindle.VerifyStorage.md): Walks variant records that have a `storage_key` and HEAD-checks the storage
object via the profile's configured storage adapter.

