From b8b80ef192c62b911fcffde6934e665b3403063f Mon Sep 17 00:00:00 2001 From: Jeffrey Louden Date: Sat, 15 Aug 2026 14:49:15 -0400 Subject: [PATCH] chore: remove remaining import scratch from data/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #426 added a .gitignore whitelist so data/ tracks only the five canonical collections, and removed the data/ddmf/merge-pr-body.md leak. Five more slipped past it: PRs #409, #410, #411, #412 and #414 were branched before the guard landed and merged after it, so their already- staged scratch files were unaffected by the new ignore rule. Remove the five stragglers: - data/algorithmix/merge-pr-body.md - data/aly-james-lab/merge-pr-body.md - data/aom/merge-pr-body.md - data/auburn-sounds/merge-pr-body.md - data/black-salt-audio/merge-pr-body.md These are `gh pr create --body-file` inputs, not catalog data. Nothing in the codebase references them and they contain no YAML, so `pnpm validate` is unchanged at 16729 entries. No changeset: the check only fires on `^data/.*\.yaml$`, and #426 set the same precedent. The guard itself is holding — no scratch has been committed to data/ in the ~2 months since these five landed. Co-Authored-By: Claude Opus 5 (1M context) --- data/algorithmix/merge-pr-body.md | 104 --------- data/aly-james-lab/merge-pr-body.md | 139 ----------- data/aom/merge-pr-body.md | 87 ------- data/auburn-sounds/merge-pr-body.md | 312 ------------------------- data/black-salt-audio/merge-pr-body.md | 101 -------- 5 files changed, 743 deletions(-) delete mode 100644 data/algorithmix/merge-pr-body.md delete mode 100644 data/aly-james-lab/merge-pr-body.md delete mode 100644 data/aom/merge-pr-body.md delete mode 100644 data/auburn-sounds/merge-pr-body.md delete mode 100644 data/black-salt-audio/merge-pr-body.md diff --git a/data/algorithmix/merge-pr-body.md b/data/algorithmix/merge-pr-body.md deleted file mode 100644 index f072da085..000000000 --- a/data/algorithmix/merge-pr-body.md +++ /dev/null @@ -1,104 +0,0 @@ -## Merge plan - -| Bucket | Count | -| ------------ | ------------------------------------- | -| new | 3 | -| updated | 11 (all 11 have field conflicts) | -| discontinued | 0 | -| unchanged | 0 | - -### Conflicts requiring human review - -All 11 update-candidates carry conflicts — none were auto-applied. -Resolve by editing the existing YAMLs directly on main before merging. - -- `data/software/algorithmix-classic-peq-blue.yaml` field `primaryCategory` - - existing: `"equalizer"` - - extracted: `"eq"` - -- `data/software/algorithmix-classic-peq-blue.yaml` field `formats` - - existing: `["vst"]` - - extracted: `["vst2"]` - -- `data/software/algorithmix-classic-peq-blue.yaml` field `description` / `details` / `specs` - - extracted versions are substantially longer and more detailed (quality upgrade candidate) - -- `data/software/algorithmix-easyrenovator.yaml` field `categories` - - existing: `["plugin", "effect", "spectral"]` - - extracted: `["restoration", "spectral", "plugin", "standalone"]` - -- `data/software/algorithmix-easyrenovator.yaml` field `formats` - - existing: `["vst", "standalone"]` - - extracted: `["rtas", "standalone"]` - - Note: RTAS = ProTools HD/Mix/LE format; existing VST may be incorrect - -- `data/software/algorithmix-k-stereo-ambience-processor.yaml` field `formats` - - existing: `["vst3"]` - - extracted: `["vst"]` - - Note: legacy product likely VST (not VST3); existing may be incorrect - -- `data/software/algorithmix-linearphase-peq-orange.yaml` field `formats` - - existing: `["vst"]` - - extracted: `["vst", "vst2"]` - -- `data/software/algorithmix-linearphase-peq-red.yaml` field `formats` - - existing: `["vst"]` - - extracted: `["vst", "vst2"]` - -- `data/software/algorithmix-lp-splitcomp.yaml` field `formats` - - existing: `["vst"]` - - extracted: `["vst", "vst2"]` - -- `data/software/algorithmix-noisefree.yaml` field `formats` - - existing: `["vst2"]` - - extracted: `["vst", "vst2"]` - -- `data/software/algorithmix-renovator.yaml` field `platforms` - - existing: `["windows"]` - - extracted: `["windows", "mac"]` - - Note: Mac support mentioned on product page; verify before applying - -- `data/software/algorithmix-scratchfree.yaml` field `formats` - - existing: `["vst2"]` - - extracted: `["vst", "vst2"]` - -- `data/software/algorithmix-sound-rescue.yaml` field `primaryCategory` - - existing: `"restoration"` - - extracted: `"de-click"` - -Most description/details/specs conflicts are quality improvements -(extracted versions are richer). Safe to apply by replacing the existing -field value after human review. - -### Safe-adds applied - -- `algorithmix-easyrenovator.yaml`: added `versions` (v2.10 build 1534) -- `algorithmix-renovator.yaml`: added `versions` (v2.50 build 1690, 4 variants) -- `algorithmix-sound-laundry.yaml`: added `details` and `specs` (was empty) - -### Data review - -- Mode: exhaustive (6 changed files, all deep-read) -- Automated checks: `pnpm validate` 0 errors, `pnpm build` clean -- Auto-fixes applied: 1 (easy-tools `primaryCategory: plugin` → `noise-reduction`) -- Remaining notes (INFO): - - `algorithmix-sound-laundry.yaml` has pre-existing `categories: [standalone]` - which is a format value; consider removing in a follow-up - - `versions` entries use full descriptive names (e.g. "v2.50 build 1690 - (Pyramix 64-bit)") rather than bare version numbers — intentional for - legacy products where build variant matters - - No translations present (expected for niche German DSP tools) - - No plugin identifiers (AU/VST3/AAX) — all entries are Windows-only - standalone or legacy DirectX/VST with no cross-platform formats - -### Audit trail - -- Inventory snapshot: `scripts/catalog-import/data/algorithmix/inventory.json` -- Merge plan: `scripts/catalog-import/data/algorithmix/merge-plan.json` -- Extracted envelopes: `scripts/catalog-import/data/algorithmix/extracted/` - -### Deferred - -None — every discovered URL was either imported or already in the catalog. - -Auto-merge gate: batched human review (10 PRs at a time). diff --git a/data/aly-james-lab/merge-pr-body.md b/data/aly-james-lab/merge-pr-body.md deleted file mode 100644 index 4fce3db2d..000000000 --- a/data/aly-james-lab/merge-pr-body.md +++ /dev/null @@ -1,139 +0,0 @@ -## Merge plan - -| Bucket | Count | -| ------------ | --------------------------------------------- | -| new | 0 | -| updated | 8 (of which 8 have field conflicts) | -| discontinued | 0 | -| unchanged | 0 | - -### Safe-adds applied - -All 8 existing entries were enriched with missing fields: - -- **images** — 3 product images per entry (24 total), sourced from - `alyjameslab.com/content/` -- **videos** — YouTube playlist per entry (8 total) -- **links** — manufacturer manual PDFs (5 entries: ClapTrap 2, FMDrive, - Super PSG, VProm 3, VSDSX) -- **versions** — version history added to all 8 entries -- **releaseDate** — added to 6 entries (ClapTrap 2: 2019, Elastic Bender: - 2014, OB-Xtreme: 2014, VProm: 2025, VSDSX: 2014, SY-4X: via version - dates); FMDrive and Super PSG had no clear release year - -### Conflicts requiring human review - -All conflicts below are between the existing high-quality catalog entries and -raw web-scraped extraction. The existing values are preferred in almost every -case. Apply changes by hand before merging this PR. - -#### `data/software/aly-james-lab-claptrap-20.yaml` - -- field `name` - - existing: `"ClapTrap 2.0"` - - extracted: `"ClapTrap 2"` — minor; keep existing -- field `categories` - - existing: `["virtual-instrument","emulation","analog"]` - - extracted: adds `"vintage"` — consider whether "vintage" is warranted -- field `url` - - existing: `"https://alyjameslab.com/alyjameslabclaptrap.html"` - - extracted: `"https://www.alyjameslab.com/alyjameslabclaptrap.html"` - (www prefix) — either works; keep existing -- field `description` / `details` / `specs` - - existing entries are curated; extracted is raw page copy — keep existing - -#### `data/software/aly-james-lab-elastic-bender-20.yaml` - -- field `name` - - existing: `"Elastic Bender 2.0"` - - extracted: `"Elastic Bender"` — keep existing -- field `primaryCategory` - - existing: `"creative"` - - extracted: `"pitch-shifter"` — both defensible; keep existing -- field `categories` - - existing: `["effect","modulation","delay","chorus","flanger"]` - - extracted: `["pitch","effect","delay","chorus","flanger","modulation"]` — - reordering + "pitch"; keep existing -- field `url` — www vs non-www; keep existing -- field `description` / `details` / `specs` — keep existing (curated) - -#### `data/software/aly-james-lab-fmdrive.yaml` - -- field `categories` - - existing: `["synthesizer","virtual-instrument","emulation","digital"]` - - extracted: same but possibly reordered — keep existing -- field `url` — www vs non-www; keep existing -- field `description` / `details` / `specs` — keep existing (curated) - -#### `data/software/aly-james-lab-ob-xtreme-30.yaml` - -- field `name` - - existing: `"OB-Xtreme 3.0"` - - extracted: `"OB-Xtreme 3"` — keep existing -- field `primaryCategory` - - existing: `"analog"` - - extracted: `"synthesizer"` — keep existing -- field `categories` - - existing: `["synthesizer","virtual-instrument","emulation"]` - - extracted: adds `"plugin"`, `"subtractive"` — keep existing -- field `url` — www vs non-www; keep existing -- field `description` / `details` / `specs` — keep existing (curated) - -#### `data/software/aly-james-lab-super-psg-spsg.yaml` - -- field `name` - - existing: `"Super PSG (SPSG)"` - - extracted: `"Super PSG"` — keep existing -- field `primaryCategory` - - existing: `"emulation"` - - extracted: `"synthesizer"` — keep existing -- field `categories` - - existing: `["synthesizer","virtual-instrument","digital"]` - - extracted: adds `"plugin"` — keep existing -- field `url` — www vs non-www; keep existing -- **field `prices` — PRICING CHANGE** - - existing: `[{"amount": 20, "currency": "EUR"}]` - - extracted: `[{"amount": 15, "currency": "EUR"}]` - - **Action required**: The site now shows €15 minimum (pay-what-you-want). - Verify on [the product page](https://www.alyjameslab.com/alyjameslabsuperpsg.html) - and update if confirmed. -- field `description` / `details` / `specs` — keep existing (curated) - -#### `data/software/aly-james-lab-sy-4x-syncussion.yaml` - -- field `categories` - - existing: `["virtual-instrument","synthesizer","emulation","analog"]` - - extracted: adds `"physical-modeling"` — keep existing -- field `url` — www vs non-www; keep existing -- field `description` / `details` / `specs` — keep existing (curated) - -#### `data/software/aly-james-lab-vprom-30.yaml` - -- field `name` - - existing: `"VProm 3.0"` - - extracted: `"VPROM"` — keep existing -- field `categories` - - existing: `["virtual-instrument","emulation","sampler"]` - - extracted: adds `"plugin"`, `"vintage"` — keep existing -- field `url` — www vs non-www; keep existing -- field `description` / `details` / `specs` — keep existing (curated) - -#### `data/software/aly-james-lab-vsdsx-20.yaml` - -- field `name` - - existing: `"VSDSX 2.0"` - - extracted: `"VSDSX"` — keep existing -- field `categories` - - existing: `["virtual-instrument","synthesizer","emulation","analog"]` - - extracted: adds `"plugin"` — keep existing -- field `url` — www vs non-www; keep existing -- field `description` / `details` / `specs` — keep existing (curated) - -### Audit trail - -- Inventory snapshot: - `scripts/catalog-import/data/aly-james-lab/inventory.json` -- Merge plan: - `scripts/catalog-import/data/aly-james-lab/merge-plan.json` (in racks repo) -- Extracted envelopes: - `scripts/catalog-import/data/aly-james-lab/extracted/` diff --git a/data/aom/merge-pr-body.md b/data/aom/merge-pr-body.md deleted file mode 100644 index 1834dfa36..000000000 --- a/data/aom/merge-pr-body.md +++ /dev/null @@ -1,87 +0,0 @@ -## Merge plan - -| Bucket | Count | -| ------------ | -------------------------------------------------------------- | -| new | 0 | -| updated | 14 applied (16 candidates; 2 had no schema-valid safe-adds) | -| discontinued | 0 | -| unchanged | 2 | - -> `aom-invisible-limiter` and `aom-tranquilizr` had no schema-valid -> safe-adds to apply. The extracted `type` and `images` fields are not -> in the software schema (`additionalProperties: false`). Files -> unchanged. - -## Changes applied (safe-adds only) - -All 14 modified files received one or more of: - -- `releaseDate` — first release date sourced from official product pages -- `videos` — official YouTube demos/tutorials (7 entries) -- `links` — support documentation links (4 entries) - -No existing field values were overwritten. All conflicts were preserved -for human review below. - -## Conflicts requiring human review - -All 16 update candidates have conflicts. The sections below cover the -ones requiring active decisions. Resolve by editing the YAML files -directly on this branch or after merge. - -### primaryCategory changes (5 entries) - -| File | Existing | Extracted | -|------|----------|-----------| -| `data/software/aom-cyclic-panner.yaml` | `utility` | `panning` | -| `data/software/aom-sakura-dither.yaml` | `mastering` | `dither` | -| `data/software/aom-stereo-imager-d.yaml` | `utility` | `stereo-widener` | -| `data/software/aom-total-bundle.yaml` | `multi-effect` | `suite` | -| `data/software/aom-triple-fader.yaml` | `utility` | `gain` | - -The extracted values better reflect each product's primary function. -Apply if the new categories exist in `schema/categories.yaml`. - -### Prices (15 entries — keep existing) - -Existing entries have 2–4 price points (base perpetual + upgrade -extension prices). Extracted data has only the base perpetual price. -The upgrade/extension prices in existing entries are valid data and -should be kept — the extracted snapshot missed them. - -Example — `aom-cyclic-panner.yaml`: - -- existing: `[{amount: 70, currency: USD}, {amount: 52, currency: USD}]` -- extracted: `[{amount: 70, currency: USD}]` - -**Recommended action:** keep existing prices as-is (no change needed). - -### Categories (16 entries) - -Extracted entries include `plugin` as an explicit top-level category. -Existing entries don't have this. Whether to add `plugin` is a catalog -convention question — all AOM products are plugins by definition. - -### Description, details, specs (16 entries) - -All 16 entries have different wording from re-extraction. The existing -copy is generally higher quality. A full field-by-field comparison is -in the merge plan JSON (linked below in Audit trail). - -Key differences: -- Existing `details` for Nu Compressor is marked `safe-keep` (extracted - version was shorter/lower quality). -- Existing `specs` for most entries are more concise; extracted versions - include platform/OS requirement bullets that may not belong in specs. - -### Format order (10 entries — no action needed) - -Extracted `formats` lists have different ordering (e.g. `au, vst2, vst3` -vs `vst2, vst3, au`). Same values, different order — functionally -identical. No action needed. - -## Audit trail - -- Inventory snapshot: `scripts/catalog-import/data/aom/inventory.json` -- Merge plan: `scripts/catalog-import/data/aom/merge-plan.json` -- Extracted envelopes: `scripts/catalog-import/data/aom/extracted/` diff --git a/data/auburn-sounds/merge-pr-body.md b/data/auburn-sounds/merge-pr-body.md deleted file mode 100644 index 651d815f2..000000000 --- a/data/auburn-sounds/merge-pr-body.md +++ /dev/null @@ -1,312 +0,0 @@ -## Merge plan - -| Bucket | Count | -| ------------ | --------------------------------------- | -| new | 0 | -| updated | 10 (of which 10 have field conflicts) | -| discontinued | 0 | -| unchanged | 0 | - -> ⚠️ **HIGH CONFLICT RATE**: All 10 update candidates carry conflicts. -> Safe-add fields (images, versions) were applied automatically. -> All conflict fields are left untouched — resolve by hand before merging. - -## Applied changes (safe-add only) - -- **Couture** — added `images` (CDN URL), `versions: [{name: "1.10"}]` -- **Graillon** — added `images` (CDN URL), `versions: [{name: "3.2"}]` -- **Renegate** — added `images` (CDN URL), `versions: [{name: "1.6"}]` -- **Panagement** — added `images` (CDN URL), `versions: [{name: "2.8"}]` -- **Inner Pitch** — added `images` (CDN URL), `versions: [{name: "2.1"}]` -- **Lens** — added `images` (CDN URL), `versions: [{name: "1.4"}]` -- **Selene** — added `images` (CDN URL), `versions: [{name: "1.1"}]` -- **GFM Distort** — added `versions: [{name: "1.0"}]` (no image — too small) -- **GFM Koch** — added `versions: [{name: "1.0"}]` (no image — too small) -- **GFM Psypan** — added `versions: [{name: "1.0"}]` (no image — too small) - -## Conflicts requiring human review - -Apply the resolution by hand (`Edit` the YAML) before merging this PR. - ---- - -### `data/software/auburn-sounds-couture.yaml` - -- **`primaryCategory`** - - existing: `"saturation"` - - extracted: `"transient-shaper"` - -- **`categories`** - - existing: `["distortion", "dynamics", "compressor", "effect"]` - - extracted: `["plugin", "effect", "transient-shaper", "distortion", - "saturation", "dynamics"]` - -- **`formats`** (order only) - - existing: `["vst", "aax", "au", "lv2"]` - - extracted: `["vst", "au", "aax", "lv2"]` - -- **`prices`** - - existing: `[{amount: 0}, {amount: 29}]` - - extracted: adds `type` and `label` fields to each entry - -- **`description`** - - existing: `"Dynamics-preserving distortion and transient shaper plugin - offering exquisite control over dynamics and attacks with - volume-independent saturation."` - - extracted: `"Couture is a distortion audio plug-in with preceding - transient shaper. It operates in a level-independent manner."` - -- **`details`** — extracted version is shorter/less detailed; existing - preferred - -- **`specs`** — extracted version is format/platform list, not feature - list; existing preferred - ---- - -### `data/software/auburn-sounds-graillon.yaml` - -- **`primaryCategory`** - - existing: `"autotune"` - - extracted: `"pitch"` - -- **`categories`** - - existing: `["pitch", "pitch-shifter", "vocoder", "effect", "creative"]` - - extracted: `["plugin", "pitch", "pitch-shifter", "autotune", "effect", - "vocoder"]` - -- **`formats`** — extracted adds `"clap"` (new format support in v3.2) - - existing: `["vst", "aax", "au", "lv2"]` - - extracted: `["vst", "au", "aax", "clap", "lv2"]` - -- **`platforms`** (order only) - - existing: `["mac", "windows", "linux"]` - - extracted: `["windows", "mac", "linux"]` - -- **`prices`** - - existing: `[{amount: 0}, {amount: 29}]` - - extracted: only `[{amount: 29, type: "one-time", edition: "Full - Edition"}]` — missing free tier - -- **`description`** — extracted is longer/different framing - -- **`details`** — extracted shorter summary vs existing detailed version - -- **`specs`** — extracted is format/platform list, existing is feature list - ---- - -### `data/software/auburn-sounds-renegate.yaml` - -- **`categories`** - - existing: `["dynamics", "effect"]` - - extracted: `["plugin", "gate", "dynamics"]` - -- **`platforms`** (order only) - - existing: `["mac", "windows", "linux"]` - - extracted: `["windows", "mac", "linux"]` - -- **`prices`** - - existing: `[{amount: 0}, {amount: 29}]` - - extracted: adds `label` fields - -- **`description`** — extracted is much shorter - -- **`details`** — similar content, different framing - -- **`specs`** — extracted is format/version list, existing is feature list - ---- - -### `data/software/auburn-sounds-panagement.yaml` - -- **`primaryCategory`** - - existing: `"spatial"` - - extracted: `"panning"` - -- **`categories`** - - existing: `["stereo-widener", "reverb", "effect", "creative"]` - - extracted: `["plugin", "effect", "panning", "auto-pan", "spatial", - "stereo", "stereo-widener", "reverb", "binaural", "delay"]` - -- **`formats`** (order only) - - existing: `["vst", "aax", "au", "lv2"]` - - extracted: `["vst", "au", "aax", "lv2"]` - -- **`prices`** - - existing: `[{amount: 0}, {amount: 29}]` - - extracted: adds `edition` labels - -- **`description`** — extracted is shorter/simpler - -- **`details`** — extracted shorter; existing preferred - -- **`specs`** — extracted more comprehensive feature list; worth reviewing - ---- - -### `data/software/auburn-sounds-inner-pitch.yaml` - -- **`categories`** - - existing: `["pitch", "creative", "effect"]` - - extracted: `["plugin", "pitch", "pitch-shifter", "effect", "harmonizer"]` - -- **`formats`** (order only) - - existing: `["vst", "aax", "au", "lv2"]` - - extracted: `["vst", "au", "aax", "lv2"]` - -- **`platforms`** (order only) - - existing: `["mac", "windows", "linux"]` - - extracted: `["windows", "mac", "linux"]` - -- **`prices`** - - existing: `[{amount: 0}, {amount: 29}]` - - extracted: `[{amount: 0, edition: "Free"}, {amount: 38.67, edition: - "Full"}]` — price differs ($29 → $38.67) - -- **`description`** — extracted different phrasing - -- **`details`** — similar content, extracted slightly shorter - -- **`specs`** — extracted is format/feature list, existing is feature-only - ---- - -### `data/software/auburn-sounds-lens.yaml` - -- **`primaryCategory`** - - existing: `"dynamics"` - - extracted: `"multiband"` - -- **`categories`** - - existing: `["compressor", "equalizer", "mastering", "effect"]` - - extracted: `["plugin", "multiband", "compressor", "dynamics", - "equalizer", "spectral"]` - -- **`formats`** — extracted adds `"clap"`, `"vst2"`, `"vst3"`; removes plain - `"vst"` - - existing: `["vst", "aax", "au", "lv2"]` - - extracted: `["au", "vst2", "vst3", "aax", "clap", "lv2"]` - -- **`prices`** - - existing: `[{amount: 0}, {amount: 49}]` - - extracted: adds `label` fields (amounts match) - -- **`description`** — similar meaning, slightly different wording - -- **`details`** — extracted adds system requirements (Win 7+, macOS 10.15+, - Ubuntu 22.04+, M1 native); worth merging manually - -- **`specs`** — extracted is format/platform spec list, existing is feature - list - ---- - -### `data/software/auburn-sounds-selene.yaml` - -- **`categories`** - - existing: `["effect"]` - - extracted: `["plugin", "effect", "reverb"]` - -- **`formats`** (order only) - - existing: `["vst", "aax", "au", "lv2"]` - - extracted: `["vst", "au", "aax", "lv2"]` - -- **`prices`** - - existing: `[{amount: 0}, {amount: 29}]` - - extracted: adds `type` and `label` fields - -- **`description`** — extracted adds "pristine adaptive sound" phrase - -- **`details`** — existing version more detailed; extracted shorter summary - -- **`specs`** — extracted is format/platform spec list, existing is feature - list - ---- - -### `data/software/auburn-sounds-gfm-distort.yaml` - -- **`categories`** - - existing: `["saturation", "effect"]` - - extracted: `["plugin", "effect", "distortion", "saturation", - "discontinued"]` - - Note: extracted includes `"discontinued"` category tag - -- **`formats`** (order only) - - existing: `["vst", "au"]` - - extracted: `["au", "vst"]` - -- **`prices`** - - existing: `[{amount: 0}]` - - extracted: `[{amount: 0, type: "free"}]` - -- **`description`** — extracted shorter - -- **`details`** — similar, extracted slightly more concise - ---- - -### `data/software/auburn-sounds-gfm-koch.yaml` - -- **`categories`** - - existing: `["virtual-instrument"]` - - extracted: `["plugin", "synthesizer", "physical-modeling", - "virtual-instrument", "discontinued"]` - - Note: extracted includes `"discontinued"` and `"physical-modeling"` tags - -- **`formats`** (order only) - - existing: `["vst", "au"]` - - extracted: `["au", "vst"]` - -- **`prices`** - - existing: `[{amount: 0}]` - - extracted: `[{amount: 0, type: "free"}]` - -- **`description`** - - existing: descriptive paragraph - - extracted: `"GFM Koch is a deprecated physical-model synth plug-in from - 2012."` — very terse - -- **`details`** — extracted uses original marketing copy from the product - page; existing is a curated summary - ---- - -### `data/software/auburn-sounds-gfm-psypan.yaml` - -- **`primaryCategory`** - - existing: `"spatial"` - - extracted: `"panning"` - -- **`categories`** - - existing: `["stereo-widener", "utility", "effect"]` - - extracted: `["plugin", "effect", "panning", "spatial", "binaural", - "stereo", "stereo-widener", "discontinued", "legacy"]` - - Note: extracted includes `"discontinued"` and `"legacy"` tags - -- **`formats`** (order only) - - existing: `["vst", "au"]` - - extracted: `["au", "vst"]` - -- **`prices`** - - existing: `[{amount: 0}]` - - extracted: `[{amount: 0, edition: "Free"}]` - -- **`description`** — extracted shorter/simpler - -- **`details`** — extracted more detailed (mentions HRTF, ITD, headphone - context explicitly) - -- **`specs`** — extracted more explicit about features and formats - ---- - -## Audit trail - -- Inventory snapshot: - `scripts/catalog-import/data/auburn-sounds/inventory.json` -- Merge plan: - `scripts/catalog-import/data/auburn-sounds/merge-plan.json` -- Extracted envelopes: - `scripts/catalog-import/data/auburn-sounds/extracted/` diff --git a/data/black-salt-audio/merge-pr-body.md b/data/black-salt-audio/merge-pr-body.md deleted file mode 100644 index 786340839..000000000 --- a/data/black-salt-audio/merge-pr-body.md +++ /dev/null @@ -1,101 +0,0 @@ -## Merge plan - -| Bucket | Count | -| ------------ | ---------------------------------------- | -| new | 1 | -| updated | 15 (of which 15 have field conflicts) | -| discontinued | 0 | -| unchanged | 0 | - -### Changes applied - -**New entry:** -- `data/software/black-salt-audio-instinct-eq.yaml` — Instinct EQ (four-band - EQ with Surgery notch module, $59) - -**Safe-add fields applied to all 15 existing entries:** -- `images` — product screenshots/logos from blacksaltaudio.com -- `videos` — YouTube demos (where found on product pages) -- BSA Delays additionally received `specs` and `versions: [{name: "1.1.1"}]` - -### Conflicts requiring human review - -All 15 update candidates have conflicts. The majority are semantic ordering -differences in the `formats` field (e.g., `[vst3, au, aax]` vs -`[au, vst3, aax]`) — these are functionally equivalent and can be resolved -by choosing either order (the existing ordering is fine to keep). - -The substantive conflicts that warrant human judgment: - -- `data/software/black-salt-audio-bsa-delays.yaml` field `primaryCategory` - - existing: `"effect"` - - extracted: `"delay"` - -- `data/software/black-salt-audio-clipper.yaml` field `primaryCategory` - - existing: `"limiter"` - - extracted: `"clipper"` ⚠️ **Note: `clipper` is not a valid catalog - primaryCategory — keep the existing `limiter`** - -- `data/software/black-salt-audio-cr-1.yaml` field `primaryCategory` - - existing: `"distortion"` - - extracted: `"compressor"` - -- `data/software/black-salt-audio-dsr.yaml` field `primaryCategory` - - existing: `"dynamics"` - - extracted: `"de-esser"` - -- `data/software/black-salt-audio-oxygen.yaml` field `primaryCategory` - - existing: `"effect"` - - extracted: `"exciter"` - -- `data/software/black-salt-audio-reviver.yaml` field `primaryCategory` - - existing: `"effect"` - - extracted: `"transient-shaper"` - -- `data/software/black-salt-audio-silencer.yaml` field `primaryCategory` - - existing: `"dynamics"` - - extracted: `"gate"` - -- `data/software/black-salt-audio-telos-bass.yaml` field `primaryCategory` - - existing: `"dynamics"` - - extracted: `"channel-strip"` - -- `data/software/black-salt-audio-telos-drums.yaml` field `primaryCategory` - - existing: `"dynamics"` - - extracted: `"channel-strip"` - -- `data/software/black-salt-audio-telos-guitars.yaml` field `primaryCategory` - - existing: `"dynamics"` - - extracted: `"channel-strip"` - -- `data/software/black-salt-audio-telos-vocals.yaml` field `primaryCategory` - - existing: `"dynamics"` - - extracted: `"channel-strip"` - -- `data/software/black-salt-audio-escalator.yaml` field `prices` - - existing: `[{amount: 59}, {amount: 35.4}]` (promotional price) - - extracted: `[{amount: 59}]` (promo no longer live on site) - -- `data/software/black-salt-audio-low-control.yaml` field `prices` - - existing: `[{amount: 79}, {amount: 47.4}]` (promotional price) - - extracted: `[{amount: 79}]` (promo no longer live on site) - -- `data/software/black-salt-audio-oxygen.yaml` field `prices` - - existing: `[{amount: 79}, {amount: 47.4}]` (promotional price) - - extracted: `[{amount: 79}]` (promo no longer live on site) - -- `data/software/black-salt-audio-telofi.yaml` field `prices` - - existing: `[{amount: 59}]` - - extracted: `[{amount: 59, type: "perpetual", label: "Perpetual License"}]` - (extra fields not in catalog schema — keep existing) - -Apply resolutions by hand (Edit the YAML directly) before merging this PR. - -### Audit trail - -- Inventory snapshot: - `scripts/catalog-import/data/black-salt-audio/inventory.json` -- Merge plan: - `scripts/catalog-import/data/black-salt-audio/merge-plan.json` -- Extracted envelopes: - `scripts/catalog-import/data/black-salt-audio/extracted/`