this string has no description
0
revert.txt
39 lines 6.0 kB view raw
1Let me look at what I can find about the current state of the codebase to make this as accurate as possible.​​​​​​​​​​​​​​​​ 2 3I don’t have a web search tool available right now. But I have enough context from our conversation yesterday to write a solid handoff document. Let me put it together.​​​​​​​​​​​​​​​​ 4 5I’ll write this as a markdown document. 6 7plyr.fm Moderation Revert: ChromaPrint → AUDD 8Date: March 22, 2026Author: Claude (on behalf of Nate)Scope: Revert copyright detection from ChromaPrint/AcoustID back to AUDD, update versioning and documentation accordingly. 9 10Background & Why We’re Reverting 11A recent refactor replaced AUDD with a ChromaPrint + AcoustID stack to cut costs. AUDD charges per 12-second audio segment — roughly 5 requests per 60-second track — which adds up. ChromaPrint generates acoustic fingerprints for free, and AcoustID is a free crowdsourced fingerprint database, so the appeal was obvious. 12However, after thinking through plyr.fm’s actual upload patterns, this tradeoff doesn’t hold up. The majority of problematic uploads are DJ sets and tracks with uncleared samples — content that has been pitch-shifted, time-stretched, heavily mixed, or otherwise transformed from the original. ChromaPrint fingerprints the overall audio as a single unit, so a DJ set’s fingerprint won’t match any individual track in AcoustID, and a three-second sample buried in a beat has essentially no chance of matching either. AUDD handles these cases via fuzzy matching and multi-source detection that we’d essentially have to rebuild from scratch to replicate. That work is orthogonal to plyr.fm’s actual goals. 13We also have low tolerance for manual moderation — the whole point is to automate this. So reverting to AUDD is the pragmatic call. 14 15What Was Changed (That Needs Reverting) 16The ChromaPrint refactor touched the following areas: 171. The moderation service (services/moderation/)The copyright detection logic was rewritten to use ChromaPrint for fingerprinting and AcoustID for lookup. This needs to be reverted to the AUDD-based implementation. Before the ChromaPrint work was introduced, there was a custom numerical confidence scoring system derived from AUDD’s binary match results (AUDD doesn’t return a confidence score natively — it just tells you whether any of the 12-second segments matched). That confidence heuristic needs to come back too. Don’t just restore the AUDD API calls — make sure the confidence scoring logic is fully restored. 182. DependenciesRemove ChromaPrint and any AcoustID client libraries that were added. Restore the AUDD client/HTTP integration. Check Cargo.toml (the moderation service is Rust) for any new deps that need to go. 193. Environment / secretsThe AUDD API key should still be in the secrets configuration. Verify it’s wired back up. ChromaPrint doesn’t require a key, so if you removed the AUDD key env var from the config, add it back. 204. Version bumpAfter the revert, bump the moderation service version. This is annoying but necessary — the status maintenance workflow reads the version and references it in automated status updates (more on that below). The version should reflect that this is a meaningful behavioral change, not just a patch. 21 22Documentation Updates 23status.md / status maintenance workflowThe automated status workflow already ran and proudly announced the removal of AUDD as a cost-saving improvement. That description is now stale and should be updated to reflect the revert and the reasoning — something honest like: “Reverted copyright detection to AUDD after determining that ChromaPrint/AcoustID cannot reliably catch DJ sets and tracks with uncleared samples, which are the primary vectors for copyright violations on plyr.fm.” 24docs/ (internal and public)If any documentation was updated to describe the ChromaPrint/AcoustID pipeline, revert those changes too. The moderation docs should accurately describe AUDD as the fingerprinting backend, including the note about deriving confidence scores from segment match counts since AUDD doesn’t return them natively. 25 26Confidence Score Heuristic (Important) 27This is worth preserving carefully. AUDD’s API returns whether segments matched, but not a score. Before the ChromaPrint rewrite, there was logic to derive a numerical confidence value — likely based on the ratio of matching segments out of total segments checked, possibly weighted or thresholded. This matters because the plan is to eventually feed this score into Osprey (roost.tools rules engine, already used by Bluesky) to define labeling rules like “if confidence > X, emit copyright-suspected label.” Without a meaningful score, Osprey rules are hard to write. Make sure the heuristic comes back intact. 28 29Testing 30Once reverted, upload a few test tracks that are known to be copyrighted and verify AUDD catches them. Specifically test: 31 ∙ A clean studio recording (should match easily) 32 ∙ A DJ set or mix containing a recognizable track (the harder case) 33 ∙ A track with an obvious sample (harder still) 34If you don’t have test files handy, a 30-second clip of anything on a major label will confirm the basic pipeline is working. 35 36What’s Next (Not In Scope For This Task) 37After this revert is stable, the next planned feature is audio file replacement — allowing users to swap out the audio file associated with an existing track. This is nontrivial because the audio CID is embedded in the ATProto track record, and updating it requires updating the record on the user’s PDS. ~70% of existing tracks have their audio in Cloudflare R2 rather than as PDS blobs, so the replacement logic needs to handle both storage backends. New uploads already default to PDS blob storage. This is a separate task and should not be part of this revert. 38 39Let me know if you want me to adjust the tone, add more technical specifics, or turn this into a proper docx.​​​​​​​​​​​​​​​​