{
  "timestamp": "2026-04-12T17:24:28.014005+08:00",
  "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec",
  "agent": "v3",
  "profile": "grammy",
  "thinking": "low",
  "timeout": 600,
  "concurrency": 3,
  "resume_mode": "each",
  "pending_song_count": 4,
  "groups": [
    {
      "group_index": 1,
      "songs": [
        "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/01_White Ferrari_20260412",
        "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/03_Pink + White_20260412",
        "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/04_Chanel_20260412"
      ],
      "success_count": 3,
      "failed_count": 0,
      "results": [
        {
          "status": "success",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/01_White Ferrari_20260412",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/01_White Ferrari_20260412/step2_json_b.json",
          "run_id": null,
          "agent_summary": "API direct: Coat Pocket Static",
          "returncode": 0,
          "stderr": "",
          "attempt": 1,
          "attempts": [
            {
              "status": "success",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/01_White Ferrari_20260412",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/01_White Ferrari_20260412/step2_json_b.json",
              "run_id": null,
              "agent_summary": "API direct: Coat Pocket Static",
              "returncode": 0,
              "stderr": "",
              "attempt": 1
            }
          ]
        },
        {
          "status": "success",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/03_Pink + White_20260412",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/03_Pink + White_20260412/step2_json_b.json",
          "run_id": null,
          "agent_summary": "API direct: Warm Static",
          "returncode": 0,
          "stderr": "",
          "attempt": 1,
          "attempts": [
            {
              "status": "success",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/03_Pink + White_20260412",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/03_Pink + White_20260412/step2_json_b.json",
              "run_id": null,
              "agent_summary": "API direct: Warm Static",
              "returncode": 0,
              "stderr": "",
              "attempt": 1
            }
          ]
        },
        {
          "status": "success",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/04_Chanel_20260412",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/04_Chanel_20260412/step2_json_b.json",
          "run_id": null,
          "agent_summary": "API direct: Shelf Life",
          "returncode": 0,
          "stderr": "",
          "attempt": 1,
          "attempts": [
            {
              "status": "success",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/04_Chanel_20260412",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/04_Chanel_20260412/step2_json_b.json",
              "run_id": null,
              "agent_summary": "API direct: Shelf Life",
              "returncode": 0,
              "stderr": "",
              "attempt": 1
            }
          ]
        }
      ]
    },
    {
      "group_index": 2,
      "songs": [
        "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/05_Ivy_20260412"
      ],
      "success_count": 0,
      "failed_count": 1,
      "results": [
        {
          "status": "error",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/05_Ivy_20260412",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/05_Ivy_20260412/step2_json_b.json",
          "error_type": "api_error",
          "error": "step1_json_a.json not found",
          "run_id": null,
          "agent_summary": null,
          "returncode": 1,
          "stderr": "step1_json_a.json not found",
          "attempt": 2,
          "attempts": [
            {
              "status": "error",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/05_Ivy_20260412",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/05_Ivy_20260412/step2_json_b.json",
              "error_type": "api_error",
              "error": "step1_json_a.json not found",
              "run_id": null,
              "agent_summary": null,
              "returncode": 1,
              "stderr": "step1_json_a.json not found",
              "attempt": 1
            },
            {
              "status": "error",
              "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/05_Ivy_20260412",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/05_Ivy_20260412/step2_json_b.json",
              "error_type": "api_error",
              "error": "step1_json_a.json not found",
              "run_id": null,
              "agent_summary": null,
              "returncode": 1,
              "stderr": "step1_json_a.json not found",
              "attempt": 2
            }
          ]
        }
      ]
    }
  ],
  "resume": {
    "status": "success",
    "returncode": 0,
    "stdout_tail": "\n[17:27:37] 🔄 [05_Ivy_20260412] Step 2 API: originality retry 1/3...\n[17:28:35] ⚠️  [05_Ivy_20260412] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)\n[17:28:35] ⚠️  [05_Ivy_20260412] Step 2 API: best originality 55% after 3 retries\n[17:28:35] ✅ [05_Ivy_20260412] Step 2 API: 《Spare Key》 | 49.3s | in=14940 out=2330 | ~$0.080\n[17:28:35] ✅ [05_Ivy_20260412] Step 2.5: originality 55% ✓\n[17:28:35] ✅ [05_Ivy_20260412] Step 2: 《Spare Key》\n[17:28:35] 📁 [05_Ivy_20260412] Renamed → 05_Ivy_Spare_Key_20260412\n  📝 [05_Ivy_Spare_Key_20260412] lyrics stripped: 4860c → 4855c\n[17:28:35] 🎵 [05_Ivy_Spare_Key_20260412] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[17:28:35] 🎨 [05_Ivy_Spare_Key_20260412] Step 4: SeeDream cover (parallel)...\n  🎵 49402f8f... → complete\n  🎵 d7369c84... → complete\n  🎵 dbc7bcc0... → complete\n[17:29:12]    🎧 [01_White Ferrari_20260412] Song 1: https://cdn1.suno.ai/dbc7bcc0-6949-438b-8023-853ddd5c018a.mp3\n[17:29:12]    🎧 [01_White Ferrari_20260412] Song 2: https://cdn1.suno.ai/49402f8f-de2a-48e7-b28d-988ab5311b50.mp3\n[17:29:12] 🎛️ [01_White Ferrari_20260412] Step 3.5: 混音...\n[17:29:34]    🎚️ [01_White Ferrari_20260412] Song 1: edm | 低79/中20/高1%\n  ✅ submitted: ['0a8268fd', '5e901c93']\n  🎵 31e55c2e... → complete\n[17:29:57]    🎚️ [01_White Ferrari_20260412] Song 2: edm | 低78/中20/高2%\n[17:29:57] ✅ [01_White Ferrari_20260412] Step 3.5: 45.4s | 2 songs mixed\n  🎵 0a8268fd... → streaming\n  🎵 5e901c93... → streaming\n  🎵 929c2eac... → complete\n[17:29:58]    🎧 [04_Chanel_20260412] Song 1: https://cdn1.suno.ai/31e55c2e-8f70-4329-a02c-c17c41de388b.mp3\n[17:29:58]    🎧 [04_Chanel_20260412] Song 2: https://cdn1.suno.ai/929c2eac-3f32-4a6f-840f-74f8739fc75e.mp3\n[17:29:58] 🎛️ [04_Chanel_20260412] Step 3.5: 混音...\n[17:30:17]    🎚️ [04_Chanel_20260412] Song 1: edm | 低85/中14/高1%\n[17:30:17] ✅ [01_White Ferrari_20260412] Step 4: 15.4s | /srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/01_White Ferrari_20260412/cover_seedream.jpg\n[17:30:36]    🎚️ [04_Chanel_20260412] Song 2: edm | 低74/中24/高3%\n[17:30:36] ✅ [04_Chanel_20260412] Step 3.5: 38.4s | 2 songs mixed\n[17:30:38] ✅ [04_Chanel_20260412] Step 4: 19.2s | /srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/04_Chanel_20260412/cover_seedream.jpg\n  🎵 8ae5bb75... → complete\n[17:30:52]    🎧 [03_Pink + White_20260412] Song 1: https://cdn1.suno.ai/8ae5bb75-49e7-4e13-b0bd-b426658c7025.mp3\n[17:30:52]    🎧 [03_Pink + White_20260412] Song 2: https://cdn1.suno.ai/d7369c84-a972-4840-9813-0a649311f2aa.mp3\n[17:30:52] 🎛️ [03_Pink + White_20260412] Step 3.5: 混音...\n[17:31:16]    🎚️ [03_Pink + White_20260412] Song 1: pop | 低84/中14/高3%\n[17:31:38]    🎚️ [03_Pink + White_20260412] Song 2: pop | 低59/中38/高2%\n[17:31:38] ✅ [03_Pink + White_20260412] Step 3.5: 46.3s | 2 songs mixed\n  🎵 0a8268fd... → complete\n[17:31:41] ✅ [03_Pink + White_20260412] Step 4: 13.2s | /srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/03_Pink + White_20260412/cover_seedream.jpg\n  🎵 5e901c93... → complete\n[17:31:54]    🎧 [05_Ivy_Spare_Key_20260412] Song 1: https://cdn1.suno.ai/0a8268fd-bc5f-4f7b-be21-0493910bee48.mp3\n[17:31:54]    🎧 [05_Ivy_Spare_Key_20260412] Song 2: https://cdn1.suno.ai/5e901c93-122a-43b4-ae2d-7ebc0cbb5f6a.mp3\n[17:31:54] 🎛️ [05_Ivy_Spare_Key_20260412] Step 3.5: 混音...\n[17:32:14]    🎚️ [05_Ivy_Spare_Key_20260412] Song 1: edm | 低69/中29/高2%\n[17:32:36]    🎚️ [05_Ivy_Spare_Key_20260412] Song 2: edm | 低63/中36/高2%\n[17:32:36] ✅ [05_Ivy_Spare_Key_20260412] Step 3.5: 42.0s | 2 songs mixed\n[17:32:39] ✅ [05_Ivy_Spare_Key_20260412] Step 4: 16.9s | /srv/music-files-platform-next/pipeline/batch-20260412-172115-7445ec/05_Ivy_Spare_Key_20260412/cover_seedream.jpg\n\n======================================================================\nSUMMARY | 352s (5.9min)\n======================================================================\n✅ Done: 4 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1\n[MasterDB] ✅ 批次 batch-20260412-172115-7445ec → +4 新增, ~0 更新 | 总计 441 首\n",
    "stderr_tail": "[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml\n",
    "summary": {
      "timestamp": "2026-04-12T17:32:39.741856+08:00",
      "wall_clock": 352.2,
      "total": 5,
      "success": 4,
      "awaiting_step2": 0,
      "failed": 1
    }
  },
  "status": "partial_failure"
}