fluncle 0.176.0 → 0.177.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bin/fluncle.mjs +9 -6
  2. package/package.json +1 -1
package/bin/fluncle.mjs CHANGED
@@ -561,7 +561,7 @@ function parseVersion(version) {
561
561
  var currentVersion;
562
562
  var init_version = __esm(() => {
563
563
  init_output();
564
- currentVersion = "0.176.0".trim() ? "0.176.0".trim() : "0.1.0";
564
+ currentVersion = "0.177.0".trim() ? "0.177.0".trim() : "0.1.0";
565
565
  });
566
566
 
567
567
  // src/update-notifier.ts
@@ -2259,7 +2259,7 @@ function parseVersion2(version) {
2259
2259
  var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
2260
2260
  var init_version2 = __esm(() => {
2261
2261
  init_output();
2262
- currentVersion2 = "0.176.0".trim() ? "0.176.0".trim() : "0.1.0";
2262
+ currentVersion2 = "0.177.0".trim() ? "0.177.0".trim() : "0.1.0";
2263
2263
  });
2264
2264
 
2265
2265
  // ../../packages/registry/src/index.ts
@@ -3125,7 +3125,7 @@ var init_src = __esm(() => {
3125
3125
  ],
3126
3126
  kind: "cron",
3127
3127
  name: "cron.label-releases",
3128
- operatorNotes: "every 24h, run by a rave-02 HOST systemd timer (docs/agents/hermes/label-releases-timer/). The FRESHNESS TAP (D8): MusicBrainz WALKS the graph (cron.crawl) but lags a release ~2 weeks; Spotify has it day one, so this searches each ENABLED seed label's fresh releases (`label:\"<name>\" tag:new`, copyright-filtered — the fuzzy `label:` search is post-filtered on the album's ℗/© strings) and mints METADATA-ONLY catalogue rows (a `tracks` row with no `findings` row) with their real release dates — closing the /fresh lag cliff. It certifies nothing, publishes nothing, and never widens the graph (no new labels, no artist hops). Deduped against the MB crawl from both directions (Spotify id/uri/ISRC + same-album title fold). Worker-paced, reusing the publish path's Spotify OAuth (no new secret; Apple was a measured 2/99 seed-label dead end). Zero LLM tokens. Source: docs/agents/hermes/scripts/label-releases-sweep.*. See docs/catalogue-crawler.md.",
3128
+ operatorNotes: "every 24h, run by a rave-02 HOST systemd timer (docs/agents/hermes/label-releases-timer/). The FRESHNESS TAP (D8): MusicBrainz WALKS the graph (cron.crawl) but lags a release ~2 weeks; Spotify has it day one, so this searches each ENABLED seed label's fresh releases (`label:\"<name>\" tag:new`) and mints METADATA-ONLY catalogue rows (a `tracks` row with no `findings` row) with their real release dates — closing the /fresh lag cliff. The fuzzy `label:` search is gated on TWO signals before an album mints onto public /fresh: an album's Spotify artist must already be in our archive (`artists.spotify_artist_id` — the primary identity/genre anchor that stops cross-genre homonym junk) AND the album's ℗/© copyright must EXACTLY match the seed label (a brand-new artist's debut is skipped until the MB crawl backfills them). It certifies nothing, publishes nothing, and never widens the graph (no new labels, no artist hops). Deduped against the MB crawl from both directions (Spotify id/uri/ISRC + same-album title fold). Worker-paced, reusing the publish path's Spotify OAuth (no new secret; Apple was a measured 2/99 seed-label dead end). Zero LLM tokens. Source: docs/agents/hermes/scripts/label-releases-sweep.*. See docs/catalogue-crawler.md.",
3129
3129
  probeConfig: {
3130
3130
  cadenceMs: 24 * 60 * MINUTE_MS,
3131
3131
  cronName: "fluncle-label-releases",
@@ -10389,6 +10389,7 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
10389
10389
  let albumsMatched = 0;
10390
10390
  let newRows = 0;
10391
10391
  let skippedKnown = 0;
10392
+ let skippedUngrounded = 0;
10392
10393
  let failedFetches = 0;
10393
10394
  let fetchCeilingHit = false;
10394
10395
  const MAX_PASSES = 100;
@@ -10401,6 +10402,7 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
10401
10402
  albumsMatched += result.albumsMatched;
10402
10403
  newRows += result.newRows;
10403
10404
  skippedKnown += result.skippedKnown;
10405
+ skippedUngrounded += result.skippedUngrounded;
10404
10406
  failedFetches += result.failedFetches;
10405
10407
  fetchCeilingHit = fetchCeilingHit || result.fetchCeilingHit;
10406
10408
  newTrackIds.push(...result.newTrackIds);
@@ -10408,7 +10410,7 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
10408
10410
  failedLabels.push(...result.failedLabels);
10409
10411
  if (!options.json) {
10410
10412
  const verb2 = result.dryRun ? "would probe" : "probed";
10411
- console.log(` \u2026${verb2} ${result.labelSlugs.length} label(s); ${result.albumsMatched} matched album(s); ${result.newRows} new; ${result.skippedKnown} known; ${result.failedFetches} fetch-fail; ${result.failedLabels.length} search-fail`);
10413
+ console.log(` \u2026${verb2} ${result.labelSlugs.length} label(s); ${result.albumsMatched} matched album(s); ${result.newRows} new; ${result.skippedKnown} known; ${result.skippedUngrounded} ungrounded; ${result.failedFetches} fetch-fail; ${result.failedLabels.length} search-fail`);
10412
10414
  }
10413
10415
  if (!result.configured) {
10414
10416
  break;
@@ -10438,7 +10440,8 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
10438
10440
  newRows,
10439
10441
  newTrackIds,
10440
10442
  rateLimited: throttled,
10441
- skippedKnown
10443
+ skippedKnown,
10444
+ skippedUngrounded
10442
10445
  }, 0);
10443
10446
  return;
10444
10447
  }
@@ -10448,7 +10451,7 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
10448
10451
  }
10449
10452
  const verb = dryRun ? "Would probe" : "Probed";
10450
10453
  const probedCount = dryRun ? labelSlugs.length : labelsProbed;
10451
- console.log(`${verb} ${probedCount} enabled seed label(s); ${albumsMatched} matched album(s); ${newRows} new catalogue row(s); ${skippedKnown} already known; ${failedFetches} fetch-fail; ${failedLabels.length} search-fail.`);
10454
+ console.log(`${verb} ${probedCount} enabled seed label(s); ${albumsMatched} matched album(s); ${newRows} new catalogue row(s); ${skippedKnown} already known; ${skippedUngrounded} dropped for no known artist; ${failedFetches} fetch-fail; ${failedLabels.length} search-fail.`);
10452
10455
  if (fetchCeilingHit) {
10453
10456
  console.log(" (a pass ended early on the single-fetch ceiling \u2014 resumes next tick)");
10454
10457
  }
package/package.json CHANGED
@@ -31,5 +31,5 @@
31
31
  "url": "git+https://github.com/mauricekleine/fluncle.git"
32
32
  },
33
33
  "type": "module",
34
- "version": "0.176.0"
34
+ "version": "0.177.0"
35
35
  }