{
  "project_id": "003-Nhung-La-Thu-Duoi-Ghe-Cuoi",
  "channel": "Gác Mái Audio",
  "channel_id": "gac-mai-audio",
  "status": "completed",
  "story_title": "Những Lá Thư Dưới Ghế Cuối",
  "story_duration_target_minutes": [
    40,
    60
  ],
  "story_duration_seconds": 2905.714285714286,
  "active_version": "recovery-v2",
  "created_at": "2026-07-20T07:40:36.558933+00:00",
  "paths": {
    "root": "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi",
    "image": "image/",
    "audio": "audio/",
    "script": "script/",
    "story": "story/",
    "log": "log/",
    "output": "output/"
  },
  "active_paths": {
    "story_brief": "story/story-brief.json",
    "characters": "story/characters.json",
    "ledger": "story/ledger.json",
    "outline": "script/outline.json",
    "identity_registry": "script/identity-registry.json",
    "reveal_ledger": "script/reveal-ledger.json",
    "story_canon": "story/story-canon.txt",
    "spoken_narration": "story/spoken-narration.txt",
    "tts_audio": "audio/story-full.wav",
    "layout": "image/layout-1920x1080-v2.png",
    "intro_poster_master": "image/intro-poster-1920x1080-v2.png",
    "intro": "output/intro/intro-v3.mp4",
    "footage": "output/footage/footage-v4.mp4",
    "final_master": "output/final-v2.mp4",
    "final_upload": "output/final-upload-v2.mp4",
    "metadata": "output/info-v2.txt",
    "promotion_receipt": "log/promotion.json",
    "tts_receipt": "log/tts-production.json",
    "layout_receipt": "log/layout-v2.json",
    "intro_receipt": "log/intro-recovery-v3.json",
    "footage_receipt": "log/footage-job-v4.json",
    "footage_qa_dir": "log/footage-check-v4",
    "footage_qa_receipt": "log/footage-check-v4/visual-qa.json",
    "final_receipt": "log/final-render-v2.json",
    "final_qa_dir": "log/final-check-v2",
    "final_qa_receipt": "log/final-check-v2/visual-qa.json",
    "transcode_receipt": "log/transcode-upload-v2.json",
    "metadata_receipt": "log/metadata-v2.json",
    "publish_ready_receipt": "log/publish-ready-v2.json",
    "postiz_identity_receipt": "log/postiz-identity-v2.json",
    "postiz_media_receipt": "log/postiz-media-v2.json",
    "postiz_schedule_receipt": "log/postiz-schedule-v2.json",
    "cleanup_receipt": "log/cleanup-v2.json",
    "tts_manifest": "audio/tts-manifest.json",
    "tts_partial_manifest": "audio/tts-partial.json",
    "tts_concat": "audio/concat.txt",
    "image_prompts": "image/prompts.json",
    "image_prompt_reconciliation_receipt": "log/image-prompt-reconciliation.json",
    "left_panel_master": "image/left-panel-master.png",
    "right_panel_master": "image/right-panel-master-v2.png",
    "intro_master": "image/intro-poster-master-v2.png",
    "left_panel_normalized": "image/left-panel-656x1080-v2.png",
    "right_panel_normalized": "image/right-panel-656x1080-v2.png",
    "intro_normalized": "image/intro-poster-1920x1080-v2.png",
    "artwork_generation_receipt": "log/artwork-generation-v1.json",
    "artwork_visual_receipt": "log/artwork-visual-review-v3.json",
    "orientation_receipt": "log/artwork-orientation-v3.json",
    "layout_normalization_receipt": "log/layout-normalization-v2.json",
    "normalized_visual_receipt": "log/artwork-normalized-visual-review-v2.json",
    "layout_manifest": "image/layout-manifest-v2.json",
    "intro_voice": "audio/intro-voice-v3.wav",
    "intro_silence": "audio/intro-silence-v3.wav",
    "intro_audio": "audio/intro-full-v3.wav",
    "intro_qa_dir": "log/intro-check-v3",
    "intro_qa_receipt": "log/intro-check-v3/visual-qa.json",
    "footage_source_view": "work/footage-source-v3-clean"
  },
  "story_run": {
    "run_id": "run-001",
    "candidate_path": "work/story/run-001/candidate.txt",
    "producer_close_path": "work/story/run-001/producer-close.json",
    "status": "promoted",
    "authority_snapshot": {
      "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi/story/story-brief.json": "4430a93d355e64d0ca36241f631fbad6cb23fe7291f6ea754754cd50feb5f4f3",
      "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi/story/characters.json": "4c6b6ea17aac2cc70b27921eddd808bec8cae184f56c9f33f7aeb665fba55857",
      "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi/script/outline.json": "eb561715c731113b519b839310c5ec0934d5e90e8d9df447d99b6669b48426c1",
      "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi/story/ledger.json": "a119e7b1dd84907a1615bf05fc238f7651c04497e727eb95f9ad6d6fcecf90a1",
      "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi/script/identity-registry.json": "99196d1489071a8410be732c6630d2ed648bde0aa9c5d62624eaaba38c706367",
      "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi/script/reveal-ledger.json": "6181c9c87f949e7310947c49151d9fe729b33e46e9a2b4b4afc0d69514c260b0"
    },
    "candidate_sha256": "2c458d69335efd4477dcf67fd280da29964e3b47baaa6fe0536efed1dc598d26",
    "word_count": 11187
  },
  "steps": {
    "preflight": "completed",
    "story": "completed",
    "tts": "completed",
    "artwork": "completed",
    "layout": "completed",
    "footage": "completed",
    "intro": "completed",
    "final_render": "completed",
    "transcode": "completed",
    "metadata": "completed",
    "publish_ready": "completed",
    "upload": "completed",
    "cleanup": "completed"
  },
  "preflight": {
    "checked_at": "2026-07-20T07:40:36.558933+00:00",
    "tts_http_status": 200,
    "footage_service_status": "ok",
    "final_service_status": "ok",
    "transcode_service_status": "ok",
    "h264_nvenc": true,
    "footage_count": 113,
    "postiz_identity_read_only": "passed",
    "image_config": "present"
  },
  "canon_sha256": "2c458d69335efd4477dcf67fd280da29964e3b47baaa6fe0536efed1dc598d26",
  "updated_at": "2026-07-20T16:35:33.133450+00:00",
  "artwork": {
    "status": "completed",
    "verified": true,
    "active_intro_master": "image/intro-poster-master-v2.png",
    "active_right_panel_master": "image/right-panel-master-v2.png",
    "visual_receipt": "log/artwork-visual-review-v3.json",
    "orientation_receipt": "log/artwork-orientation-v3.json",
    "normalized_visual_receipt": "log/artwork-normalized-visual-review-v2.json",
    "completed_at": "2026-07-20T08:25:10.162922+00:00"
  },
  "layout": {
    "status": "completed",
    "verified": true,
    "path": "image/layout-1920x1080-v2.png",
    "receipt": "log/layout-v2.json",
    "completed_at": "2026-07-20T08:25:10.162922+00:00"
  },
  "intro": {
    "status": "completed",
    "verified": true,
    "version": "v3",
    "receipt": "log/intro-recovery-v3.json",
    "visual_qa": {
      "path": "log/intro-check-v3/frame-mid.jpg",
      "verified": true
    },
    "intro_text": "Các bạn đang nghe truyện được phát từ Gác Mái Audio, chúc các bạn có những giây phút nghe truyện vui vẻ. Hãy ủng hộ chúng tôi bằng cách like video và đăng ký kênh.",
    "artifact_sha256": "978104d26bbb369446ccf01645051f03a9a6a40b310765272a3299ff59315ddd",
    "completed_at": "2026-07-20T15:20:49.694967+00:00"
  },
  "tts": {
    "status": "completed",
    "verified": true,
    "receipt": "log/tts-production.json",
    "artifact_sha256": "ce4a1b3dd283c7cb11e2192df94cc964403e67076fd02cbc37870b644237fe44",
    "duration_seconds": 2706.2,
    "segment_count": 260,
    "completed_at": "2026-07-20T10:42:46.749395+00:00"
  },
  "footage_seed_material": "003-Nhung-La-Thu-Duoi-Ghe-Cuoi|recovery-v3|sampled-clean-allowlist-15",
  "footage_recovery": {
    "status": "prepared",
    "version": "v3",
    "source_audit": "log/footage-source-audit-v3.json",
    "source_filter": "log/footage-source-filter-v3.json",
    "clean_clip_count": 15,
    "sample_count_per_clip": 5,
    "post_render_dense_review_required": true
  },
  "footage": {
    "status": "completed",
    "verified": true,
    "version": "v4",
    "receipt": "log/footage-job-v4.json",
    "integrity_only": true,
    "content_qa": "user_locked_no_footage_content_qa",
    "artifact_sha256": "72eda42f389c212db5307c491d3f618c0b92d2edcad128b21a5629f99a3c3d01",
    "duration_seconds": 2706.2,
    "completed_at": "2026-07-20T15:52:39.565300+00:00"
  },
  "final": {
    "status": "completed",
    "verified": true,
    "version": "v2",
    "receipt": "log/final-render-v2.json",
    "visual_qa_receipt": "log/final-check-v2/visual-qa.json",
    "artifact_sha256": "d576ee70fa11366b0739893241700a5db5dd4672c984ded2d60997bfcd747b2d",
    "completed_at": "2026-07-20T16:13:07.526641+00:00"
  },
  "transcode": {
    "status": "completed",
    "verified": true,
    "receipt": "log/transcode-upload-v2.json",
    "artifact_sha256": "07a70e8fa17f11201d2743d4834c61511ad0a9cf37bce5e8bc932e8c91272288",
    "artifact_bytes": 778326514,
    "completed_at": "2026-07-20T16:25:50.708408+00:00"
  },
  "metadata": {
    "status": "completed",
    "verified": true,
    "receipt": "log/metadata-v2.json",
    "artifact_sha256": "e180f8a812604eed3bf7c0ee8afccd075d65142d3508127e3cb14cb6c6708631",
    "completed_at": "2026-07-20T16:25:57.078303+00:00"
  },
  "cleanup_superseded_intermediates": [],
  "publish": {
    "status": "completed",
    "verified": true,
    "version": "recovery-v2",
    "slot_local": "2026-07-21T09:20:00+07:00",
    "slot_utc": "2026-07-21T02:20:00Z",
    "post_ids": {
      "cmrilrryn0011j7c8kfzgx9zq": "cmrtfvet3002sj7cb869xnpp2",
      "cmriltjyk0013j7c8l7dp3o5i": "cmrtfvetl002tj7cbf0i3vkjw"
    },
    "media_receipt": "log/postiz-media-v2.json",
    "schedule_receipt": "log/postiz-schedule-v2.json",
    "completed_at": "2026-07-20T16:28:32.214174+00:00"
  },
  "cleanup": {
    "status": "completed",
    "verified": true,
    "receipt": "log/cleanup-v2.json",
    "upload_copy_retained": "output/final-upload-v2.mp4",
    "deleted_keys": [
      "final_master",
      "footage"
    ],
    "bytes_freed": 7268405680,
    "completed_at": "2026-07-20T16:34:50.938277+00:00"
  },
  "completion_barrier": {
    "status": "completed",
    "verified": true,
    "receipt": "log/completion-barrier-recovery-v2.json",
    "receipt_sha256": "2f07d090618257fe9039126cb0db0908bc80097d24eb00ff472eeabeceb0f880",
    "completed_at": "2026-07-20T16:35:33.133450+00:00"
  },
  "invalidation_history": [
    {
      "id": "intro-copy-correction-v1",
      "reason": "intro wording was changed without user approval; exact authority wording restored",
      "invalidated_at": "2026-07-20T15:17:18.443216+00:00",
      "source_canon_sha256": "2c458d69335efd4477dcf67fd280da29964e3b47baaa6fe0536efed1dc598d26",
      "old_active_version": "v1",
      "new_active_version": "recovery-v2",
      "old_intro_receipt": {
        "path": "log/intro-recovery-v2.json"
      },
      "old_final_receipt": {
        "path": "log/final-render.json"
      },
      "old_transcode_receipt": {
        "path": "log/transcode-upload.json"
      },
      "old_metadata_receipt": {
        "path": "log/metadata.json"
      },
      "old_media_receipt": {
        "path": "log/postiz-media.json"
      },
      "old_schedule_receipt": {
        "path": "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi/log/postiz-schedule.json",
        "sha256": "76b77b6405e593f7cff0d87084882488805bb3e289a77d3b16047c2e5dcbf9d8"
      },
      "retraction_receipt": {
        "path": "log/postiz-retraction-v1.json"
      },
      "old_upload": {
        "path": "/data/video-pipeline/GacMaiAudio/project/003-Nhung-La-Thu-Duoi-Ghe-Cuoi/output/final-upload.mp4",
        "path_relative": "output/final-upload.mp4",
        "exists": true,
        "sha256": "3a772c3ddbc702a99a88f9f94a3a6186566359452084f346de2adfed5cc438b1",
        "bytes": 778463200
      },
      "reuse_policy": "do not reuse old intro, final, upload, metadata, media or schedule; story/TTS/artwork/layout may be reused because copy correction does not alter them",
      "user_instruction": "gỡ hai lịch, dựng lại intro đúng nguyên văn, cấm tự ý đổi workflow"
    }
  ],
  "recovery_plan": {
    "status": "blocked_until_recovery_intro",
    "source_canon_sha256": "2c458d69335efd4477dcf67fd280da29964e3b47baaa6fe0536efed1dc598d26",
    "intro_text_authority": "Các bạn đang nghe truyện được phát từ Gác Mái Audio, chúc các bạn có những giây phút nghe truyện vui vẻ. Hãy ủng hộ chúng tôi bằng cách like video và đăng ký kênh.",
    "reuse_allowed": [
      "story",
      "tts",
      "artwork",
      "layout"
    ],
    "rebuild_required": [
      "intro",
      "footage",
      "final_render",
      "transcode",
      "metadata",
      "publish_ready",
      "postiz_media",
      "postiz_schedule",
      "cleanup"
    ],
    "workflow_lock": "no policy/workflow changes without explicit user instruction",
    "created_at": "2026-07-20T15:17:18.443216+00:00"
  },
  "cleanup_history": [
    {
      "source": "cleanup_superseded_intermediates-v1",
      "records": [
        {
          "key": "footage_v1_superseded",
          "path": "output/footage/footage.mp4",
          "sha256": "d81e2b273b8a3afbc0d4a4d95b873db036975781734ed5e5258e47179a1b6da9",
          "bytes": 3451174858,
          "receipt": "log/footage-job.json",
          "receipt_sha256": "938940f8fb694ccc04bbe9d9bb813c8fd068dc70507176c390ec1e2cbf4391cb",
          "verified": true,
          "superseded_by": "output/footage/footage-v3.mp4",
          "reason": "visual QA failed due foreign subtitle; active footage v3 passed dense QA"
        },
        {
          "key": "footage_v2_superseded",
          "path": "output/footage/footage-v2.mp4",
          "sha256": "cc609d79ae5425cee538c34ef905a6944aa737f5b130d69a2bc200a930f24d2b",
          "bytes": 3586676786,
          "receipt": "log/footage-job-v2.json",
          "receipt_sha256": "fb9521cff8e27cc1b1ff37b603b0d379bc4377c157182bd726a9e64575d3b5b6",
          "verified": true,
          "superseded_by": "output/footage/footage-v3.mp4",
          "reason": "visual QA failed due foreign subtitle; active footage v3 passed dense QA"
        }
      ],
      "reconciled_at": "2026-07-20T16:33:15.177355+00:00",
      "reason": "targets were already deleted and verified by log/cleanup.json"
    }
  ]
}
