using System.Text.Json.Serialization;
namespace Jellyfin.Plugin.JRay.Models;
///
/// Extraction provenance for a (SPEC.md §1, JR-002).
///
///
/// These fields moved here from the top level in the SR-003 bump so that the
/// truth file and the Jmanifest's extraction block have the same shape.
/// They differed for no reason, and two nearly-identical shapes are what makes a
/// converter quietly drop a field.
///
/// There is no anneal_sec. It was withdrawn rather than retained
/// as a vestigial zero: presence now follows track extent, so a track survives
/// its own gaps and there is nothing to anneal (extraction AR-012/AR-013). A
/// field naming a mechanism the pipeline no longer has is actively misleading,
/// and would outlive everyone who remembers why it reads zero.
///
///
// TRACES: JR-002 | SR-003
public class TruthExtraction
{
/// Gets or sets the sampling rate used during extraction.
[JsonPropertyName("sample_fps")]
public double? SampleFps { get; set; }
///
/// Gets or sets the re-acquisition timeout that shapes window extent, in
/// seconds. Successor to the withdrawn anneal_sec.
///
///
/// This is what a consumer needs in order to interpret a window: it bounds
/// how long an actor could be unseen without the window being closed.
///
[JsonPropertyName("extinction_sec")]
public double? ExtinctionSec { get; set; }
/// Gets or sets the producing pipeline's version string.
[JsonPropertyName("pipeline_version")]
public string? PipelineVersion { get; set; }
/// Gets or sets how many references the gallery held.
[JsonPropertyName("gallery_size")]
public int? GallerySize { get; set; }
///
/// Gets or sets global or limited — the strongest single
/// quality signal when two manifests compete for one cut.
///
[JsonPropertyName("gallery_scope")]
public string? GalleryScope { get; set; }
}