{
  "project_id": "002-Mai-Kinh-Giu-Mot-Mua-Chim",
  "channel": "Gác Mái Audio",
  "channel_id": "gac-mai-audio",
  "status": "completed",
  "story_title": "Mái Kính Giữ Một Mùa Chim",
  "story_duration_target_minutes": [
    40,
    60
  ],
  "story_duration_seconds": 2590.04,
  "active_version": "v1",
  "created_at": "2026-07-20T00:40:51.525803+00:00",
  "paths": {
    "root": "/data/video-pipeline/GacMaiAudio/project/002-Mai-Kinh-Giu-Mot-Mua-Chim",
    "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_candidate": "work/story/run-002/story-candidate.txt",
    "producer_close_receipt": "work/story/run-002/producer-close.json",
    "story_manifest": "script/story-manifest.json",
    "story_canon": "story/story-canon.txt",
    "spoken_narration": "story/spoken-narration.txt",
    "authority_receipt": "log/authority-validation.json",
    "candidate_receipt": "log/run-002/candidate-validation.json",
    "originality_receipt": "log/run-002/originality-validation.json",
    "semantic_receipt": "log/run-002/semantic-review.json",
    "voice_test_receipt": "work/voice-test/run-002/receipt.json",
    "promotion_receipt": "log/run-002/promotion.json",
    "promotion_verification_receipt": "log/run-002/promotion-verification.json",
    "tts_manifest": "script/tts-manifest.json",
    "tts_partial_manifest": "script/tts-manifest.partial.json",
    "tts_concat": "audio/concat.txt",
    "tts_audio": "audio/story-full.wav",
    "tts_receipt": "log/tts-production.json",
    "image_prompts": "script/image-prompts.json",
    "intro_poster_master": "image/intro-poster-master.png",
    "intro_poster": "image/intro-poster-1920x1080.png",
    "left_panel_master": "image/left-panel-master.png",
    "left_panel": "image/left-panel-656x1080.png",
    "right_panel_master": "image/right-panel-master.png",
    "right_panel": "image/right-panel-656x1080.png",
    "layout": "image/layout-1920x1080.png",
    "layout_manifest": "image/layout-manifest.json",
    "layout_receipt": "log/layout.json",
    "artwork_visual_receipt": "log/artwork-visual-review.json",
    "artwork_orientation_receipt": "log/artwork-orientation.json",
    "intro": "output/intro/intro.mp4",
    "intro_receipt": "log/intro-libx264-recovery.json",
    "intro_qa_receipt": "log/intro-check/visual-qa.json",
    "footage": "output/footage/footage.mp4",
    "footage_receipt": "log/footage-job.json",
    "footage_qa_receipt": "log/footage-check/visual-qa.json",
    "final_master": "output/final.mp4",
    "final_receipt": "log/final-render.json",
    "final_qa_receipt": "log/final-check/visual-qa.json",
    "final_upload": "output/final-upload.mp4",
    "transcode_receipt": "log/transcode-upload.json",
    "metadata": "output/info.txt",
    "metadata_receipt": "log/metadata.json",
    "publish_ready_receipt": "log/publish-ready.json",
    "postiz_identity_receipt": "log/postiz-identity.json",
    "postiz_media_receipt": "log/postiz-media.json",
    "postiz_schedule_receipt": "log/postiz-schedule.json",
    "cleanup_receipt": "log/cleanup.json",
    "candidate": "work/story/run-002/story-candidate.txt",
    "candidate_run_manifest": "script/story-manifest.json",
    "originality_inventory": "log/run-002/originality-corpus.json",
    "semantic_markers_receipt": "log/run-002/semantic-markers.json",
    "image_prompt_reconciliation_receipt": "log/image-prompt-reconciliation.json",
    "artwork_generation_receipt": "log/artwork-generation.json",
    "intro_master": "image/intro-poster-master.png",
    "intro_normalized": "image/intro-poster-1920x1080.png",
    "left_panel_normalized": "image/left-panel-656x1080.png",
    "right_panel_normalized": "image/right-panel-656x1080.png",
    "orientation_receipt": "log/artwork-orientation.json",
    "normalized_visual_receipt": "log/artwork-normalized-visual-review.json",
    "layout_normalization_receipt": "log/layout-normalization.json",
    "intro_voice": "audio/intro-voice.wav",
    "intro_silence": "audio/intro-silence-2s.wav",
    "intro_audio": "audio/intro-full.wav",
    "intro_user_approval_receipt": "log/intro-poster-user-approval.json",
    "intro_qa_dir": "log/intro-check",
    "footage_qa_dir": "log/footage-check",
    "final_qa_dir": "log/final-check"
  },
  "steps": {
    "preflight": "completed",
    "story": "completed",
    "voice_test": "completed",
    "tts": "completed",
    "layout": "completed",
    "artwork": "completed",
    "footage": "completed",
    "intro": "completed",
    "final_render": "completed",
    "transcode": "completed",
    "metadata": "completed",
    "publish_ready": "completed",
    "upload": "completed",
    "cleanup": "completed"
  },
  "updated_at": "2026-07-20T06:23:26.282976+00:00",
  "authority_gate": {
    "status": "completed",
    "verified": true,
    "receipt": "log/authority-validation.json",
    "receipt_sha256": "61dcb7cbbc7d9284097da8f14b022c296b3834a39017aa29251043b1d8d996e0",
    "locked_at": "2026-07-20T00:45:25.466782+00:00"
  },
  "story_run": {
    "run_id": "run-002",
    "owner": "single_revision_owner_deleg_9f255448",
    "source_candidate": "work/story/run-001/story-candidate.txt",
    "source_sha256": "5c69eb40d74a71948dec47709c2b176a9667e43d5f5e81f86950f49174730b3d",
    "candidate_path": "work/story/run-002/story-candidate.txt",
    "producer_close_receipt": "work/story/run-002/producer-close.json",
    "revision_scope": "compress cold open before Bốn ngày trước from 287 to 120-170 words; preserve all downstream prose",
    "state": "promoted",
    "consumer_access": "canon_only",
    "authority_hashes": {
      "story_brief": {
        "path": "story/story-brief.json",
        "sha256": "d2a2359826373b9ae1349b3890b76d29c21ac84db1733b99925f0f2ffcd55145"
      },
      "characters": {
        "path": "story/characters.json",
        "sha256": "8243e0344ab7855823ee6303849b1ac29abd2f48919bba0c58fc2b789f290381"
      },
      "ledger": {
        "path": "story/ledger.json",
        "sha256": "f34d39728bf894a856368d54025ee33059873a2a59691746b404c8290e2e487a"
      },
      "outline": {
        "path": "script/outline.json",
        "sha256": "945f52d13ceb1870cbe833287de84f3cf4d4b8c6a94c11a35b2f144c439c2bd8"
      },
      "identity_registry": {
        "path": "script/identity-registry.json",
        "sha256": "0e62e8aa523d21944173f2859d0c9b726f3675a53548dc1ae5aafe4a209ee0f2"
      },
      "reveal_ledger": {
        "path": "script/reveal-ledger.json",
        "sha256": "f84a7ce026d0ad304336217de4698515200caeafdcdba1bf7cd323a31aa4d802"
      }
    },
    "created_at": "2026-07-20T00:54:23.076928+00:00",
    "updated_at": "2026-07-20T01:01:20.683778+00:00",
    "candidate_sha256": "c02dc7bd35b5ac35808f9d3542c0a1fad8f23367dc7b6b62b6dc02e2ffc7cc86",
    "byte_count": 64882,
    "word_count": 10610,
    "producer_close_sha256": "f282b7d73e395e8ae3d41f422fdb53481760cd1c7ebebba59d516cc1748ce65c",
    "gates": {
      "candidate": {
        "status": "completed",
        "verified": true,
        "receipt": "log/run-002/candidate-validation.json",
        "receipt_sha256": "0faad9d15c3f90959b1e6669aae035618cfd4afee2273e179c0fbcbb94ec64ef",
        "candidate_sha256": "c02dc7bd35b5ac35808f9d3542c0a1fad8f23367dc7b6b62b6dc02e2ffc7cc86"
      },
      "originality": {
        "status": "completed",
        "verified": true,
        "receipt": "log/run-002/originality-validation.json",
        "receipt_sha256": "03c9528017cb9372024126ce55a738f630299a266f024080700797f1aa93fad3",
        "candidate_sha256": "c02dc7bd35b5ac35808f9d3542c0a1fad8f23367dc7b6b62b6dc02e2ffc7cc86"
      },
      "semantic_markers": {
        "status": "completed",
        "verified": true,
        "receipt": "log/run-002/semantic-markers.json",
        "receipt_sha256": "0676707775b85ac33b2d6b6027e2de6625636f0250cc950baf1de1a13944ddf8",
        "candidate_sha256": "c02dc7bd35b5ac35808f9d3542c0a1fad8f23367dc7b6b62b6dc02e2ffc7cc86"
      }
    },
    "semantic_review": "completed",
    "promotion": {
      "status": "completed",
      "verified": true,
      "receipt": "log/run-002/promotion.json",
      "verification_receipt": "log/run-002/promotion-verification.json"
    }
  },
  "story_run_history": [
    {
      "run_id": "run-001",
      "status": "superseded_failed_candidate_gate",
      "candidate_path": "work/story/run-001/story-candidate.txt",
      "candidate_sha256": "5c69eb40d74a71948dec47709c2b176a9667e43d5f5e81f86950f49174730b3d",
      "producer_close_receipt": "work/story/run-001/producer-close.json",
      "producer_close_sha256": "a9446042b4c14edea5e2399955ce4ba5f4a5a2fc4f9d399fddf75ed4f7279ba2",
      "candidate_validation_receipt": "log/candidate-validation.json",
      "candidate_validation_sha256": "5d5f2a62f6d6f3f1ed532c1284e9d0a5fcc2ad4efcd3ccb369d5e329d62ca7a5",
      "blockers": [
        "cold_open_contract"
      ],
      "false_positive_reconciled": [
        "naming_rules"
      ],
      "promotion_allowed": false,
      "superseded_by": "run-002",
      "recorded_at": "2026-07-20T00:55:22.416704+00:00"
    }
  ],
  "canon_sha256": "c02dc7bd35b5ac35808f9d3542c0a1fad8f23367dc7b6b62b6dc02e2ffc7cc86",
  "spoken_narration_sha256": "c02dc7bd35b5ac35808f9d3542c0a1fad8f23367dc7b6b62b6dc02e2ffc7cc86",
  "voice_test_run": {
    "run_id": "run-002",
    "candidate_sha256": "c02dc7bd35b5ac35808f9d3542c0a1fad8f23367dc7b6b62b6dc02e2ffc7cc86",
    "receipt": "work/voice-test/run-002/receipt.json",
    "status": "completed",
    "verified": true,
    "wpm": 232.34538504918854,
    "predicted_full_minutes": 45.6647761596548
  },
  "tts_production": {
    "status": "completed",
    "verified": true,
    "path": "audio/story-full.wav",
    "sha256": "dfcd854aa17da9b1712f8b91704f1a10b3cb6f48c3df7a7bf99fb5f8af4559fc",
    "receipt": "log/tts-production.json",
    "segment_count": 247,
    "duration_seconds": 2590.04
  },
  "artwork_gate": {
    "status": "completed",
    "visual_verified": true,
    "orientation_verified": true,
    "artifact_sha256": {
      "left_panel": "a3f858a8a07eca9cabca7499582ed3b2adde04833888dea2567deef7559892dd",
      "right_panel": "2ea006c32f5df2d8575d599a32ad373a43bff4dc46bdeeaaea60f4b6a84db767",
      "intro": "7cdb06372aa9cb68e587659770d6e5e2e0e8d1a1ba6d214bcae978f2c1203323"
    },
    "visual_receipt": "log/artwork-visual-review.json",
    "orientation_receipt": "log/artwork-orientation.json",
    "user_approval_receipt": "log/intro-poster-user-approval.json",
    "downstream_blocked": false,
    "user_approved": true,
    "future_review_policy": "internal_qa_auto_promote_unless_preview_requested"
  },
  "intro_encoder_recovery": {
    "status": "ready",
    "from_receipt": "log/intro.json",
    "from_receipt_sha256": "7a8e1f42e65c0819f30de296ba72cddfcc0472d3f3dedce17704e8a377ce16cb",
    "to_receipt": "log/intro-libx264-recovery.json",
    "failed_encoder": "h264_nvenc",
    "failure_reason": "local ffmpeg cannot load libcuda.so.1",
    "recovery_encoder": "libx264",
    "tts_reused": true,
    "voice_sha256": "399e7f5338de2efea13c167469b57ea2bab5bfc2253e238005462bc2f7625206",
    "silence_sha256": "130cfa260a3415c85433fb10630f3d56431e474c2a0ad132d9b49c769a737fe0",
    "intro_audio_sha256": "2fb1e77170881eb5e0b7b68340c5644ff8fa5b8f53fd0b82d3a49fe26f44997d",
    "zero_byte_output_removed": true,
    "prepared_at": "2026-07-20T04:21:28.096038+00:00"
  },
  "intro_qa": {
    "status": "completed",
    "verified": true,
    "receipt": "log/intro-check/visual-qa.json",
    "video_sha256": "555549d812cccec76ec7c1b4cda6aa6e68ba68a45f4ecb0fa85b2177b28b51a0"
  },
  "footage_preflight": {
    "status": "completed",
    "verified": true,
    "checks": {
      "status_ok": true,
      "nvenc": true,
      "footage_dir": true,
      "output_policy": true
    },
    "health": {
      "service": "footage-render-huyenan",
      "status": "ok",
      "gpu": "NVIDIA GeForce GTX 1060 6GB, 3, 1524, 6144",
      "h264_nvenc": true,
      "video_root": "/data/video-pipeline",
      "default_footage_dir": "/data/video-pipeline/GacMaiAudio/footage",
      "output_policy": "request_path_under_video_root",
      "queue_depth": 0,
      "running": [
        "89f09fca0db049b9845acd992f4d82ed"
      ]
    },
    "checked_at": "2026-07-20T04:24:07.478421+00:00"
  },
  "footage_qa": {
    "status": "completed",
    "verified": true,
    "receipt": "log/footage-check/visual-qa.json",
    "receipt_sha256": "542a8b438a0e86250527951411dd738321c098ad7522167b6bbaa08c25468fed",
    "extraction_receipt": "log/footage-check/extraction.json",
    "extraction_receipt_sha256": "42dae2ec8df918376b718a831f49ca4c81b9dd469c4ba98713f4a7fa34eb7f98",
    "video_sha256": "fbb29c6e007ccb9bbfa8ba1d1e51c300048889a9faace5d2d0b3fbb612a371dc"
  },
  "final_qa": {
    "status": "completed",
    "verified": true,
    "receipt": "log/final-check/visual-qa.json",
    "receipt_sha256": "30bb010caa3429af9a0f06394a5ca5e45cda5beb3b8e31cfbba6e3a4df3a4274",
    "video_sha256": "098643a2d2108d7298b97f2142b928d004b1a96595f49267329ab6bbb35b6d33"
  },
  "metadata_production": {
    "status": "completed",
    "verified": true,
    "path": "output/info.txt",
    "sha256": "b3dfaa7d04e5405277066bef6928bb833bea21b015313e0fc1160839e4973942",
    "receipt": "log/metadata.json",
    "youtube_title": "Truyện Audio | MÁI KÍNH GIỮ MỘT MÙA CHIM (Full) | Gác Mái Audio"
  },
  "transcode_upload": {
    "status": "completed",
    "verified": true,
    "path": "output/final-upload.mp4",
    "sha256": "b0d92d462a4d4cb8557e93dcd2b6cd561a9f1a2e9cfff87fccfb8072609b1560",
    "bytes": 778331802,
    "receipt": "log/transcode-upload.json"
  },
  "publish_preflight": {
    "status": "completed",
    "verified": true,
    "checks": {
      "ready_verified": true,
      "identity_verified": true,
      "media_absent": true,
      "schedule_absent": true,
      "upload_hash_current": true,
      "metadata_hash_current": true,
      "thumbnail_hash_current": true
    },
    "slot_candidate_local": "2026-07-20T19:00:00+07:00",
    "identity_receipt": "log/postiz-identity.json",
    "identity_receipt_sha256": "44bf7b1605c9a422f8364e64d3449b05792615ff9f904dbc2a2a86b1b503d764",
    "ready_receipt_sha256": "116916b89806288360fdeb785459a3a7a17b90763d1b19eef6566c3abd809816",
    "checked_at": "2026-07-20T06:19:44.794837+00:00"
  },
  "cleanup": {
    "status": "completed",
    "verified": true,
    "receipt": "log/cleanup.json",
    "upload_copy_retained": "output/final-upload.mp4",
    "deleted_keys": [
      "final_master",
      "footage"
    ],
    "bytes_freed": 6476811380,
    "completed_at": "2026-07-20T06:22:32.478192+00:00"
  },
  "layout_state_reconciliation": {
    "status": "completed",
    "verified": true,
    "reason": "receipt and artifact were terminal PASS; step field was stale in_progress bookkeeping",
    "checks": {
      "receipt_completed": true,
      "receipt_verified": true,
      "canon_current": true,
      "layout_exists": true,
      "layout_hash_current": true
    },
    "receipt": "log/layout.json",
    "receipt_sha256": "1cd510f43b956a801df35936e6ecdfd027d0f583f40f0a111d14cf7cc94f9fad",
    "layout_sha256": "19f09cc801396cd18c961a41a1ef75821228ed68792f481658d8effe28759f8c",
    "reconciled_at": "2026-07-20T06:23:26.282976+00:00"
  }
}
