Skip to content

docs(adr): propose ADR-0033 — song-id curation workflow - #172

Merged
PhysShell merged 4 commits into
mainfrom
claude/adr-0033-song-curation
Jul 29, 2026
Merged

docs(adr): propose ADR-0033 — song-id curation workflow#172
PhysShell merged 4 commits into
mainfrom
claude/adr-0033-song-curation

Conversation

@PhysShell

@PhysShell PhysShell commented Jul 29, 2026

Copy link
Copy Markdown
Owner

What

Docs-only ADR-0033 (Proposed) extracting the durable decisions from the merged song-id curation workflow proposal. No new architecture — the proposal remains the detailed spec.

Files: the ADR + its docs/adr/README.md row. Status: Proposed. Exact head: 536be8aa6df36a0350f9027fa7e8be0669a922d5.

The ten binding decisions

Standalone isolated song-curation/ ownership; sha256 source unit; human authority with metadata-only non-authoritative suggestions; append-only batched CurationStoreV1-style ledger with six first-class actions (three authorized replacements); plan embeds the batch, Apply replays→derives→compares; transactional fresh-output application chain + append-only application index (batch_id reuse typed-refuses — Apply is not generally idempotent); opaque monotonic SongId + four canonical digest contracts; hard distinct-path manifest guard; fail-closed validation via core song_holdout_preflight; and a four-slice separately-gated implementation.

Prior art considered (AGENTS.md prior-art-first)

A recorded survey across four workflow categories — human-confirmed reconciliation (OpenRefine, MusicBrainz edits), append-only event sourcing (Fowler/git/CurationStoreV1), plan-before-apply with drift detection (Terraform, k8s dry-run), and versioned transactional history (Flyway/Alembic/Diesel migrations table ≈ the application index; DVC/lakeFS/Delta Lake content-addressed versioning) — with reuse/reject/decision each. Conclusion: reuse the patterns and invariants, implement natively (no external system fits Griff's source-level SongId, corpus fingerprint, dependency/MSRV posture, or fail-closed requirement); the novelty is only the composition. The identity-ontology prior art (FRBR/MusicBrainz) remains in ADR-0031, which this complements.

Gating

  • Acceptance authorizes slice 1 only; each later slice needs separate independent acceptance.
  • The controlled pilot (after slices 1–3) may write human-confirmed song_id only to its small copied subset.
  • Production / real-corpus / full-corpus labeling stays prohibited until the controlled pilot is independently accepted.
  • No change to ADR-0031/0032.

🤖 Generated with Claude Code

https://claude.ai/code/session_012T7SRMiXmZe5v1imtrKMPi

Docs-only. Extracts the durable decisions from the (merged, thrice-reviewed)
song-id curation workflow proposal into a Nygard ADR; no new architecture.
Status: Proposed — binds nothing until Accepted, and even acceptance does not
authorize corpus labeling (gated on the controlled pilot).

Records: standalone isolated song-curation/ ownership; sha256 source unit;
human authority with non-authoritative metadata-only suggestions; append-only
batched CurationStoreV1-style ledger with six first-class actions (three
authorized replacements); plan-embeds-batch with replay/derive/compare Apply;
transactional fresh-output application chain + append-only application index;
opaque monotonic SongId and four canonical digest contracts; hard distinct-path
manifest guard; fail-closed validation via core song_holdout_preflight; and a
four-slice gated implementation with corpus labeling prohibited until the pilot.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012T7SRMiXmZe5v1imtrKMPi
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds ADR-0033 for an offline, human-confirmed, transactional song-id curation workflow and registers it in the ADR index as proposed.

Changes

Song ID curation workflow

Layer / File(s) Summary
Workflow specification and ADR catalog entry
docs/adr/0033-song-id-curation-workflow.md, docs/adr/README.md
Defines the standalone tool, append-only decisions ledger, verified replay/apply process, transactional writes, deterministic SongId issuance, manifest validation, and staged rollout gates; adds ADR-0033 to the index.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related PRs

Suggested reviewers: claude

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the docs-only ADR-0033 song-id curation workflow proposal.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/adr-0033-song-curation

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d8663faf78

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/adr/0033-song-id-curation-workflow.md
PhysShell and others added 3 commits July 29, 2026 13:10
Correct two governance/semantics distortions introduced compressing the
proposal; docs-only, Status stays Proposed.

- Decision 10 + final paragraph: acceptance authorizes slice 1 only; each
  later slice needs separate acceptance; the controlled pilot (after slices
  1-3) may write human-confirmed song_id ONLY to its small copied subset;
  only production/real-corpus/full-corpus labeling stays prohibited until the
  pilot is independently accepted. (The prior text forbade the labeling the
  pilot itself requires.)
- Decision 6: Apply is not a generally-idempotent command — already-correct
  assignments are unchanged, but reuse of the same batch_id typed-refuses via
  the application index. No longer promises both "reuse is safe" and "reuse is
  refused".
- Decision 3: "No default action counts as acceptance" (unambiguous).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012T7SRMiXmZe5v1imtrKMPi
Fulfil the AGENTS.md prior-art-first rule for the non-trivial
ledger -> plan -> apply -> report -> application-index pipeline. Adds a
"Prior art considered" section surveying four workflow categories —
human-confirmed reconciliation (OpenRefine, MusicBrainz edits), append-only
event sourcing (Fowler/git/CurationStoreV1), plan-before-apply with drift
detection (Terraform, k8s dry-run), applied-once migrations (Flyway/Alembic/
Diesel), and content-addressed dataset versioning (DVC/lakeFS/Delta Lake) —
each with reuse/reject/decision, concluding: reuse the patterns and invariants,
implement natively because no external system fits Griff's source-level SongId,
corpus fingerprint, dependency/MSRV posture, or fail-closed requirement. The
identity-ontology prior art (FRBR/MusicBrainz) stays in ADR-0031; this covers
the workflow it does not.

No change to Decisions 1-10, README row, status (Proposed), or scope.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012T7SRMiXmZe5v1imtrKMPi
One-row factual fix in the Prior art section: the DVC / lakeFS / Delta Lake
row conflated three materially different mechanisms and mis-described Griff's
corpus as single-file. Now attributes each precisely (DVC: hash-addressed data
via Git-versioned metadata; lakeFS: Git-like branching/commits; Delta Lake:
ACID transaction-log commits + lineage), rejects them on storage-engine /
service / table-model / dependency footprint against Griff's isolated
file-based corpus tool, and reuses content identity / version lineage /
transactional publication as separate patterns implemented natively.

No change to Decisions 1-10, status, README, governance, gates, or the
native-composition conclusion.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012T7SRMiXmZe5v1imtrKMPi
@PhysShell
PhysShell merged commit cd6c92a into main Jul 29, 2026
15 checks passed
@PhysShell
PhysShell deleted the claude/adr-0033-song-curation branch July 29, 2026 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant