docs(adr): accept ADR-0031 — canonical song identity (schema v10) - #164
Merged
Conversation
Status: Proposed → Accepted, per governance review. No semantic edits — under the repository's ADR rules (ADR-0009) an Accepted ADR is immutable; supersede it with a new one rather than editing. The decision specifies the identity hierarchy (song_id = Work, sha256 = source manifestation, EnsembleRef = span, ChunkId = chunk), curator authority with no automatic/similarity-derived backfill, cover/arrangement/ edition semantics, corpus-wide fail-closed song-holdout coverage, per-sha256 consistency + bidirectional manifest invariants, and explicit exclusions (no scoring authority, no cover detection, no silent unknown identities). This gates PR D (v10 song_id implementation). Not appended to decisions.log.md, which reserves architectural decisions for ADRs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012T7SRMiXmZe5v1imtrKMPi
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughADR-0031 status is changed from Proposed to Accepted in both the ADR document and the ADR index. ChangesADR-0031 status update
Estimated code review effort: 1 (Trivial) | ~2 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PhysShell
added a commit
that referenced
this pull request
Jul 29, 2026
Tests only, ahead of any implementation (per AGENTS.md per-commit TDD and the corpus_schema.rs "fail to compile until implemented" precedent). This commit does not compile until the v10 types land in the GREEN commit. Drives schema v10 (ADR-0031, Accepted #164): - schema-version assertion bumped to 10; - SourceRef.song_id round-trip + both pre-v10 lossless characterizations (SPEC hard rule 5); - CorpusManifest.songs as Option (absent None vs present-empty Some({}) are distinct — a songs_manifest round-trip plus a regression asserting an explicitly-empty manifest still demands every labelled source); - six song_holdout_preflight cases: accept-clean, refuse uncurated / unidentified (no sha256) / file-split-across-songs, and both manifest bidirectional checks. The cockpit web-test manifest assertion is updated to schema v10 here so it fails against the still-v9 producer, and passes once GREEN bumps it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012T7SRMiXmZe5v1imtrKMPi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Flip ADR-0031 (canonical song identity, schema v10) from Proposed → Accepted, per governance review. Docs-only, status line only.
Diff is exactly two lines:
docs/adr/0031-canonical-song-identity.md—Status: Proposed→Accepteddocs/adr/README.md— the ADR-0031 row statusNo semantic edits ride along: under ADR-0009 an Accepted ADR is immutable and is superseded by a new one, not edited. Not appended to
decisions.log.md(reserved for ADRs).Why now
The decision is fully specified — identity hierarchy (
song_id=Work,sha256=source manifestation,EnsembleRef=span,ChunkId=chunk), curator authority with no automatic/similarity backfill, cover/arrangement/edition semantics, corpus-wide fail-closed song-holdout, per-sha256consistency + bidirectional manifest invariants, and explicit exclusions (no scoring, no cover detection, no silent unknown identities). No unresolved architectural question remains.What this gates
Acceptance unblocks PR D (implementation-only): schema v10 +
SongIdnewtype +SourceRef.song_id: Option<SongId>+ pre-v10 round-trip characterization + corpus-wideHoldoutTargetSongpreflight + per-sha256consistency + optional songs-manifest bidirectional validation + typed refusals.Explicitly out of scope here and in PR D: song_id curation/backfill, production corpus cutover, track_index recovery, title-based grouping, generation/scoring changes.
🤖 Generated with Claude Code
https://claude.ai/code/session_012T7SRMiXmZe5v1imtrKMPi
Summary by CodeRabbit