{
  "authority_hashes": {
    "identity_registry_sha256": "4b808b5fe9e7c8d91c76df17a2ce5f9ee7416e2c74b99e0d98390ef320f60113",
    "outline_sha256": "0302690015b0a4505f2557ee39cb5522fcb751d8252c81f3dc4efe3f1cd98242",
    "reveal_ledger_sha256": "3a8e4a521ae0fa0a3d4884c89db4458888a8b0bb40ecad035fe7f4b4113cf154",
    "story_brief_sha256": "386ba6726a992adcaf5a55b26c2343a0401578802b740c2b96f33e453fe988f8"
  },
  "beat_anchors": [
    {
      "anchor": "Bốn mươi phút trước lễ công bố",
      "beat": 1,
      "chapter": 1,
      "verified": true
    },
    {
      "anchor": "Ba tuần trước, tôi còn tin",
      "beat": 2,
      "chapter": 1,
      "verified": true
    },
    {
      "anchor": "Hôn ước ấy được hai gia đình đề nghị",
      "beat": 3,
      "chapter": 1,
      "verified": true
    },
    {
      "anchor": "một mảnh giấy xanh nhạt rơi khỏi ví Hoài Chu",
      "beat": 4,
      "chapter": 2,
      "verified": true
    },
    {
      "anchor": "đoạn giữa cây cầu lóe sáng màu xanh lạnh",
      "beat": 5,
      "chapter": 2,
      "verified": true
    },
    {
      "anchor": "Đêm ấy, chúng tôi rời xưởng gần một giờ sáng",
      "beat": 6,
      "chapter": 3,
      "verified": true
    },
    {
      "anchor": "Bên dưới lệnh là chữ ký điện tử của Cố Hoài Chu",
      "beat": 7,
      "chapter": 3,
      "verified": true
    },
    {
      "anchor": "Hôn ước có điều khoản rút lui",
      "beat": 8,
      "chapter": 4,
      "verified": true
    },
    {
      "anchor": "một bản thiết kế gần giống bản của mình",
      "beat": 9,
      "chapter": 5,
      "verified": true
    },
    {
      "anchor": "tên tôi biến mất khỏi trang giới thiệu của lễ hội",
      "beat": 10,
      "chapter": 5,
      "verified": true
    },
    {
      "anchor": "Tôi thuê một xưởng nhỏ",
      "beat": 11,
      "chapter": 5,
      "verified": true
    },
    {
      "anchor": "Ga Nam Thành, sáu năm trước",
      "beat": 12,
      "chapter": 6,
      "verified": true
    },
    {
      "anchor": "Hoài Chu đã cho tạo một bản mồi",
      "beat": 13,
      "chapter": 6,
      "verified": true
    },
    {
      "anchor": "Tư Đồng công bố một bức thư nội bộ lên mạng",
      "beat": 14,
      "chapter": 7,
      "verified": true
    },
    {
      "anchor": "Phiên ủy quyền của Hoài Chu được mở",
      "beat": 15,
      "chapter": 8,
      "verified": true
    },
    {
      "anchor": "bản mồi được cài một nhịp sáng xanh lạnh",
      "beat": 16,
      "chapter": 8,
      "verified": true
    },
    {
      "anchor": "Tôi nhận ra Cố Hoài Chu từ ngày đầu tái ngộ",
      "beat": 17,
      "chapter": 8,
      "verified": true
    },
    {
      "anchor": "nhịp thứ bảy cũng giảm đúng hai phần trăm",
      "beat": 18,
      "chapter": 9,
      "verified": true
    },
    {
      "anchor": "Lễ hội được dùng bản thiết kế của tôi tối nay với bốn điều kiện",
      "beat": 19,
      "chapter": 9,
      "verified": true
    },
    {
      "anchor": "Tôi đã giao toàn bộ quyền quản lý dự án cho hội đồng tạm thời",
      "beat": 20,
      "chapter": 9,
      "verified": true
    },
    {
      "anchor": "Kết luận của hội đồng được công bố một tuần sau",
      "beat": 21,
      "chapter": 10,
      "verified": true
    },
    {
      "anchor": "Anh lấy từ túi áo hai tấm vé tàu mới",
      "beat": 22,
      "chapter": 10,
      "verified": true
    }
  ],
  "canonical_title": "Ngày Tôi Hủy Hôn, Anh Mới Nhận Ra Chiếc Vé Sáu Năm Trước",
  "chapter_rows": [
    {
      "chapter": 1,
      "path": "story/chapters/chapter-01.txt",
      "sha256": "05bf698b4302e4b5e25b1b32111ab609052124f46f73ad4f8bb524b93b5e61dc",
      "words": 1499,
      "bytes": 9353
    },
    {
      "chapter": 2,
      "path": "story/chapters/chapter-02.txt",
      "sha256": "dc15b348f5be1ae69f94589851b2bab61df451d1aea1d6c1cf7e8ae01fea9c1c",
      "words": 1341,
      "bytes": 8276
    },
    {
      "chapter": 3,
      "path": "story/chapters/chapter-03.txt",
      "sha256": "370da16acbdd9ecf3b3cfa2ac0c60dd673023f89c6a1fa0c39618d8f630177d9",
      "words": 1327,
      "bytes": 8236
    },
    {
      "chapter": 4,
      "path": "story/chapters/chapter-04.txt",
      "sha256": "53a4cc23d8ae50534891af8d7d713d35e7c4d6ae036020375ee4b6476c687fec",
      "words": 1263,
      "bytes": 7831
    },
    {
      "chapter": 5,
      "path": "story/chapters/chapter-05.txt",
      "sha256": "53cd8c9a66955fb47c6d243cd62a0f4202a6ea12d4a9d19172bd3471d859e08a",
      "words": 1329,
      "bytes": 8293
    },
    {
      "chapter": 6,
      "path": "story/chapters/chapter-06.txt",
      "sha256": "f5b593a3bb010d77a283429cc925f9ae3e00a5d85c167127b48e3dff9c8d7440",
      "words": 1326,
      "bytes": 8153
    },
    {
      "chapter": 7,
      "path": "story/chapters/chapter-07.txt",
      "sha256": "f3a6c51283008999a3ec2f172a6105d46cbcef096994740c089cdc63f7b0ef6a",
      "words": 1344,
      "bytes": 8301
    },
    {
      "chapter": 8,
      "path": "story/chapters/chapter-08.txt",
      "sha256": "75e5469a7e008762bd096b873541369b7ce51aa7ceb3fbbf053143881e61ebcd",
      "words": 1413,
      "bytes": 8723
    },
    {
      "chapter": 9,
      "path": "story/chapters/chapter-09.txt",
      "sha256": "0e64cc4f52f5ff62f64b296fc46d41f43253f20384adbb772f3bfd96457843f6",
      "words": 1355,
      "bytes": 8517
    },
    {
      "chapter": 10,
      "path": "story/chapters/chapter-10.txt",
      "sha256": "d479a881b2df2f7a6de3dc23a7e1742cc200976fc06b0ccb6ae675eadc67feb3",
      "words": 1465,
      "bytes": 8994
    }
  ],
  "chapters": [
    {
      "number": 1,
      "path": "story/chapters/chapter-01.txt",
      "sha256": "05bf698b4302e4b5e25b1b32111ab609052124f46f73ad4f8bb524b93b5e61dc",
      "word_count": 1499,
      "bytes": 9353
    },
    {
      "number": 2,
      "path": "story/chapters/chapter-02.txt",
      "sha256": "dc15b348f5be1ae69f94589851b2bab61df451d1aea1d6c1cf7e8ae01fea9c1c",
      "word_count": 1341,
      "bytes": 8276
    },
    {
      "number": 3,
      "path": "story/chapters/chapter-03.txt",
      "sha256": "370da16acbdd9ecf3b3cfa2ac0c60dd673023f89c6a1fa0c39618d8f630177d9",
      "word_count": 1327,
      "bytes": 8236
    },
    {
      "number": 4,
      "path": "story/chapters/chapter-04.txt",
      "sha256": "53a4cc23d8ae50534891af8d7d713d35e7c4d6ae036020375ee4b6476c687fec",
      "word_count": 1263,
      "bytes": 7831
    },
    {
      "number": 5,
      "path": "story/chapters/chapter-05.txt",
      "sha256": "53cd8c9a66955fb47c6d243cd62a0f4202a6ea12d4a9d19172bd3471d859e08a",
      "word_count": 1329,
      "bytes": 8293
    },
    {
      "number": 6,
      "path": "story/chapters/chapter-06.txt",
      "sha256": "f5b593a3bb010d77a283429cc925f9ae3e00a5d85c167127b48e3dff9c8d7440",
      "word_count": 1326,
      "bytes": 8153
    },
    {
      "number": 7,
      "path": "story/chapters/chapter-07.txt",
      "sha256": "f3a6c51283008999a3ec2f172a6105d46cbcef096994740c089cdc63f7b0ef6a",
      "word_count": 1344,
      "bytes": 8301
    },
    {
      "number": 8,
      "path": "story/chapters/chapter-08.txt",
      "sha256": "75e5469a7e008762bd096b873541369b7ce51aa7ceb3fbbf053143881e61ebcd",
      "word_count": 1413,
      "bytes": 8723
    },
    {
      "number": 9,
      "path": "story/chapters/chapter-09.txt",
      "sha256": "0e64cc4f52f5ff62f64b296fc46d41f43253f20384adbb772f3bfd96457843f6",
      "word_count": 1355,
      "bytes": 8517
    },
    {
      "number": 10,
      "path": "story/chapters/chapter-10.txt",
      "sha256": "d479a881b2df2f7a6de3dc23a7e1742cc200976fc06b0ccb6ae675eadc67feb3",
      "word_count": 1465,
      "bytes": 8994
    }
  ],
  "chapters_present": 10,
  "duplicate_paragraphs": [],
  "estimated_minutes_at_baseline": 59.143,
  "exact_sequential_join": true,
  "expected_chapters": 10,
  "gates": {
    "authority_lock_matches": true,
    "chapter_count": true,
    "duplicate_paragraph_gate": true,
    "exact_sequential_join": true,
    "heading_free": true,
    "identity_gate": true,
    "locked_beat_coverage": true,
    "production_marker_free": true,
    "protected_reveal_gate": true,
    "single_prose_owner": true,
    "whitespace_hygiene": true,
    "word_count_in_range": true
  },
  "identity_hits": [],
  "identity_required_present": {
    "Cố Hoài Chu": true,
    "Hạ Tư Đồng": true,
    "Lâm Khải Dương": true,
    "Tần Mộc Thanh": true,
    "Tống Vãn Ninh": true
  },
  "issues": [],
  "promotion_performed": false,
  "prose_owner": "single_sequential_owner",
  "protected_reveal_hits": [],
  "schema_version": 1,
  "spoken_narration": {
    "exact_sequential_join": true,
    "path": "story/spoken-narration.txt",
    "sha256": "093fc84cb99831967a6fa911f5e5be41c3aca6f50c04837ce5c5588f587bd2b1",
    "word_count": 13662,
    "bytes": 84696
  },
  "status": "completed",
  "target_range": [
    13600,
    14000
  ],
  "total": 13662,
  "total_words": 13662,
  "verified": true,
  "word_count_regex": "[\\wÀ-ỹĐđ]+",
  "story_canon": {
    "path": "story/story-canon.txt",
    "bytes": 84696,
    "sha256": "093fc84cb99831967a6fa911f5e5be41c3aca6f50c04837ce5c5588f587bd2b1",
    "exact_sequential_join": true
  },
  "repaired_missing_story_canon_at": "2026-07-20T04:57:04.805510+00:00",
  "tts_words_per_minute": 231
}
