{
  "timestamp": "2026-04-14T00:21:23.502093+08:00",
  "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb",
  "agent": "v3",
  "profile": "grammy",
  "thinking": "low",
  "timeout": 600,
  "concurrency": 3,
  "resume_mode": "each",
  "pending_song_count": 2,
  "groups": [
    {
      "group_index": 1,
      "songs": [
        "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/02_Starboy_20260414",
        "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/03_Harder, Better, Faster, Stronger_20260414"
      ],
      "success_count": 2,
      "failed_count": 0,
      "results": [
        {
          "status": "success",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/02_Starboy_20260414",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/02_Starboy_20260414/step2_json_b.json",
          "run_id": null,
          "agent_summary": "API direct: Ghost Signal",
          "returncode": 0,
          "stderr": "",
          "attempt": 1,
          "attempts": [
            {
              "status": "success",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/02_Starboy_20260414",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/02_Starboy_20260414/step2_json_b.json",
              "run_id": null,
              "agent_summary": "API direct: Ghost Signal",
              "returncode": 0,
              "stderr": "",
              "attempt": 1
            }
          ]
        },
        {
          "status": "success",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/03_Harder, Better, Faster, Stronger_20260414",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/03_Harder, Better, Faster, Stronger_20260414/step2_json_b.json",
          "run_id": null,
          "agent_summary": "API direct: Signal Break",
          "returncode": 0,
          "stderr": "",
          "attempt": 1,
          "attempts": [
            {
              "status": "success",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/03_Harder, Better, Faster, Stronger_20260414",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/03_Harder, Better, Faster, Stronger_20260414/step2_json_b.json",
              "run_id": null,
              "agent_summary": "API direct: Signal Break",
              "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-20260414-001759-b78acb\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[00:23:20] 🏥 Health check...\n[00:23:22] ✅ qishui: OK\n[00:23:22] ✅ netease: OK\n[00:23:22] ✅ qq: OK\n\n  📝 [01_Get Lucky_Skin_Electric_20260414] lyrics stripped: 4167c → 4159c\n[00:23:22] 🎵 [01_Get Lucky_Skin_Electric_20260414] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[00:23:22] 🎨 [01_Get Lucky_Skin_Electric_20260414] Step 4: SeeDream cover (parallel)...\n  📝 [02_Starboy_Fault_Line_20260414] lyrics stripped: 5575c → 5000c\n[00:23:22] 🎵 [02_Starboy_Fault_Line_20260414] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[00:23:22] 🎨 [02_Starboy_Fault_Line_20260414] Step 4: SeeDream cover (parallel)...\n  📝 [03_Harder, Better, Faster, Stronger_20260414] lyrics stripped: 3504c → 3499c\n[00:23:22] 🎵 [03_Harder, Better, Faster, Stronger_20260414] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[00:23:22] 🎨 [03_Harder, Better, Faster, Stronger_20260414] Step 4: SeeDream cover (parallel)...\n  🔄 retry #1...\n  🔄 retry #1...\n  🔄 retry #1...\n  ✅ submitted: ['71a1496f', '3134fed1']\n  🎵 71a1496f... → queued\n  🎵 3134fed1... → streaming\n  🎵 71a1496f... → streaming\n  ✅ submitted: ['752453d2', '810d5c92']\n  🎵 752453d2... → queued\n  🎵 810d5c92... → queued\n  🎵 752453d2... → streaming\n  🎵 810d5c92... → streaming\n  🎵 3134fed1... → complete\n  🎵 71a1496f... → complete\n[00:38:20]    🎧 [02_Starboy_Fault_Line_20260414] Song 1: https://cdn1.suno.ai/71a1496f-53c5-417d-b71b-e05849465f4b.mp3\n[00:38:20]    🎧 [02_Starboy_Fault_Line_20260414] Song 2: https://cdn1.suno.ai/3134fed1-56e1-45d7-8ff2-d764bc982f00.mp3\n[00:38:20] 🎛️ [02_Starboy_Fault_Line_20260414] Step 3.5: 混音...\n[00:38:44]    🎚️ [02_Starboy_Fault_Line_20260414] Song 1: edm | 低70/中28/高3%\n[00:39:02]    🎚️ [02_Starboy_Fault_Line_20260414] Song 2: pop | 低68/中28/高4%\n[00:39:02] ✅ [02_Starboy_Fault_Line_20260414] Step 3.5: 42.8s | 2 songs mixed\n[00:39:05] ✅ [02_Starboy_Fault_Line_20260414] Step 4: 19.5s | /srv/music-files-platform-next/pipeline/batch-20260414-001759-b78acb/02_Starboy_Fault_Line_20260414/cover_seedream.jpg\n[00:39:05] 🎤 [02_Starboy_Fault_Line_20260414] Step 3.6: Lyrics alignment (faster-whisper)...\n  🎵 752453d2... → complete\n  🎵 810d5c92... → complete\n[00:40:22]    🎧 [01_Get Lucky_Skin_Electric_20260414] Song 1: https://cdn1.suno.ai/752453d2-fc69-42e0-b6f7-2d66ecec6b39.mp3\n[00:40:22]    🎧 [01_Get Lucky_Skin_Electric_20260414] Song 2: https://cdn1.suno.ai/810d5c92-4d01-40ce-bfff-8714047f45b7.mp3\n[00:40:22] 🎛️ [01_Get Lucky_Skin_Electric_20260414] Step 3.5: 混音...\n[00:40:43]    🎚️ [01_Get Lucky_Skin_Electric_20260414] Song 1: rock | 低69/中26/高6%\n[00:41:06]    🎚️ [01_Get Lucky_Skin_Electric_20260414] Song 2: pop | 低48/中51/高1%\n[00:41:06] ✅ [01_Get Lucky_Skin_Electric_20260414] Step 3.5: 44.5s | 2 songs mixed\n[00:41:06] ✅ [01_Get Lucky_Skin_Electric_20260414] Step 4: 17.3s | https://platform.cdn.acedata.cloud/seedream/607340d4-8229-422b-a057-a16bc1beacf1.jpg\n[00:41:06] 🎤 [01_Get Lucky_Skin_Electric_20260414] Step 3.6: Lyrics alignment (faster-whisper)...\n",
    "stderr_tail": "[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml\nTraceback (most recent call last):\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 868, in <module>\n    main()\n    ~~~~^^\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 856, in main\n    asyncio.run(run_pipeline(\n    ~~~~~~~~~~~^^^^^^^^^^^^^^\n        songs, output_dir,\n        ^^^^^^^^^^^^^^^^^^\n    ...<5 lines>...\n        pipeline_version=args.pipeline_version,\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 738, in run_pipeline\n    results = await asyncio.gather(*tasks)\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 598, in run_song\n    (song_dir / \"step3_suno.json\").write_text(json.dumps(s3_result, ensure_ascii=False, indent=2))\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib/python3.13/pathlib/_local.py\", line 557, in write_text\n    return PathBase.write_text(self, data, encoding, errors, newline)\n           ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib/python3.13/pathlib/_abc.py\", line 651, in write_text\n    with self.open(mode='w', 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-20260414-001759-b78acb/03_Harder, Better, Faster, Stronger_20260414/step3_suno.json'\n",
    "summary": {
      "timestamp": "2026-04-14T00:21:22.419295+08:00",
      "wall_clock": 199.3,
      "total": 3,
      "success": 2,
      "awaiting_step2": 0,
      "failed": 1
    }
  },
  "status": "success"
}