{
  "schema_version": 2,
  "status": "published",
  "show": "ulf",
  "key": "38",
  "stable_key": "ulf-038-2387490150",
  "validation_tier": "publisher_youtube_exact_enclosure_waveform_alignment",
  "source": {
    "source_feed": "https://feeds.soundcloud.com/users/soundcloud:users:441445830/sounds.rss",
    "source_guid": "tag:soundcloud,2010:tracks/2387490150",
    "source_enclosure_url": "https://feeds.soundcloud.com/stream/2387490150-uvmusicofc-underground-live-800768736.mp3",
    "source_title": "Underground Live Forever - ULF038",
    "source_enclosure_length": "62476582"
  },
  "chapters_sha256": "6ac98e07991ce27f9c4ba31b359b65ad58829c43e94b63233367618cfb0a0a61",
  "chapter_count": 14,
  "chapters_url": "https://apps.phillip.io/ulf/chapters/ulf-038-2387490150.json",
  "sidecar_path": "/Volumes/D2/Music/MusicPodcasts/.chapter-publish/ulf/chapters/ulf-038-2387490150.json",
  "publisher_validation": {
    "schemaVersion": 1,
    "status": "validated",
    "published": false,
    "sourceKind": "publisher",
    "confidence": "high",
    "sourceURL": "https://www.youtube.com/watch?v=bc4R5N_ip34",
    "sourceChannel": "UV // Underground Live Forever",
    "sourceChannelID": "UC8XJQOVDGXlzWRBz9hF2QRQ",
    "sourceAudioSHA256": "6ebbcf255c2ad01ea8eed8d44eb7fc3caa2b66c3a708ef12625ca3d6ce9d1641",
    "sourceMetadataSHA256": "09fdfcb53cac212fe37234f580d786f3dabdb273a94b0e53635f924f86370e4b",
    "localAudioSHA256": "d96889e024210e3936a02b1cb300cf5fffefcc6a316c7766f64094795103d24e",
    "localEnclosureURL": "https://feeds.soundcloud.com/stream/2387490150-uvmusicofc-underground-live-800768736.mp3",
    "alignmentSHA256": "a9f18c4d8ecbb4ab3452c460a46e41b2a61f46ce4a8dd98b5f94395d4ec24c42",
    "alignmentToolSHA256": "5073a92880aad04a305017a90a3ae57c4a0f8e334bd82118503919c8fac9ec4b",
    "mapping": "podcast_seconds = max(0, youtube_seconds - 0.02)",
    "alignmentSummary": {
      "accepted": true,
      "drift_seconds_per_hour": 8.706914306616948e-15,
      "mean_offset_seconds": -0.01999999999998394,
      "median_offset_seconds": -0.01999999999998181,
      "minimum_score": 0.8822036938201415,
      "offset_spread_seconds": 1.7763568394002505e-14,
      "search_boundary_clearance_seconds": 14.98
    },
    "chapters": [
      {
        "position": 0,
        "title": "Intro",
        "sourceStartTime": 0,
        "startTime": 0
      },
      {
        "position": 1,
        "title": "Savvas - Anamnesis [Meanwhile Horizons]",
        "sourceStartTime": 75,
        "startTime": 74.98
      },
      {
        "position": 2,
        "title": "Savvas - Amalgamation [Meanwhile Horizons]",
        "sourceStartTime": 336,
        "startTime": 335.98
      },
      {
        "position": 3,
        "title": "Marcos Fornari - Blue Dreams [PURRFECTION]",
        "sourceStartTime": 637,
        "startTime": 636.98
      },
      {
        "position": 4,
        "title": "Marcos Fornari - Paranoid [PURRFECTION]",
        "sourceStartTime": 905,
        "startTime": 904.98
      },
      {
        "position": 5,
        "title": "M.O.S. - Skywalkers (Paul Thomas Remix) [UV]",
        "sourceStartTime": 1212,
        "startTime": 1211.98
      },
      {
        "position": 6,
        "title": "Trilucid - Kasamansa [UV]",
        "sourceStartTime": 1495,
        "startTime": 1494.98
      },
      {
        "position": 7,
        "title": "ID - ID [UV]",
        "sourceStartTime": 1768,
        "startTime": 1767.98
      },
      {
        "position": 8,
        "title": "Makebo - Balance [Mango Alley]",
        "sourceStartTime": 2093,
        "startTime": 2092.98
      },
      {
        "position": 9,
        "title": "Jeff Ozmits & Miguel Ante - Crossing The Styx (DJ Ruby Remix) [UV]",
        "sourceStartTime": 2431,
        "startTime": 2430.98
      },
      {
        "position": 10,
        "title": "Facundo Sval & Dion Paola (AUS) - Atlas (Original Mix) [onedotsixtwo]",
        "sourceStartTime": 2734,
        "startTime": 2733.98
      },
      {
        "position": 11,
        "title": "Anthony Pappa, Fauxplay - Forever Seeking (Original Mix) [Early Morning]",
        "sourceStartTime": 3009,
        "startTime": 3008.98
      },
      {
        "position": 12,
        "title": "Dave Seaman - Nightfalls (Dilby Remix) [Selador]",
        "sourceStartTime": 3371,
        "startTime": 3370.98
      },
      {
        "position": 13,
        "title": "Y-Traxx - Mystery Land (Roy Rosenfeld Remix) [Serious Beats]",
        "sourceStartTime": 3648,
        "startTime": 3647.98
      }
    ],
    "limitations": [
      "Publisher whole-second chapter boundaries are retained; waveform resolution does not imply sample-accurate musical onset labels.",
      "Publisher ID - ID remains unidentified; precise timing does not identify an unreleased track.",
      "Validation applies only to these hashed masters, not future episodes or other enclosures."
    ]
  },
  "alignment_evidence": {
    "anchors": [
      {
        "matched_local_seconds": 19.98,
        "offset_seconds": -0.019999999999999574,
        "reference_anchor_seconds": 20.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6614742605783797,
        "score": 0.9282730458664287
      },
      {
        "matched_local_seconds": 64.98,
        "offset_seconds": -0.01999999999999602,
        "reference_anchor_seconds": 65.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6432026218852652,
        "score": 0.9275942664017558
      },
      {
        "matched_local_seconds": 325.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 326.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6573751460639614,
        "score": 0.9294778596442265
      },
      {
        "matched_local_seconds": 626.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 627.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6386156381713157,
        "score": 0.9049598742964047
      },
      {
        "matched_local_seconds": 894.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 895.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6323035911394275,
        "score": 0.9060703560752679
      },
      {
        "matched_local_seconds": 1201.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 1202.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.5933718180933216,
        "score": 0.8822036938201415
      },
      {
        "matched_local_seconds": 1484.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 1485.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6469531944822433,
        "score": 0.9099143954954173
      },
      {
        "matched_local_seconds": 1757.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 1758.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6366125102221115,
        "score": 0.9254618698900132
      },
      {
        "matched_local_seconds": 2082.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 2083.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.7393784253883678,
        "score": 0.9205195187182661
      },
      {
        "matched_local_seconds": 2420.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 2421.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.7104752555134289,
        "score": 0.9334958700133614
      },
      {
        "matched_local_seconds": 2723.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 2724.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6929015176793072,
        "score": 0.9395276683855796
      },
      {
        "matched_local_seconds": 2998.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 2999.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6554461665840985,
        "score": 0.92076379314442
      },
      {
        "matched_local_seconds": 3360.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 3361.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6750626107825226,
        "score": 0.9244036515787918
      },
      {
        "matched_local_seconds": 3637.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 3638.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6283160583335332,
        "score": 0.9170648876669378
      },
      {
        "matched_local_seconds": 3819.98,
        "offset_seconds": -0.01999999999998181,
        "reference_anchor_seconds": 3820.0,
        "resolution_seconds": 0.01,
        "runner_up_score": 0.6406210192163284,
        "score": 0.9177702146826516
      }
    ],
    "local": "/Users/phillco/.local/share/groovecast-prototypes/ulf-038-validation/episode.mp3",
    "method": {
      "band_count": 24,
      "features": "log-band Hann STFT power deltas, normalized per band and frame",
      "frame_size": 512,
      "hop_size": 80,
      "margin_seconds": 5.0,
      "sample_rate": 8000,
      "score": "sliding mean frame cosine similarity",
      "search_radius_seconds": 15.0,
      "window_seconds": 60.0
    },
    "reference": "/Users/phillco/.local/share/groovecast-prototypes/ulf-038-validation/youtube.webm",
    "schema_version": 1,
    "summary": {
      "accepted": true,
      "drift_seconds_per_hour": 8.706914306616948e-15,
      "mean_offset_seconds": -0.01999999999998394,
      "median_offset_seconds": -0.01999999999998181,
      "minimum_score": 0.8822036938201415,
      "offset_spread_seconds": 1.7763568394002505e-14,
      "search_boundary_clearance_seconds": 14.98
    },
    "thresholds": {
      "maximum_absolute_drift_seconds_per_hour": 0.05,
      "maximum_offset_spread_seconds": 0.05,
      "minimum_score": 0.75,
      "minimum_search_boundary_clearance_seconds": 0.5
    }
  },
  "validation_status": {
    "status": "validated",
    "published": false,
    "readyForPublication": true,
    "checkedAt": "2026-09-06T16:10:52.341562+00:00",
    "chapterCount": 14,
    "musicTrackCount": 13,
    "alignmentAnchors": 15,
    "offsetSeconds": -0.02,
    "minimumCorrelationScore": 0.8822036938201415,
    "offsetSpreadSeconds": 1.7763568394002505e-14,
    "driftSecondsPerHour": 8.706914306616948e-15,
    "acquisition": "Local existing Chrome login session with yt-dlp[default] and Deno; no persistent auth or automation changes",
    "evidence": "validated-chapters.json"
  },
  "validated_chapters_sha256": "f97a34c5f0cec4fba6fea25c3e6c5902a80dca4f789796e0a46f21260aa977d6"
}
