{
  "timestamp": "2026-05-07T16:21:34.508871+08:00",
  "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e",
  "profile": "__runtime_batch-20260507-161921-591c8e",
  "concurrency": 3,
  "resume_mode": "each",
  "pending_song_count": 2,
  "groups": [
    {
      "group_index": 1,
      "songs": [
        "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507",
        "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507"
      ],
      "success_count": 2,
      "failed_count": 0,
      "results": [
        {
          "status": "success",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507/step2_json_b.json",
          "agent_summary": "API direct: 麦垛沉默",
          "returncode": 0,
          "stderr": "",
          "attempt": 1,
          "attempts": [
            {
              "status": "success",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507/step2_json_b.json",
              "agent_summary": "API direct: 麦垛沉默",
              "returncode": 0,
              "stderr": "",
              "attempt": 1
            }
          ]
        },
        {
          "status": "success",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507/step2_json_b.json",
          "agent_summary": "API direct: 侧耳听",
          "returncode": 0,
          "stderr": "",
          "attempt": 1,
          "attempts": [
            {
              "status": "success",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507/step2_json_b.json",
              "agent_summary": "API direct: 侧耳听",
              "returncode": 0,
              "stderr": "",
              "attempt": 1
            }
          ]
        }
      ]
    }
  ],
  "resume": {
    "status": "error",
    "returncode": 1,
    "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 3 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[16:23:03] 🏥 Health check...\n[16:23:05] ✅ qishui: OK\n[16:23:05] ✅ netease: OK\n[16:23:05] ✅ qq: OK\n\n[16:23:05] 🔬 [02_那女孩对我说_20260507] Step 0.75: Audio features...\n  📝 [01_Old Dirt Roads_20260507] lyrics stripped: 3834c → 3827c\n[16:23:05] 🎵 [01_Old Dirt Roads_20260507] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[16:23:05] 🎨 [01_Old Dirt Roads_20260507] Step 4: SeeDream cover (parallel)...\n  📝 [03_MOTHER IN YOU_20260507] lyrics stripped: 3021c → 3014c\n[16:23:05] 🎵 [03_MOTHER IN YOU_20260507] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[16:23:05] 🎨 [03_MOTHER IN YOU_20260507] Step 4: SeeDream cover (parallel)...\n[16:23:14] ✅ [02_那女孩对我说_20260507] Step 0.75: BPM=78.11 Key=D major (9.2s)\n",
    "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260507-161921-591c8e' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-161921-591c8e.yaml\n[   INFO   ] MusicExtractorSVM: no classifier models were configured by default\n[   INFO   ] On connection Flux::flux → IIR::signal:\n[   INFO   ] BUFFER SIZE MISMATCH: max=0 - asked for read size 4096\n[   INFO   ] resizing buffer to 36040/4505\n/usr/local/lib/python3.13/dist-packages/scipy/cluster/hierarchy.py:810: ClusterWarning: The symmetric non-negative hollow observation matrix looks suspiciously like an uncondensed distance matrix\n  return linkage(y, method='ward', metric='euclidean')\nTraceback (most recent call last):\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 958, in <module>\n    main()\n    ~~~~^^\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 945, in main\n    asyncio.run(run_pipeline(\n    ~~~~~~~~~~~^^^^^^^^^^^^^^\n        songs, output_dir,\n        ^^^^^^^^^^^^^^^^^^\n    ...<6 lines>...\n        target_language=args.target_language,\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    ))\n    ^^\n  File \"/usr/lib/python3.13/asyncio/runners.py\", line 195, in run\n    return runner.run(main)\n           ~~~~~~~~~~^^^^^^\n  File \"/usr/lib/python3.13/asyncio/runners.py\", line 118, in run\n    return self._loop.run_until_complete(task)\n           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^\n  File \"/usr/lib/python3.13/asyncio/base_events.py\", line 725, in run_until_complete\n    return future.result()\n           ~~~~~~~~~~~~~^^\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 827, in run_pipeline\n    results = await asyncio.gather(*tasks)\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 365, in run_song\n    lyrics = (song_dir / \"lyrics.txt\").read_text()\n  File \"/usr/lib/python3.13/pathlib/_local.py\", line 548, in read_text\n    return PathBase.read_text(self, encoding, errors, newline)\n           ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib/python3.13/pathlib/_abc.py\", line 632, in read_text\n    with self.open(mode='r', encoding=encoding, errors=errors, newline=newline) as f:\n         ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib/python3.13/pathlib/_local.py\", line 539, in open\n    return io.open(self, mode, buffering, encoding, errors, newline)\n           ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nFileNotFoundError: [Errno 2] No such file or directory: '/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/02_那女孩对我说_20260507/lyrics.txt'\n",
    "summary": {
      "timestamp": "2026-05-07T16:21:33.509809+08:00",
      "wall_clock": 128.3,
      "total": 3,
      "success": 2,
      "awaiting_step2": 0,
      "failed": 1
    }
  },
  "status": "success"
}