{
  "version": 1,
  "incident_id": "014-workflow-copy-drift",
  "status": "open_nonconforming_generation_preserved",
  "detected_at": "2026-07-22T04:20:15.308152+00:00",
  "workflow_copy_authority_path": "script/workflow-copy-authority.json",
  "workflow_copy_authority_sha256": "0100059a3eddaaea331f3d7c22393296f5ba77ffc11513b0a90d267334ee78a1",
  "root_causes": [
    "skill lacked a channel-level immutable exact-copy source",
    "assistant authored intro and left-panel CTA after baseline",
    "image brief promoted assistant wording to required_text",
    "QA verified pixels against the mutated brief instead of workflow authority",
    "production/completion gates checked story canon and media hashes but not workflow-copy authority"
  ],
  "expected": {
    "spoken_intro": "Các bạn đang nghe truyện được phát từ Huyền An 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 thích video và đăng ký kênh.\n",
    "spoken_intro_sha256": "71cf479bf45cd8c95cc41d935699f3b2f4d6e373a8e0e14525120b5667fcdaf7",
    "left_panel": [
      "HUYỀN AN AUDIO",
      "Like • Chia sẻ • Đăng ký"
    ],
    "left_panel_hashes": [
      "5cc62e29b3931b7cf73c2b33f745bb6917ec20da0d14f3ab0531c772c2a0679b",
      "0cb0c14aee25be01561c5906809e4af106b7991407859679ef9125f3c3aeb845"
    ]
  },
  "actual_nonconforming": {
    "spoken_intro": "Bạn đang nghe truyện audio Hợp Đồng Hôn Nhân Hết Hạn, Tôi Để Lại Vé Tàu Một Chiều trên kênh Huyền An Audio. Nếu yêu thích video này, hãy đăng ký kênh để nghe trọn câu chuyện.\n",
    "spoken_intro_sha256": "bfe393522896dde3ac584bd51f593e8186a2f21b01b267cc527155c8a68b0b1c",
    "left_panel": [
      "HUYỀN AN AUDIO",
      "Nghe trọn câu chuyện, đăng ký"
    ],
    "left_panel_hashes": [
      "5cc62e29b3931b7cf73c2b33f745bb6917ec20da0d14f3ab0531c772c2a0679b",
      "6de664e8e0807ef651a05d6da24d015f3cb01a556c1667a69a1ff0d5f0abaaa5"
    ]
  },
  "affected_artifacts": [
    "audio/intro-voice-source.txt",
    "audio/intro-voice-pronunciation.txt",
    "audio/intro-voice.wav",
    "image/image-brief.json",
    "image/left-panel-master.png",
    "image/layout-1920x1080.png",
    "output/final-upload.mp4",
    "log/postiz-media.json",
    "log/postiz-schedule.json"
  ],
  "publish_state_preserved": {
    "slot_local": "2026-07-25T09:20:00+07:00",
    "posts": {
      "cmrq10vod000hj7cbt8zvuj6a": [
        {
          "id": "cmrvj6dh2000ej70q3ciee1qz",
          "state": "QUEUE",
          "publishDate": "2026-07-25T02:20:00+00:00"
        }
      ],
      "cmrpr0j9u000bj7cboqonlx4b": [
        {
          "id": "cmrvj6dhy000fj70qpn2i4y2i",
          "state": "QUEUE",
          "publishDate": "2026-07-25T02:20:00+00:00"
        }
      ]
    }
  },
  "corrective_side_effects_performed": false,
  "resolution_requirement": "new generation must pass workflow-copy authority gate before any provider; replacement publish requires explicit idempotent handling of existing exact pair"
}
