Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
T
Tidal
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • PLN
  • Tidal
  • Repository

Switch branch/tag
  • Tidal
  • armada
  • tide-table
  • build_delete_manifest.py
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    feat(tide-table): build_delete_manifest — the verdict becomes a delete allowlist · bd3a680f
    `sc_generation_lens` already knows which OPAL-26 uploads are the Aug-12 first
    cut; nothing turned that verdict into something the new `sc delete --manifest`
    could execute. This does, and it is the last checkpoint before a destructive
    call, so it refuses rather than warns.
    
    In: verdicts starting STALE/ORPHAN (right permalink, wrong cut) plus every
    stray (an older cut under another slug). Out, and asserted out: verdict OK
    (that IS the ear-verified cut), NOT UPLOADED (nothing to delete), anything
    without an sc_id, and everything in `coincidences_discarded` — the lens finds
    strays by duration and on a 132-track account two unrelated tracks will share
    a length to 50 ms, which is how /au-revoir-lord-toyota (2020, and PUBLIC) and
    /saria-demo (2025) both matched an OPAL render. The date floor is re-applied
    here instead of trusting the file's own bucket names: two chances to catch a
    mistake whose cost is permanent.
    
    Every entry carries a reason citing the evidence, the artwork the pull saved,
    and the local render the upload came from — all fourteen resolve to a FLAC in
    Opal26_master/tracks/, so deleting these loses a URL and not a recording.
    
    One bug found while writing it, and it is the reason the reason strings matter:
    the first version lined a stale upload up against the newest cut BY TRACK
    NUMBER, and the Aug-12 cut had fifteen tracks where v4 has fourteen. Dropping
    Desire renumbered REVOLUTION from 15 to 14, so the manifest claimed
    "#14 Desire, 388.1s vs v4 205.6s" — 205.6s is REVOLUTION's length. A
    measurement is a comparison; an unnamed reference cites the wrong track. The
    lookup is keyed on the title slug now, and a track absent from the newest cut
    says so instead of borrowing a neighbour's duration.
    
    Dry-run against the live account: 14/14 resolved, both directions, all private,
    nothing refused. Nothing deleted — that is PLN's call.
    PLN (Algolia) authored Sep 05, 2026
    bd3a680f
build_delete_manifest.py 15.7 KB
EditWeb IDE
×

Replace build_delete_manifest.py

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.