{
  "date": "2026-10-12",
  "phase_count": 14,
  "step_count": 78,
  "feature_count": 479,
  "legacy_count": 188,
  "capability_count": 236,
  "blueprint_count": 29,
  "tool_keys": [
    "brief",
    "references",
    "market",
    "sales",
    "publish",
    "trust",
    "collab",
    "enterprise",
    "outline",
    "bible",
    "fiction",
    "eval",
    "drafts",
    "review",
    "quality",
    "qualityOps",
    "readerInsight",
    "citations",
    "cover",
    "export",
    "audio",
    "voice",
    "podcast",
    "marketplace",
    "launch",
    "ops"
  ],
  "covered_areas": [
    "ai",
    "blueprints",
    "market",
    "refs",
    "outline",
    "generation",
    "bible",
    "fiction",
    "quality",
    "quality-ops",
    "reader-insight",
    "citations",
    "factcheck",
    "cover",
    "pagination",
    "formats",
    "export",
    "illustration",
    "audio",
    "voice",
    "podcast",
    "publish",
    "launch",
    "sales",
    "collab",
    "eval",
    "trust",
    "enterprise",
    "ops",
    "marketplace",
    "debate",
    "plan",
    "batch",
    "integrations",
    "billing",
    "api-auth",
    "setup",
    "knowledge",
    "authz"
  ],
  "api_routes": [
    "/api/audio/sample",
    "/api/batch/preview",
    "/api/batch/run",
    "/api/cover/prompts",
    "/api/cover/render",
    "/api/export",
    "/api/gen/generate",
    "/api/gen/outline",
    "/api/illustrations/render",
    "/api/inngest",
    "/api/integrations/slack",
    "/api/integrations/telegram",
    "/api/market/research",
    "/api/market/sample",
    "/api/plan/artifact",
    "/api/plan/feasibility",
    "/api/plan/operations",
    "/api/plan/replan",
    "/api/plan/strategy",
    "/api/plan/tasks",
    "/api/publish/gumroad",
    "/api/publish/metadata",
    "/api/refs/ingest",
    "/api/review/session",
    "/api/setup/status",
    "/api/sop/orgs",
    "/api/sop",
    "/api/sop/versions",
    "/api/stripe/checkout",
    "/api/stripe/portal",
    "/api/stripe/webhook",
    "/api/v1/batch",
    "/api/v1/books/[id]/approve-outline",
    "/api/v1/books/[id]/export",
    "/api/v1/books/[id]/generate",
    "/api/v1/books/[id]",
    "/api/v1/books",
    "/api/v1/byok/[id]",
    "/api/v1/byok",
    "/api/v1/me",
    "/api/v1/models/overrides",
    "/api/v1/openapi.json",
    "/api/v1/runs/[id]"
  ],
  "source": "Mã nguồn và hồ sơ triển khai tại ngày cập nhật; không đại diện uptime/kiểm thử live hiện tại.",
  "rows": [
    {
      "group": "Phase step",
      "phase": "F01",
      "step": "1",
      "feature": "Chọn mục tiêu chính",
      "status": "Đã xong",
      "implemented": "Brief/F01: mục tiêu và chỉ số chính",
      "remaining": "",
      "id": "legacy-1",
      "phase_ids": [
        1
      ],
      "steps": {
        "1": [
          1
        ]
      },
      "purpose": "Giới hạn phạm vi và số tiền trước khi đầu tư vào một đầu sách.",
      "how": "Ghi một mục tiêu đo được và chỉ số dùng để đánh giá.",
      "input": "Mục tiêu và chỉ số chính; Người mua; Người sử dụng; Thị trường / locale / định dạng; Bằng chứng chuyên môn; Tiền tệ (ví dụ USD); Vốn tổng; Vốn nghiên cứu; Mức lỗ tối đa; Ngày đánh giá; Nhánh chưa làm và điều kiện kích hoạt",
      "output": "Một brief có mục tiêu, ngân sách, mức lỗ và ngày xem lại.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=1"
    },
    {
      "group": "Phase step",
      "phase": "F01",
      "step": "2",
      "feature": "Tách người mua và người sử dụng",
      "status": "Đã xong",
      "implemented": "F01 và candidate: người mua/người sử dụng riêng",
      "remaining": "",
      "id": "legacy-2",
      "phase_ids": [
        1
      ],
      "steps": {
        "1": [
          2
        ]
      },
      "purpose": "Giới hạn phạm vi và số tiền trước khi đầu tư vào một đầu sách.",
      "how": "Mô tả riêng người trả tiền và người thực hiện nhiệm vụ trong sách.",
      "input": "Mục tiêu và chỉ số chính; Người mua; Người sử dụng; Thị trường / locale / định dạng; Bằng chứng chuyên môn; Tiền tệ (ví dụ USD); Vốn tổng; Vốn nghiên cứu; Mức lỗ tối đa; Ngày đánh giá; Nhánh chưa làm và điều kiện kích hoạt",
      "output": "Một brief có mục tiêu, ngân sách, mức lỗ và ngày xem lại.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=1"
    },
    {
      "group": "Phase step",
      "phase": "F01",
      "step": "3",
      "feature": "Chọn thị trường, locale và định dạng",
      "status": "Đã xong",
      "implemented": "F01: thị trường, ngôn ngữ, định dạng, kênh",
      "remaining": "",
      "id": "legacy-3",
      "phase_ids": [
        1
      ],
      "steps": {
        "1": [
          3
        ]
      },
      "purpose": "Giới hạn phạm vi và số tiền trước khi đầu tư vào một đầu sách.",
      "how": "Chọn quốc gia, ngôn ngữ, định dạng và kênh dự định bán.",
      "input": "Mục tiêu và chỉ số chính; Người mua; Người sử dụng; Thị trường / locale / định dạng; Bằng chứng chuyên môn; Tiền tệ (ví dụ USD); Vốn tổng; Vốn nghiên cứu; Mức lỗ tối đa; Ngày đánh giá; Nhánh chưa làm và điều kiện kích hoạt",
      "output": "Một brief có mục tiêu, ngân sách, mức lỗ và ngày xem lại.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=1"
    },
    {
      "group": "Phase step",
      "phase": "F01",
      "step": "4",
      "feature": "Ghi năng lực chuyên môn",
      "status": "Đã xong",
      "implemented": "F01: hồ sơ chuyên môn và nguồn",
      "remaining": "",
      "id": "legacy-4",
      "phase_ids": [
        1
      ],
      "steps": {
        "1": [
          4
        ]
      },
      "purpose": "Giới hạn phạm vi và số tiền trước khi đầu tư vào một đầu sách.",
      "how": "Ghi kinh nghiệm, tài liệu hoặc chuyên gia có thể kiểm chứng nội dung.",
      "input": "Mục tiêu và chỉ số chính; Người mua; Người sử dụng; Thị trường / locale / định dạng; Bằng chứng chuyên môn; Tiền tệ (ví dụ USD); Vốn tổng; Vốn nghiên cứu; Mức lỗ tối đa; Ngày đánh giá; Nhánh chưa làm và điều kiện kích hoạt",
      "output": "Một brief có mục tiêu, ngân sách, mức lỗ và ngày xem lại.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=1"
    },
    {
      "group": "Phase step",
      "phase": "F01",
      "step": "5",
      "feature": "Phân bổ ngân sách và mức lỗ",
      "status": "Đã xong",
      "implemented": "Vốn tổng/nghiên cứu/lỗ; chặn vốn nghiên cứu vượt tổng",
      "remaining": "Chưa đo và cưỡng chế tổng phí nhà cung cấp theo thời gian thực",
      "id": "legacy-5",
      "phase_ids": [
        1
      ],
      "steps": {
        "1": [
          5
        ]
      },
      "purpose": "Giới hạn phạm vi và số tiền trước khi đầu tư vào một đầu sách.",
      "how": "Nhập vốn tổng, vốn nghiên cứu và mức lỗ tối đa cùng một tiền tệ.",
      "input": "Mục tiêu và chỉ số chính; Người mua; Người sử dụng; Thị trường / locale / định dạng; Bằng chứng chuyên môn; Tiền tệ (ví dụ USD); Vốn tổng; Vốn nghiên cứu; Mức lỗ tối đa; Ngày đánh giá; Nhánh chưa làm và điều kiện kích hoạt",
      "output": "Một brief có mục tiêu, ngân sách, mức lỗ và ngày xem lại.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=1"
    },
    {
      "group": "Phase step",
      "phase": "F01",
      "step": "6",
      "feature": "Chốt ngày đánh giá và nhánh chưa làm",
      "status": "Đã xong",
      "implemented": "Ngày review, phạm vi loại trừ, điều kiện xem lại trong quyết định",
      "remaining": "",
      "id": "legacy-6",
      "phase_ids": [
        1
      ],
      "steps": {
        "1": [
          6
        ]
      },
      "purpose": "Giới hạn phạm vi và số tiền trước khi đầu tư vào một đầu sách.",
      "how": "Chọn ngày đánh giá, ghi nhánh chưa làm; lưu rồi mở Duyệt giai đoạn.",
      "input": "Mục tiêu và chỉ số chính; Người mua; Người sử dụng; Thị trường / locale / định dạng; Bằng chứng chuyên môn; Tiền tệ (ví dụ USD); Vốn tổng; Vốn nghiên cứu; Mức lỗ tối đa; Ngày đánh giá; Nhánh chưa làm và điều kiện kích hoạt",
      "output": "Một brief có mục tiêu, ngân sách, mức lỗ và ngày xem lại.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=1"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "1",
      "feature": "Lập ngách và kế hoạch lấy mẫu",
      "status": "Đã xong",
      "implemented": "Candidate, phạm vi, phương pháp và kế hoạch lấy mẫu; ghi tay/CSV",
      "remaining": "",
      "id": "legacy-7",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          1
        ]
      },
      "purpose": "Tìm nhu cầu có bằng chứng trước khi viết và kiểm tra khả năng tiếp cận người mua.",
      "how": "Ghi câu hỏi và cách lấy mẫu; lập ngách ứng viên với người mua/người dùng riêng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Ma trận nhu cầu, phản chứng và quyết định thử tiếp hoặc dừng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "2",
      "feature": "So sánh sách và giải pháp thay thế",
      "status": "Đang làm",
      "implemented": "Catalog đối thủ sách/khóa học/tool/service; tìm URL thật qua Tavily",
      "remaining": "Cần lưu F01 đã duyệt lên cloud và chọn tổ chức trước tìm nguồn; chưa tự trích toàn bộ metadata từ marketplace",
      "id": "legacy-8",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          2
        ]
      },
      "purpose": "Tìm nhu cầu có bằng chứng trước khi viết và kiểm tra khả năng tiếp cận người mua.",
      "how": "Nhập sản phẩm cạnh tranh và giải pháp ngoài sách; ghi nguồn và điểm khác biệt.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Ma trận nhu cầu, phản chứng và quyết định thử tiếp hoặc dừng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "3",
      "feature": "Quan sát tìm kiếm / BSR / giá",
      "status": "Đang làm",
      "implemented": "Quan sát giá/search/BSR có nguồn/ngày/cửa sổ; unknown khác zero",
      "remaining": "Chưa có adapter BSR/search-volume chuyên dụng và lịch snapshot thật",
      "id": "legacy-9",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          3
        ]
      },
      "purpose": "Tìm nhu cầu có bằng chứng trước khi viết và kiểm tra khả năng tiếp cận người mua.",
      "how": "Ghi từng quan sát có ngày, quốc gia và nguồn. BSR không tự chuyển thành doanh số.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Ma trận nhu cầu, phản chứng và quyết định thử tiếp hoặc dừng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "4",
      "feature": "Phân tích review và phỏng vấn",
      "status": "Đang làm",
      "implemented": "Review/interview có quyền; báo cáo nhóm chủ đề, chống đếm review trùng, đếm sắc thái",
      "remaining": "Chủ đề còn gán thủ công; chưa AI coding transcript/clustering",
      "id": "legacy-10",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          4
        ]
      },
      "purpose": "Tìm nhu cầu có bằng chứng trước khi viết và kiểm tra khả năng tiếp cận người mua.",
      "how": "Ghi trích đoạn, chủ đề, sắc thái; phỏng vấn cần consent. Xem tổng hợp chủ đề và kiểm nguồn.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Ma trận nhu cầu, phản chứng và quyết định thử tiếp hoặc dừng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "5",
      "feature": "Lập ma trận nhu cầu",
      "status": "Đã xong",
      "implemented": "Need → evidence IDs → impact → solution/counterevidence; báo cáo chỉ ra mã thiếu",
      "remaining": "Không tự chứng minh nhu cầu hoặc tự duyệt",
      "id": "legacy-11",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          5
        ]
      },
      "purpose": "Tìm nhu cầu có bằng chứng trước khi viết và kiểm tra khả năng tiếp cận người mua.",
      "how": "Tạo nhu cầu, nối mã review/quan sát/phỏng vấn và ghi cả phản chứng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Ma trận nhu cầu, phản chứng và quyết định thử tiếp hoặc dừng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "6",
      "feature": "Thử thông điệp, mẫu và nhu cầu mua",
      "status": "Đang làm",
      "implemented": "Registry message/sample/paid/preorder/price/cover/blurb; mẫu số/chi tiêu/attribution",
      "remaining": "Chưa tự triển khai landing page, thu telemetry hoặc thanh toán đặt trước",
      "id": "legacy-12",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          6
        ]
      },
      "purpose": "Tìm nhu cầu có bằng chứng trước khi viết và kiểm tra khả năng tiếp cận người mua.",
      "how": "Đặt giả thuyết, ngân sách, ngưỡng đạt trước khi thử; nhập số quan sát thực tế sau thử.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Ma trận nhu cầu, phản chứng và quyết định thử tiếp hoặc dừng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "7",
      "feature": "Chẩn đoán kết quả và quyết định",
      "status": "Đã xong",
      "implemented": "Tỷ lệ và khoảng Wilson 95%; hạn chế thiết kế; quyết định F02/ngân sách tiếp",
      "remaining": "Không phải suy luận nhân quả hoặc chữ ký số",
      "id": "legacy-13",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          7
        ]
      },
      "purpose": "Tìm nhu cầu có bằng chứng trước khi viết và kiểm tra khả năng tiếp cận người mua.",
      "how": "Ghi giới hạn kết luận và lần thử rẻ nhất tiếp theo; mở Duyệt giai đoạn.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Ma trận nhu cầu, phản chứng và quyết định thử tiếp hoặc dừng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Local data form",
      "phase": "F02",
      "step": "",
      "feature": "Nguồn tìm kiếm trực tuyến",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Kết quả tìm nguồn thật, chưa xác nhận nội dung. Chỉ dùng làm bằng chứng sau khi mở nguồn và ghi người kiểm tra; không suy ra doanh số hay lượng tìm kiếm.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-14",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          3
        ]
      },
      "purpose": "Kết quả tìm nguồn thật, chưa xác nhận nội dung. Chỉ dùng làm bằng chứng sau khi mở nguồn và ghi người kiểm tra; không suy ra doanh số hay lượng tìm kiếm.",
      "how": "Mở sách → F02 → Nguồn tìm kiếm trực tuyến; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tiêu đề nguồn (bắt buộc); Câu hỏi tìm kiếm (bắt buộc); URL nguồn (bắt buộc); Trích đoạn nguồn; Nhà cung cấp (bắt buộc); Ngày nguồn công bố; Ngày tìm nguồn (bắt buộc); Kiểm nguồn (bắt buộc); Người kiểm nguồn; Giới hạn và quyền sử dụng; Loại bằng chứng (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Local data form",
      "phase": "F02",
      "step": "",
      "feature": "Ngách ứng viên",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; So sánh nhu cầu của người mua và người dùng. Số lượng ngách là hướng dẫn, không phải cổng cứng.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-15",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          1
        ]
      },
      "purpose": "So sánh nhu cầu của người mua và người dùng. Số lượng ngách là hướng dẫn, không phải cổng cứng.",
      "how": "Mở sách → F02 → Ngách ứng viên; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tên ngách (bắt buộc); Người mua (bắt buộc); Người sử dụng (bắt buộc); Vấn đề hoặc trải nghiệm mong muốn (bắt buộc); Thị trường và ngôn ngữ (bắt buộc); Cách tiếp cận (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Local data form",
      "phase": "F02",
      "step": "",
      "feature": "Sản phẩm đối chiếu",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Gồm sách và giải pháp ngoài sách; ghi rõ mẫu và phạm vi quan sát.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-16",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          2
        ]
      },
      "purpose": "Gồm sách và giải pháp ngoài sách; ghi rõ mẫu và phạm vi quan sát.",
      "how": "Mở sách → F02 → Sản phẩm đối chiếu; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tên sản phẩm (bắt buộc); Loại (bắt buộc); Thị trường / ngôn ngữ (bắt buộc); Định dạng (bắt buộc); Giá niêm yết; Tiền tệ (ví dụ USD) (bắt buộc); Ngày cập nhật sản phẩm; Mục lục và giá trị chính (bắt buộc); Cách giao và hỗ trợ (bắt buộc); Điểm mạnh / khoảng trống (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Local data form",
      "phase": "F02",
      "step": "",
      "feature": "Tìm kiếm, BSR và giá",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Không quy BSR thành doanh số. Để trống khi chưa có dữ liệu; số 0 chỉ cho quan sát bằng 0.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-17",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          3
        ]
      },
      "purpose": "Không quy BSR thành doanh số. Để trống khi chưa có dữ liệu; số 0 chỉ cho quan sát bằng 0.",
      "how": "Mở sách → F02 → Tìm kiếm, BSR và giá; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Từ khóa / sản phẩm (bắt buộc); Marketplace (bắt buộc); Định dạng (bắt buộc); Locale (bắt buộc); Chỉ số (bắt buộc); Giá trị; Tình trạng dữ liệu (bắt buộc); Cửa sổ quan sát (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Local data form",
      "phase": "F02",
      "step": "",
      "feature": "Mẫu đánh giá",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Giữ đánh giá tích cực, trung tính và tiêu cực; không suy rộng một nhóm nhỏ thành toàn thị trường.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-18",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          4
        ]
      },
      "purpose": "Giữ đánh giá tích cực, trung tính và tiêu cực; không suy rộng một nhóm nhỏ thành toàn thị trường.",
      "how": "Mở sách → F02 → Mẫu đánh giá; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Sản phẩm (bắt buộc); Sắc thái (bắt buộc); Trích đoạn gốc (bắt buộc); Chủ đề nhu cầu (bắt buộc); Cách lấy mẫu / hạn chế (bắt buộc); Cơ sở sử dụng dữ liệu (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Local data form",
      "phase": "F02",
      "step": "",
      "feature": "Phỏng vấn độc giả",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Dùng mã người tham gia thay cho thông tin cá nhân; ghi quyền sử dụng ghi chú hoặc transcript.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-19",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          4
        ]
      },
      "purpose": "Dùng mã người tham gia thay cho thông tin cá nhân; ghi quyền sử dụng ghi chú hoặc transcript.",
      "how": "Mở sách → F02 → Phỏng vấn độc giả; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã người tham gia (bắt buộc); Nhóm / người mua hay người dùng (bắt buộc); Lần gần nhất gặp vấn đề (bắt buộc); Giải pháp đã thử (bắt buộc); Tiền / thời gian đã chi (bắt buộc); Điều kiện đổi giải pháp (bắt buộc); Trích lời và ngữ cảnh (bắt buộc); Quyền sử dụng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Local data form",
      "phase": "F02",
      "step": "",
      "feature": "Ma trận nhu cầu",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Nhu cầu → bằng chứng → mức ảnh hưởng → phương án nội dung. Chọn mã bằng chứng từ dữ liệu đã lưu.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-20",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          5
        ]
      },
      "purpose": "Nhu cầu → bằng chứng → mức ảnh hưởng → phương án nội dung. Chọn mã bằng chứng từ dữ liệu đã lưu.",
      "how": "Mở sách → F02 → Ma trận nhu cầu; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Nhu cầu / kỳ vọng thể loại (bắt buộc); Mã bằng chứng, phân cách bằng dấu phẩy (bắt buộc); Mức ảnh hưởng (bắt buộc); Nội dung hoặc công cụ dự kiến (bắt buộc); Phản chứng / điều còn chưa biết",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Local data form",
      "phase": "F02",
      "step": "",
      "feature": "Thử nghiệm nhu cầu và thương mại",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Email chỉ là quan tâm. Phân biệt A/B có kiểm soát với so sánh trước sau; không tự đăng trang hoặc chạy quảng cáo.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-21",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          6
        ]
      },
      "purpose": "Email chỉ là quan tâm. Phân biệt A/B có kiểm soát với so sánh trước sau; không tự đăng trang hoặc chạy quảng cáo.",
      "how": "Mở sách → F02 → Thử nghiệm nhu cầu và thương mại; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Giả thuyết (bắt buộc); Mã ngách / SKU (bắt buộc); Cách thử (bắt buộc); Thiết kế (bắt buộc); Thông điệp / mẫu / thay đổi (bắt buộc); Đối tượng đủ điều kiện (bắt buộc); Lượt tiếp cận đủ điều kiện (bắt buộc); Đăng ký quan tâm; Người dùng mẫu; Đơn mua (bắt buộc); Chi tiêu (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Hạn mức thử (bắt buộc); Cửa sổ đo và attribution (bắt buộc); Yếu tố nhiễu / hạn chế (bắt buộc); Kết luận và lần thử tiếp theo (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Phase step",
      "phase": "F03",
      "step": "1",
      "feature": "Viết định vị có bằng chứng",
      "status": "Đã xong",
      "implemented": "Định vị và sản phẩm nối mã nhu cầu F02",
      "remaining": "",
      "id": "legacy-22",
      "phase_ids": [
        3
      ],
      "steps": {
        "3": [
          1
        ]
      },
      "purpose": "Chuyển nhu cầu đã nghiên cứu thành lời hứa và sản phẩm cụ thể.",
      "how": "Ghi định vị, độc giả ưu tiên và mã bằng chứng nhu cầu F02.",
      "input": "Định vị; Điều kiện sử dụng / người không phù hợp; Hành trình trước / trong / sau đọc; Giá trị đủ trong sách chính",
      "output": "SKU sách chính, lời hứa truy vết được và phạm vi đã giới hạn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=3"
    },
    {
      "group": "Phase step",
      "phase": "F03",
      "step": "2",
      "feature": "Xác định điều kiện sử dụng",
      "status": "Đã xong",
      "implemented": "Điều kiện sử dụng và nhóm không phù hợp",
      "remaining": "",
      "id": "legacy-23",
      "phase_ids": [
        3
      ],
      "steps": {
        "3": [
          2
        ]
      },
      "purpose": "Chuyển nhu cầu đã nghiên cứu thành lời hứa và sản phẩm cụ thể.",
      "how": "Ghi kỹ năng/công cụ cần có và người không phù hợp với sản phẩm.",
      "input": "Định vị; Điều kiện sử dụng / người không phù hợp; Hành trình trước / trong / sau đọc; Giá trị đủ trong sách chính",
      "output": "SKU sách chính, lời hứa truy vết được và phạm vi đã giới hạn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=3"
    },
    {
      "group": "Phase step",
      "phase": "F03",
      "step": "3",
      "feature": "Map trước, trong và sau đọc",
      "status": "Đã xong",
      "implemented": "F03: hành trình trước/trong/sau đọc",
      "remaining": "",
      "id": "legacy-24",
      "phase_ids": [
        3
      ],
      "steps": {
        "3": [
          3
        ]
      },
      "purpose": "Chuyển nhu cầu đã nghiên cứu thành lời hứa và sản phẩm cụ thể.",
      "how": "Ghi người đọc làm gì trước, trong và sau khi đọc để thấy điểm cần hỗ trợ.",
      "input": "Định vị; Điều kiện sử dụng / người không phù hợp; Hành trình trước / trong / sau đọc; Giá trị đủ trong sách chính",
      "output": "SKU sách chính, lời hứa truy vết được và phạm vi đã giới hạn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=3"
    },
    {
      "group": "Phase step",
      "phase": "F03",
      "step": "4",
      "feature": "Chốt giá trị sách chính",
      "status": "Đã xong",
      "implemented": "Sổ lời hứa → mã nhu cầu → chương/block; tách gắn dàn ý, nội dung hiện có và nghiệm thu người kiểm",
      "remaining": "Kiểm cấu trúc liên kết không tự chứng minh sách thực hiện đúng lời hứa",
      "id": "legacy-25",
      "phase_ids": [
        3
      ],
      "steps": {
        "3": [
          4
        ]
      },
      "purpose": "Chuyển nhu cầu đã nghiên cứu thành lời hứa và sản phẩm cụ thể.",
      "how": "Đăng ký SKU sách chính và sổ lời hứa: nối nhu cầu, bổ sung mã nội dung khi có dàn ý.",
      "input": "Định vị; Điều kiện sử dụng / người không phù hợp; Hành trình trước / trong / sau đọc; Giá trị đủ trong sách chính",
      "output": "SKU sách chính, lời hứa truy vết được và phạm vi đã giới hạn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=3"
    },
    {
      "group": "Phase step",
      "phase": "F03",
      "step": "5",
      "feature": "Chọn sản phẩm bổ sung và công suất hỗ trợ",
      "status": "Đã xong",
      "implemented": "SKU/offer riêng main/magnet/bump/upsell/cross-sell/downsell; owner/support/delivery",
      "remaining": "Không tự phát hành hoặc vận hành dịch vụ",
      "id": "legacy-26",
      "phase_ids": [
        3
      ],
      "steps": {
        "3": [
          5
        ]
      },
      "purpose": "Chuyển nhu cầu đã nghiên cứu thành lời hứa và sản phẩm cụ thể.",
      "how": "Chọn SKU bổ sung có nhu cầu, ghi người hỗ trợ/công suất/đường giao rồi duyệt phạm vi.",
      "input": "Định vị; Điều kiện sử dụng / người không phù hợp; Hành trình trước / trong / sau đọc; Giá trị đủ trong sách chính",
      "output": "SKU sách chính, lời hứa truy vết được và phạm vi đã giới hạn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=3"
    },
    {
      "group": "Local data form",
      "phase": "F03",
      "step": "",
      "feature": "Thẻ sản phẩm và offer",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Sách chính phải đủ lời hứa. Sản phẩm mua thêm có giá trị và người hỗ trợ riêng.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-27",
      "phase_ids": [
        3
      ],
      "steps": {
        "3": [
          4,
          5
        ]
      },
      "purpose": "Sách chính phải đủ lời hứa. Sản phẩm mua thêm có giá trị và người hỗ trợ riêng.",
      "how": "Mở sách → F03 → Thẻ sản phẩm và offer; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã SKU (bắt buộc); Tên sản phẩm (bắt buộc); Loại (bắt buộc); Ngôn ngữ / thị trường (bắt buộc); Giá trị nhận được (bắt buộc); Bao gồm / yêu cầu sử dụng (bắt buộc); Mã nhu cầu / bằng chứng (bắt buộc); Giá thử (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Quan hệ offer (bắt buộc); Người vận hành (bắt buộc); Hỗ trợ và công suất (bắt buộc); Đường giao (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=3"
    },
    {
      "group": "Phase step",
      "phase": "F04",
      "step": "1",
      "feature": "Xác định người nhận tiền và hồ sơ thuế",
      "status": "Đã xong",
      "implemented": "Recipient/currency/tax status có người xác nhận",
      "remaining": "Không tự xác định nghĩa vụ thuế",
      "id": "legacy-28",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          1
        ]
      },
      "purpose": "Kiểm tra hiệu quả từng SKU và khả năng chi tiền qua các mốc.",
      "how": "Ghi người/pháp nhân nhận tiền và hồ sơ thuế đã xác nhận.",
      "input": "Tiền tệ (ví dụ USD); Người / pháp nhân nhận tiền; Hồ sơ thuế, tỷ lệ đã xác nhận và nguồn; Tiền đầu kỳ; Dự toán 12 tháng / giả định / nguồn; CAC / LTV thực tế và dự báo tách riêng",
      "output": "Đóng góp từng kênh, dòng tiền 13 tuần và dự toán 12 tháng có nguồn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Phase step",
      "phase": "F04",
      "step": "2",
      "feature": "Ghi giả định có nguồn",
      "status": "Đã xong",
      "implemented": "Basis/source/date trong giả định kinh tế",
      "remaining": "",
      "id": "legacy-29",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          2
        ]
      },
      "purpose": "Kiểm tra hiệu quả từng SKU và khả năng chi tiền qua các mốc.",
      "how": "Ghi nguồn, ngày và loại giả định cho từng số; để thiếu khi chưa biết.",
      "input": "Tiền tệ (ví dụ USD); Người / pháp nhân nhận tiền; Hồ sơ thuế, tỷ lệ đã xác nhận và nguồn; Tiền đầu kỳ; Dự toán 12 tháng / giả định / nguồn; CAC / LTV thực tế và dự báo tách riêng",
      "output": "Đóng góp từng kênh, dòng tiền 13 tuần và dự toán 12 tháng có nguồn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Phase step",
      "phase": "F04",
      "step": "3",
      "feature": "Tính đóng góp từng SKU",
      "status": "Đã xong",
      "implemented": "Đóng góp trước/sau CAC, phí/refund/support; royalty khác retail",
      "remaining": "",
      "id": "legacy-30",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          3
        ]
      },
      "purpose": "Kiểm tra hiệu quả từng SKU và khả năng chi tiền qua các mốc.",
      "how": "Nhập royalty, phí, hoàn tiền, hỗ trợ và CAC từng SKU; xem đóng góp.",
      "input": "Tiền tệ (ví dụ USD); Người / pháp nhân nhận tiền; Hồ sơ thuế, tỷ lệ đã xác nhận và nguồn; Tiền đầu kỳ; Dự toán 12 tháng / giả định / nguồn; CAC / LTV thực tế và dự báo tách riêng",
      "output": "Đóng góp từng kênh, dòng tiền 13 tuần và dự toán 12 tháng có nguồn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Phase step",
      "phase": "F04",
      "step": "4",
      "feature": "Lập kịch bản và CAC / LTV",
      "status": "Đang làm",
      "implemented": "Bảng conservative/base/optimistic, CAC/LTV có evidence riêng",
      "remaining": "Chưa forecast cohort tự động từ giao dịch khách hàng thật",
      "id": "legacy-31",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          4
        ]
      },
      "purpose": "Kiểm tra hiệu quả từng SKU và khả năng chi tiền qua các mốc.",
      "how": "Lập ba kịch bản riêng; tách CAC/LTV quan sát khỏi dự báo.",
      "input": "Tiền tệ (ví dụ USD); Người / pháp nhân nhận tiền; Hồ sơ thuế, tỷ lệ đã xác nhận và nguồn; Tiền đầu kỳ; Dự toán 12 tháng / giả định / nguồn; CAC / LTV thực tế và dự báo tách riêng",
      "output": "Đóng góp từng kênh, dòng tiền 13 tuần và dự toán 12 tháng có nguồn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Phase step",
      "phase": "F04",
      "step": "5",
      "feature": "Dự toán 13 tuần và 12 tháng",
      "status": "Đã xong",
      "implemented": "Dòng tiền13 tuần và dự toán12 tháng theo 3 kịch bản; thực tế−dự toán; độ nhạy thu/chi; tiền khả dụng sau reserve/commitment",
      "remaining": "Dữ liệu nhập tay/CSV; chưa dự báo tự động hoặc xác minh báo cáo ngân hàng",
      "id": "legacy-32",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          5
        ]
      },
      "purpose": "Kiểm tra hiệu quả từng SKU và khả năng chi tiền qua các mốc.",
      "how": "Nhập 13 tuần và 12 tháng; bảng tháng cần đủ 12 dòng mỗi kịch bản. Nhập thực tế khi có báo cáo rồi xem chênh lệch.",
      "input": "Tiền tệ (ví dụ USD); Người / pháp nhân nhận tiền; Hồ sơ thuế, tỷ lệ đã xác nhận và nguồn; Tiền đầu kỳ; Dự toán 12 tháng / giả định / nguồn; CAC / LTV thực tế và dự báo tách riêng",
      "output": "Đóng góp từng kênh, dòng tiền 13 tuần và dự toán 12 tháng có nguồn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Phase step",
      "phase": "F04",
      "step": "6",
      "feature": "Duyệt tiền tới mốc tiếp theo",
      "status": "Đã xong",
      "implemented": "Quyết định khoản vốn kế tiếp, ngưỡng lỗ và review date",
      "remaining": "Chưa tự settle phí API toàn nền tảng",
      "id": "legacy-33",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          6
        ]
      },
      "purpose": "Kiểm tra hiệu quả từng SKU và khả năng chi tiền qua các mốc.",
      "how": "Kiểm tiền khả dụng sau reserve/cam kết; ghi quyết định và ngân sách tới mốc kế tiếp.",
      "input": "Tiền tệ (ví dụ USD); Người / pháp nhân nhận tiền; Hồ sơ thuế, tỷ lệ đã xác nhận và nguồn; Tiền đầu kỳ; Dự toán 12 tháng / giả định / nguồn; CAC / LTV thực tế và dự báo tách riêng",
      "output": "Đóng góp từng kênh, dòng tiền 13 tuần và dự toán 12 tháng có nguồn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Local data form",
      "phase": "F04",
      "step": "",
      "feature": "Hiệu quả từng SKU",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Nhập phần được hưởng theo kênh; công thức đóng góp trừ phí, hoàn tiền, hỗ trợ và thu hút khách riêng.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-34",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          2,
          3,
          4
        ]
      },
      "purpose": "Nhập phần được hưởng theo kênh; công thức đóng góp trừ phí, hoàn tiền, hỗ trợ và thu hút khách riêng.",
      "how": "Mở sách → F04 → Hiệu quả từng SKU; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "SKU (bắt buộc); Kênh (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Doanh thu bán lẻ / đơn (bắt buộc); Tiền hưởng trước chi phí / đơn (bắt buộc); Phí biến đổi chưa trừ (bắt buộc); Dự phòng hoàn tiền / đơn (bắt buộc); Lao động / hỗ trợ / đơn (bắt buộc); Thu hút khách / đơn (bắt buộc); Số đơn kịch bản (bắt buộc); Kịch bản (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Local data form",
      "phase": "F04",
      "step": "",
      "feature": "Dòng tiền 13 tuần",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Tiền về khác royalty đã ghi nhận. Tách tiền thu, chi trả, thuế và reserve theo tuần.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-35",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          5
        ]
      },
      "purpose": "Tiền về khác royalty đã ghi nhận. Tách tiền thu, chi trả, thuế và reserve theo tuần.",
      "how": "Mở sách → F04 → Dòng tiền 13 tuần; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tuần (1–13) (bắt buộc); Thực thu (bắt buộc); Chi trả (bắt buộc); Thuế phải trả (bắt buộc); Reserve cần giữ cuối tuần (bắt buộc); Nghĩa vụ chưa chi cuối tuần (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Phase step",
      "phase": "F05",
      "step": "1",
      "feature": "Lập sổ quyền từng asset",
      "status": "Đã xong",
      "implemented": "Rights theo asset/holder/territory/locale/format/expiry/evidence",
      "remaining": "",
      "id": "legacy-36",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          1
        ]
      },
      "purpose": "Ghi quyền sử dụng và trách nhiệm của những người tham gia.",
      "how": "Liệt kê tài nguyên và bằng chứng quyền sử dụng, kể cả hình, giọng và dữ liệu.",
      "input": "Thành phần AI / dữ liệu được phép gửi; Đường xuất bản / thị trường / người kiểm tra; Vai trò / thu hồi truy cập / sao lưu",
      "output": "Sổ quyền, hợp đồng và điều kiện dùng tài nguyên/AI đã được rà soát.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=5"
    },
    {
      "group": "Phase step",
      "phase": "F05",
      "step": "2",
      "feature": "Chốt hợp đồng / mốc nghiệm thu",
      "status": "Đã xong",
      "implemented": "Contract/milestone/payment/due/status; đăng ký hồ sơ thủ công",
      "remaining": "Không ký điện tử",
      "id": "legacy-37",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          2
        ]
      },
      "purpose": "Ghi quyền sử dụng và trách nhiệm của những người tham gia.",
      "how": "Ghi hợp đồng, mốc nghiệm thu, người chịu trách nhiệm và nghĩa vụ cập nhật.",
      "input": "Thành phần AI / dữ liệu được phép gửi; Đường xuất bản / thị trường / người kiểm tra; Vai trò / thu hồi truy cập / sao lưu",
      "output": "Sổ quyền, hợp đồng và điều kiện dùng tài nguyên/AI đã được rà soát.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=5"
    },
    {
      "group": "Phase step",
      "phase": "F05",
      "step": "3",
      "feature": "Kiểm quyền dịch, audio và nguồn",
      "status": "Đã xong",
      "implemented": "Cổng quyền pending/disputed/expired chặn bước nghiệp vụ liên quan",
      "remaining": "Không bảo đảm pháp lý",
      "id": "legacy-38",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          3
        ]
      },
      "purpose": "Ghi quyền sử dụng và trách nhiệm của những người tham gia.",
      "how": "Đối chiếu quyền dịch/audio/nguồn theo quốc gia, định dạng và thời hạn.",
      "input": "Thành phần AI / dữ liệu được phép gửi; Đường xuất bản / thị trường / người kiểm tra; Vai trò / thu hồi truy cập / sao lưu",
      "output": "Sổ quyền, hợp đồng và điều kiện dùng tài nguyên/AI đã được rà soát.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=5"
    },
    {
      "group": "Phase step",
      "phase": "F05",
      "step": "4",
      "feature": "Ghi hồ sơ AI và dịch vụ được phép",
      "status": "Đang làm",
      "implemented": "Hồ sơ AI/data policy, provenance, giới hạn dịch vụ",
      "remaining": "Chưa cưỡng chế mọi asset-level consent trên tất cả adapter AI",
      "id": "legacy-39",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          4
        ]
      },
      "purpose": "Ghi quyền sử dụng và trách nhiệm của những người tham gia.",
      "how": "Ghi chính sách AI, consent và disclosure phù hợp với route dự kiến.",
      "input": "Thành phần AI / dữ liệu được phép gửi; Đường xuất bản / thị trường / người kiểm tra; Vai trò / thu hồi truy cập / sao lưu",
      "output": "Sổ quyền, hợp đồng và điều kiện dùng tài nguyên/AI đã được rà soát.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=5"
    },
    {
      "group": "Phase step",
      "phase": "F05",
      "step": "5",
      "feature": "Cấp quyền tối thiểu và kế hoạch sao lưu",
      "status": "Đang làm",
      "implemented": "Authz/RLS nền tảng, backup hồ sơ, CAS và lịch sử",
      "remaining": "Cloud owner/admin và từ chối member được kiểm trong TODO E1; quyền mọi luồng và dự án production vẫn phải nghiệm thu riêng.",
      "id": "legacy-40",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          5
        ]
      },
      "purpose": "Ghi quyền sử dụng và trách nhiệm của những người tham gia.",
      "how": "Kiểm quyền truy cập, thu hồi và sao lưu; duyệt các thiếu sót trước khi sản xuất.",
      "input": "Thành phần AI / dữ liệu được phép gửi; Đường xuất bản / thị trường / người kiểm tra; Vai trò / thu hồi truy cập / sao lưu",
      "output": "Sổ quyền, hợp đồng và điều kiện dùng tài nguyên/AI đã được rà soát.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=5"
    },
    {
      "group": "Local data form",
      "phase": "F05",
      "step": "",
      "feature": "Sổ quyền",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Quyền theo asset, lãnh thổ, ngôn ngữ, định dạng và thời hạn. Không phát hành asset đang tranh chấp.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-41",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          1,
          3
        ]
      },
      "purpose": "Quyền theo asset, lãnh thổ, ngôn ngữ, định dạng và thời hạn. Không phát hành asset đang tranh chấp.",
      "how": "Mở sách → F05 → Sổ quyền; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tài sản / nguồn / giọng (bắt buộc); Chủ quyền (bắt buộc); Giấy phép / hợp đồng (bắt buộc); Lãnh thổ (bắt buộc); Ngôn ngữ (bắt buộc); Định dạng / sử dụng được phép (bắt buộc); Hết hạn; Tình trạng (bắt buộc); Phần AI và quyền đưa dữ liệu vào AI (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=5"
    },
    {
      "group": "Local data form",
      "phase": "F05",
      "step": "",
      "feature": "Hợp đồng và mốc bàn giao",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Giữ file nguồn, vòng sửa, nghiệm thu và nghĩa vụ thanh toán.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-42",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          2
        ]
      },
      "purpose": "Giữ file nguồn, vòng sửa, nghiệm thu và nghĩa vụ thanh toán.",
      "how": "Mở sách → F05 → Hợp đồng và mốc bàn giao; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Cộng tác viên / hợp đồng (bắt buộc); Phạm vi quyền và công việc (bắt buộc); Mốc và điều kiện nghiệm thu (bắt buộc); Số tiền cam kết (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Ngày đến hạn (bắt buộc); Nguồn hợp đồng (bắt buộc); Trạng thái (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=5"
    },
    {
      "group": "Phase step",
      "phase": "F06",
      "step": "1",
      "feature": "Nối lời hứa với chương",
      "status": "Đã xong",
      "implemented": "Kiểm lời hứa sách chính với mã nhu cầu/chương/block; mã đã xóa hoặc thiếu được cảnh báo",
      "remaining": "Nội dung cần người kiểm định; không tự chấm lời hứa bằng AI",
      "id": "legacy-43",
      "phase_ids": [
        6
      ],
      "steps": {
        "6": [
          1
        ]
      },
      "purpose": "Thử cấu trúc và một mẫu nhỏ trước khi nhân rộng bản thảo.",
      "how": "Gắn mã chương/block vào sổ lời hứa F03; xem kiểm liên kết tại tổng quan F06.",
      "input": "Lời hứa → mã chương / nội dung; Nguồn / phần cần chuyên gia; Glossary, giọng và cách dẫn nguồn",
      "output": "Dàn ý có liên kết lời hứa, chương mẫu và ghi nhận thử người dùng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=6"
    },
    {
      "group": "Phase step",
      "phase": "F06",
      "step": "2",
      "feature": "Dàn ý theo genre và dependency",
      "status": "Đã xong",
      "implemented": "Outline editor, dependency và blueprint theo genre; scene/beat đo từ văn bản sách",
      "remaining": "Genre rubric vẫn cần mở rộng theo nhu cầu",
      "id": "legacy-44",
      "phase_ids": [
        6
      ],
      "steps": {
        "6": [
          2
        ]
      },
      "purpose": "Thử cấu trúc và một mẫu nhỏ trước khi nhân rộng bản thảo.",
      "how": "Dùng Outline để sắp chương theo genre và điều kiện cần trước.",
      "input": "Lời hứa → mã chương / nội dung; Nguồn / phần cần chuyên gia; Glossary, giọng và cách dẫn nguồn",
      "output": "Dàn ý có liên kết lời hứa, chương mẫu và ghi nhận thử người dùng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=6"
    },
    {
      "group": "Phase step",
      "phase": "F06",
      "step": "3",
      "feature": "Gắn nguồn, glossary và content IDs",
      "status": "Đã xong",
      "implemented": "References, glossary/Bible, mã chương/block ổn định",
      "remaining": "",
      "id": "legacy-45",
      "phase_ids": [
        6
      ],
      "steps": {
        "6": [
          3
        ]
      },
      "purpose": "Thử cấu trúc và một mẫu nhỏ trước khi nhân rộng bản thảo.",
      "how": "Dùng References/Bible để gắn nguồn, thuật ngữ và quy tắc nội dung.",
      "input": "Lời hứa → mã chương / nội dung; Nguồn / phần cần chuyên gia; Glossary, giọng và cách dẫn nguồn",
      "output": "Dàn ý có liên kết lời hứa, chương mẫu và ghi nhận thử người dùng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=6"
    },
    {
      "group": "Phase step",
      "phase": "F06",
      "step": "4",
      "feature": "Tạo chương / công cụ mẫu",
      "status": "Đang làm",
      "implemented": "Sinh một chương mẫu riêng + form chapter/tool/translation/audio sample",
      "remaining": "Chưa chạy mẫu AI đầu-cuối trên môi trường đích",
      "id": "legacy-46",
      "phase_ids": [
        6
      ],
      "steps": {
        "6": [
          4
        ]
      },
      "purpose": "Thử cấu trúc và một mẫu nhỏ trước khi nhân rộng bản thảo.",
      "how": "Tạo chương mẫu sau khi hồ sơ đầu tư đủ điều kiện; lưu mẫu và phiên bản.",
      "input": "Lời hứa → mã chương / nội dung; Nguồn / phần cần chuyên gia; Glossary, giọng và cách dẫn nguồn",
      "output": "Dàn ý có liên kết lời hứa, chương mẫu và ghi nhận thử người dùng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=6"
    },
    {
      "group": "Phase step",
      "phase": "F06",
      "step": "5",
      "feature": "Thử người dùng rồi duyệt nhân rộng",
      "status": "Đã xong",
      "implemented": "Protocol/reviewer/result/sample version; chưa nghiệm thu không mở full-book",
      "remaining": "",
      "id": "legacy-47",
      "phase_ids": [
        6
      ],
      "steps": {
        "6": [
          5
        ]
      },
      "purpose": "Thử cấu trúc và một mẫu nhỏ trước khi nhân rộng bản thảo.",
      "how": "Ghi người thử, kết quả, lỗi và người chấp nhận mẫu rồi mới duyệt nhân rộng.",
      "input": "Lời hứa → mã chương / nội dung; Nguồn / phần cần chuyên gia; Glossary, giọng và cách dẫn nguồn",
      "output": "Dàn ý có liên kết lời hứa, chương mẫu và ghi nhận thử người dùng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=6"
    },
    {
      "group": "Local data form",
      "phase": "F06",
      "step": "",
      "feature": "Chương / công cụ / bản dịch / audio mẫu",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Thử mẫu trước khi nhân rộng; nối phiên bản mẫu và nhiệm vụ độc giả.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-48",
      "phase_ids": [
        6
      ],
      "steps": {
        "6": [
          4,
          5
        ]
      },
      "purpose": "Thử mẫu trước khi nhân rộng; nối phiên bản mẫu và nhiệm vụ độc giả.",
      "how": "Mở sách → F06 → Chương / công cụ / bản dịch / audio mẫu; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tên mẫu (bắt buộc); Loại (bắt buộc); Mã nội dung hoặc nguồn mẫu (bắt buộc); Phiên bản (bắt buộc); Locale (bắt buộc); Nhiệm vụ / cách thử (bắt buộc); Người kiểm định (bắt buộc); Nghiệm thu (bắt buộc); Bằng chứng hiểu / làm được hoặc lỗi (bắt buộc); Nội dung mẫu; Mô hình tạo mẫu; Loại bằng chứng (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=6"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "1",
      "feature": "Giao chapter briefs",
      "status": "Đã xong",
      "implemented": "Chapter brief/dependency/context pack",
      "remaining": "",
      "id": "legacy-49",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": [
          1
        ]
      },
      "purpose": "Viết theo brief và giữ nguồn, phiên bản, lỗi mở cùng bản thảo.",
      "how": "Ghi brief và tiêu chí nghiệm thu từng chương trong sổ bàn giao.",
      "input": "Phiên bản bản nháp; Danh sách phần chưa kiểm / nguồn chờ; Cách thử hướng dẫn và trường hợp biên",
      "output": "Các cụm nội dung được bàn giao, có người nhận và trạng thái rõ ràng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "2",
      "feature": "Viết phần đủ nguồn",
      "status": "Đang làm",
      "implemented": "Generation engine, stream, DAG/Inngest, resume và model router",
      "remaining": "Cloud SOP đã có schema; còn kiểm Auth/credits/Inngest và generation thật đầu-cuối trước live",
      "id": "legacy-50",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": [
          2
        ]
      },
      "purpose": "Viết theo brief và giữ nguồn, phiên bản, lỗi mở cùng bản thảo.",
      "how": "Dùng Drafts để viết phần đủ nguồn; đánh dấu phần chưa kiểm thay vì đoán.",
      "input": "Phiên bản bản nháp; Danh sách phần chưa kiểm / nguồn chờ; Cách thử hướng dẫn và trường hợp biên",
      "output": "Các cụm nội dung được bàn giao, có người nhận và trạng thái rõ ràng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "3",
      "feature": "Lưu nguồn cạnh claim",
      "status": "Đang làm",
      "implemented": "References/citations/claim evidence; source có quyền",
      "remaining": "Không phải toàn bộ claim tự gắn citation chính xác",
      "id": "legacy-51",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": [
          3
        ]
      },
      "purpose": "Viết theo brief và giữ nguồn, phiên bản, lỗi mở cùng bản thảo.",
      "how": "Ghi nguồn sát claim và content ID để người biên tập kiểm lại.",
      "input": "Phiên bản bản nháp; Danh sách phần chưa kiểm / nguồn chờ; Cách thử hướng dẫn và trường hợp biên",
      "output": "Các cụm nội dung được bàn giao, có người nhận và trạng thái rõ ràng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "4",
      "feature": "Cập nhật canon",
      "status": "Đang làm",
      "implemented": "Bible extraction/merge/canon; bàn giao Studio→Workspace chống mất sửa Có temporal canon theo mốc thời gian.",
      "remaining": "Chưa temporal knowledge/state UI đầy đủ",
      "id": "legacy-52",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": [
          4
        ]
      },
      "purpose": "Viết theo brief và giữ nguồn, phiên bản, lỗi mở cùng bản thảo.",
      "how": "Cập nhật Bible/canon; với Fiction, kiểm scene, beat và nhật ký viết theo sách.",
      "input": "Phiên bản bản nháp; Danh sách phần chưa kiểm / nguồn chờ; Cách thử hướng dẫn và trường hợp biên",
      "output": "Các cụm nội dung được bàn giao, có người nhận và trạng thái rõ ràng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts",
        "src/lib/bible/temporal.ts"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "5",
      "feature": "Thử hướng dẫn / công cụ",
      "status": "Đã xong",
      "implemented": "Tool protocol, sample và Product QA có trường hợp biên",
      "remaining": "Kiểm nghiệm do người vận hành ghi",
      "id": "legacy-53",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": [
          5
        ]
      },
      "purpose": "Viết theo brief và giữ nguồn, phiên bản, lỗi mở cùng bản thảo.",
      "how": "Thử hướng dẫn hoặc công cụ bằng tình huống thực và tình huống biên.",
      "input": "Phiên bản bản nháp; Danh sách phần chưa kiểm / nguồn chờ; Cách thử hướng dẫn và trường hợp biên",
      "output": "Các cụm nội dung được bàn giao, có người nhận và trạng thái rõ ràng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "6",
      "feature": "Nghiệm thu cụm và ghi lỗi mở",
      "status": "Đã xong",
      "implemented": "Delivery owner/due/version/accepted/returned; open items và lỗi",
      "remaining": "",
      "id": "legacy-54",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": [
          6
        ]
      },
      "purpose": "Viết theo brief và giữ nguồn, phiên bản, lỗi mở cùng bản thảo.",
      "how": "Ghi phiên bản giao, người nhận và lỗi mở; duyệt cụm khi đủ bằng chứng.",
      "input": "Phiên bản bản nháp; Danh sách phần chưa kiểm / nguồn chờ; Cách thử hướng dẫn và trường hợp biên",
      "output": "Các cụm nội dung được bàn giao, có người nhận và trạng thái rõ ràng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Local data form",
      "phase": "F07",
      "step": "",
      "feature": "Nghiệm thu cụm chương",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Theo dõi phần nghiệm thu, nguồn chờ và công cụ; không chỉ đếm từ.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-55",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": [
          1,
          5,
          6
        ]
      },
      "purpose": "Theo dõi phần nghiệm thu, nguồn chờ và công cụ; không chỉ đếm từ.",
      "how": "Mở sách → F07 → Nghiệm thu cụm chương; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã chương / công cụ (bắt buộc); Phiên bản (bắt buộc); Người thực hiện (bắt buộc); Ngày giao (bắt buộc); Nguồn và phần chờ xác minh (bắt buộc); Trạng thái (bắt buộc); Người nghiệm thu (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Phase step",
      "phase": "F08",
      "step": "1",
      "feature": "Biên tập cấu trúc",
      "status": "Đã xong",
      "implemented": "Core Audit và Revision Plan trên bản thảo người dùng",
      "remaining": "AI editorial service vẫn cần thử provider riêng",
      "id": "legacy-56",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          1
        ]
      },
      "purpose": "Nghiệm thu nội dung bằng kiểm chứng và nhiệm vụ của độc giả.",
      "how": "Dùng Review để rà thứ tự, khoảng trống và lời hứa còn thiếu.",
      "input": "Bản nguồn được khóa; So lời hứa với thành phẩm; Người chịu trách nhiệm biên tập / kiểm chứng",
      "output": "Bản nguồn đã khóa cùng sổ lỗi, kết quả thử và bằng chứng nghiệm thu.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Phase step",
      "phase": "F08",
      "step": "2",
      "feature": "Kiểm nguồn / công thức / quyền",
      "status": "Đang làm",
      "implemented": "Claims Ledger/citations/rights checks; reviewer và retest",
      "remaining": "Chưa kiểm tự động tất cả nguồn và công thức ngành",
      "id": "legacy-57",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          2
        ]
      },
      "purpose": "Nghiệm thu nội dung bằng kiểm chứng và nhiệm vụ của độc giả.",
      "how": "Đối chiếu nguồn, công thức, quyền và sổ lời hứa với bản nguồn hiện tại.",
      "input": "Bản nguồn được khóa; So lời hứa với thành phẩm; Người chịu trách nhiệm biên tập / kiểm chứng",
      "output": "Bản nguồn đã khóa cùng sổ lỗi, kết quả thử và bằng chứng nghiệm thu.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Phase step",
      "phase": "F08",
      "step": "3",
      "feature": "Biên tập dòng và câu",
      "status": "Đang làm",
      "implemented": "Smart Editor/line edit/action proposals và provenance",
      "remaining": "Một số thao tác AI chưa nối live hoặc chưa test dịch vụ",
      "id": "legacy-58",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          3
        ]
      },
      "purpose": "Nghiệm thu nội dung bằng kiểm chứng và nhiệm vụ của độc giả.",
      "how": "Sửa câu, thuật ngữ và trình bày; ghi lỗi để người khác kiểm lại.",
      "input": "Bản nguồn được khóa; So lời hứa với thành phẩm; Người chịu trách nhiệm biên tập / kiểm chứng",
      "output": "Bản nguồn đã khóa cùng sổ lỗi, kết quả thử và bằng chứng nghiệm thu.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Phase step",
      "phase": "F08",
      "step": "4",
      "feature": "Thử nhiệm vụ người đọc thật",
      "status": "Đã xong",
      "implemented": "Reader Test: nhiệm vụ/completed/assisted/failed/time/observer/version",
      "remaining": "Tuyển/matching người đọc chưa có",
      "id": "legacy-59",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          4
        ]
      },
      "purpose": "Nghiệm thu nội dung bằng kiểm chứng và nhiệm vụ của độc giả.",
      "how": "Ghi người đọc thật, nhiệm vụ, kết quả và consent. Mô phỏng AI không thay kết quả này.",
      "input": "Bản nguồn được khóa; So lời hứa với thành phẩm; Người chịu trách nhiệm biên tập / kiểm chứng",
      "output": "Bản nguồn đã khóa cùng sổ lỗi, kết quả thử và bằng chứng nghiệm thu.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Phase step",
      "phase": "F08",
      "step": "5",
      "feature": "Sửa và kiểm lại",
      "status": "Đã xong",
      "implemented": "Issues critical/important/minor; owner/fix/retest/reviewer; blocker gate",
      "remaining": "",
      "id": "legacy-60",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          5
        ]
      },
      "purpose": "Nghiệm thu nội dung bằng kiểm chứng và nhiệm vụ của độc giả.",
      "how": "Cập nhật sổ lỗi: người sửa, người kiểm và bằng chứng đã giải quyết.",
      "input": "Bản nguồn được khóa; So lời hứa với thành phẩm; Người chịu trách nhiệm biên tập / kiểm chứng",
      "output": "Bản nguồn đã khóa cùng sổ lỗi, kết quả thử và bằng chứng nghiệm thu.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Phase step",
      "phase": "F08",
      "step": "6",
      "feature": "Khóa bản nguồn",
      "status": "Đã xong",
      "implemented": "F08 source anchor/version; sửa nguồn làm approval stale",
      "remaining": "Quyết định tự khai, không chữ ký số",
      "id": "legacy-61",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          6
        ]
      },
      "purpose": "Nghiệm thu nội dung bằng kiểm chứng và nhiệm vụ của độc giả.",
      "how": "Ghi phiên bản nguồn và nghiệm thu lời hứa; khóa bản sau khi duyệt.",
      "input": "Bản nguồn được khóa; So lời hứa với thành phẩm; Người chịu trách nhiệm biên tập / kiểm chứng",
      "output": "Bản nguồn đã khóa cùng sổ lỗi, kết quả thử và bằng chứng nghiệm thu.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Local data form",
      "phase": "F08",
      "step": "",
      "feature": "Thử nghiệm người đọc",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; AI simulation không thay nghiệm thu người thật. Ghi nhiệm vụ và quan sát có thể kiểm lại.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-62",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          4
        ]
      },
      "purpose": "AI simulation không thay nghiệm thu người thật. Ghi nhiệm vụ và quan sát có thể kiểm lại.",
      "how": "Mở sách → F08 → Thử nghiệm người đọc; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã người đọc / nhóm (bắt buộc); Mã và phiên bản nội dung (bắt buộc); Nhiệm vụ (bắt buộc); Kết quả (bắt buộc); Thời gian phút (bắt buộc); Quan sát / lỗi / điểm bỏ đọc (bắt buộc); Người quan sát (bắt buộc); Ngày thử (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Local data form",
      "phase": "F08",
      "step": "",
      "feature": "Nhật ký lỗi và kiểm lại",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Lỗi nghiêm trọng chặn; lỗi quan trọng cần giải pháp được duyệt và kiểm lại.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-63",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          1,
          2,
          3,
          5
        ]
      },
      "purpose": "Lỗi nghiêm trọng chặn; lỗi quan trọng cần giải pháp được duyệt và kiểm lại.",
      "how": "Mở sách → F08 → Nhật ký lỗi và kiểm lại; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Vị trí / phiên bản (bắt buộc); Lỗi (bắt buộc); Mức độ (bắt buộc); Người sửa (bắt buộc); Trạng thái (bắt buộc); Bằng chứng kiểm lại / giải pháp; Người kiểm lại",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Phase step",
      "phase": "F09",
      "step": "1",
      "feature": "Nghiên cứu thị trường đích riêng",
      "status": "Đang làm",
      "implemented": "F09 target-market brief và dữ liệu nghiên cứu theo locale",
      "remaining": "Chưa một ResearchProject riêng có lifecycle đồng bộ hoàn chỉnh",
      "id": "legacy-64",
      "phase_ids": [
        9
      ],
      "steps": {
        "9": [
          1
        ]
      },
      "purpose": "Đánh giá riêng nhu cầu, quyền và chất lượng của từng ngôn ngữ đích.",
      "how": "Nghiên cứu độc giả và bằng chứng mua ở thị trường đích riêng.",
      "input": "Locale và quốc gia đích; Bằng chứng thị trường đích và đầu tư; Bản nguồn khóa; Glossary / số / ngày / đơn vị; Người dịch; Người hiệu đính song ngữ độc lập",
      "output": "Hồ sơ edition được người hiệu đính độc lập chấp nhận hoặc ghi không áp dụng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=9"
    },
    {
      "group": "Phase step",
      "phase": "F09",
      "step": "2",
      "feature": "Dự toán / quyền / route",
      "status": "Đã xong",
      "implemented": "Budget/rights/route/glossary/reviewer khai trong hồ sơ",
      "remaining": "",
      "id": "legacy-65",
      "phase_ids": [
        9
      ],
      "steps": {
        "9": [
          2
        ]
      },
      "purpose": "Đánh giá riêng nhu cầu, quyền và chất lượng của từng ngôn ngữ đích.",
      "how": "Ghi dự toán, phạm vi quyền và route trước khi dịch.",
      "input": "Locale và quốc gia đích; Bằng chứng thị trường đích và đầu tư; Bản nguồn khóa; Glossary / số / ngày / đơn vị; Người dịch; Người hiệu đính song ngữ độc lập",
      "output": "Hồ sơ edition được người hiệu đính độc lập chấp nhận hoặc ghi không áp dụng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=9"
    },
    {
      "group": "Phase step",
      "phase": "F09",
      "step": "3",
      "feature": "Brief / glossary / mẫu dịch",
      "status": "Đang làm",
      "implemented": "Block translation/remix, sample registry, glossary",
      "remaining": "Chưa full-translation job live có reserve/settle end-to-end",
      "id": "legacy-66",
      "phase_ids": [
        9
      ],
      "steps": {
        "9": [
          3
        ]
      },
      "purpose": "Đánh giá riêng nhu cầu, quyền và chất lượng của từng ngôn ngữ đích.",
      "how": "Ghi glossary, quy ước số/ngày và mẫu dịch theo bản nguồn khóa.",
      "input": "Locale và quốc gia đích; Bằng chứng thị trường đích và đầu tư; Bản nguồn khóa; Glossary / số / ngày / đơn vị; Người dịch; Người hiệu đính song ngữ độc lập",
      "output": "Hồ sơ edition được người hiệu đính độc lập chấp nhận hoặc ghi không áp dụng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=9"
    },
    {
      "group": "Phase step",
      "phase": "F09",
      "step": "4",
      "feature": "Đối chiếu song ngữ độc lập",
      "status": "Đã xong",
      "implemented": "Localization content/source/version và reviewer độc lập translator",
      "remaining": "Người duyệt tự khai",
      "id": "legacy-67",
      "phase_ids": [
        9
      ],
      "steps": {
        "9": [
          4
        ]
      },
      "purpose": "Đánh giá riêng nhu cầu, quyền và chất lượng của từng ngôn ngữ đích.",
      "how": "Ghi người dịch và người hiệu đính độc lập; lưu kết quả đối chiếu.",
      "input": "Locale và quốc gia đích; Bằng chứng thị trường đích và đầu tư; Bản nguồn khóa; Glossary / số / ngày / đơn vị; Người dịch; Người hiệu đính song ngữ độc lập",
      "output": "Hồ sơ edition được người hiệu đính độc lập chấp nhận hoặc ghi không áp dụng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=9"
    },
    {
      "group": "Phase step",
      "phase": "F09",
      "step": "5",
      "feature": "Thử bản địa và khóa edition",
      "status": "Đang làm",
      "implemented": "Edition manager/source stale, test bản địa và lock",
      "remaining": "Chưa tự propagation mọi tool/audio/cultural change",
      "id": "legacy-68",
      "phase_ids": [
        9
      ],
      "steps": {
        "9": [
          5
        ]
      },
      "purpose": "Đánh giá riêng nhu cầu, quyền và chất lượng của từng ngôn ngữ đích.",
      "how": "Thử bản địa, ghi phiên bản edition và kết luận. Dịch tự động đầu-cuối chưa hoàn tất.",
      "input": "Locale và quốc gia đích; Bằng chứng thị trường đích và đầu tư; Bản nguồn khóa; Glossary / số / ngày / đơn vị; Người dịch; Người hiệu đính song ngữ độc lập",
      "output": "Hồ sơ edition được người hiệu đính độc lập chấp nhận hoặc ghi không áp dụng.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=9"
    },
    {
      "group": "Local data form",
      "phase": "F09",
      "step": "",
      "feature": "Ma trận bản địa hóa",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Giữ đúng nghĩa, phủ định, số và nguồn; review song ngữ độc lập với dịch giả.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-69",
      "phase_ids": [
        9
      ],
      "steps": {
        "9": [
          2,
          4,
          5
        ]
      },
      "purpose": "Giữ đúng nghĩa, phủ định, số và nguồn; review song ngữ độc lập với dịch giả.",
      "how": "Mở sách → F09 → Ma trận bản địa hóa; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã nội dung và source version (bắt buộc); Thị trường / biến thể (bắt buộc); Vấn đề và cách xử lý (bắt buộc); Nguồn địa phương / tham khảo (bắt buộc); Người dịch (bắt buộc); Người hiệu đính song ngữ (bắt buộc); Trạng thái (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=9"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "1",
      "feature": "Thiết kế bìa theo định vị",
      "status": "Đang làm",
      "implemented": "Cover templates/Visual Bible/spine/bleed math và cover brief",
      "remaining": "Chưa image conditioning/consistency QC và bìa theo pagecount thật end-to-end",
      "id": "legacy-70",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1
        ]
      },
      "purpose": "Tạo và kiểm file đúng cấu hình phát hành của từng kênh.",
      "how": "Dùng Cover để chuẩn bị bìa theo định vị; ghi asset và quyền sử dụng.",
      "input": "Edition / locale / formats; Số trang thực (0 nếu chỉ ebook); Cấu hình kênh / version; Kiểm màn hình / font / đọc thử / proof",
      "output": "Artifact có phiên bản, checksum và hồ sơ proof/QC.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "2",
      "feature": "Render nội thất và số trang thật",
      "status": "Đã xong",
      "implemented": "Geometry/đo DOM/phân trang và số trang thực được nối vào bản in và bìa.",
      "remaining": "Cần proof thiết bị/nhà in và xác minh font thực tế trước phát hành.",
      "id": "legacy-71",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          2
        ]
      },
      "purpose": "Tạo và kiểm file đúng cấu hình phát hành của từng kênh.",
      "how": "Ghi cấu hình nội thất và số trang từ file render thực, không từ số chữ ước tính.",
      "input": "Edition / locale / formats; Số trang thực (0 nếu chỉ ebook); Cấu hình kênh / version; Kiểm màn hình / font / đọc thử / proof",
      "output": "Artifact có phiên bản, checksum và hồ sơ proof/QC.",
      "scope": "Đo layout và phân trang trên máy",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts",
        "src/lib/pagination/flow.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "3",
      "feature": "Tạo EPUB / PDF theo kênh",
      "status": "Đang làm",
      "implemented": "Export EPUB/DOCX/PDF có nguồn canonical; SCORM/PPT/XLSX helpers",
      "remaining": "Cần kiểm file thực tế theo renderer/kênh; PDF/X chỉ khi renderer hỗ trợ",
      "id": "legacy-72",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          3
        ]
      },
      "purpose": "Tạo và kiểm file đúng cấu hình phát hành của từng kênh.",
      "how": "Dùng Export tạo định dạng hiện hỗ trợ; lưu phiên bản/profile và kết quả kiểm.",
      "input": "Edition / locale / formats; Số trang thực (0 nếu chỉ ebook); Cấu hình kênh / version; Kiểm màn hình / font / đọc thử / proof",
      "output": "Artifact có phiên bản, checksum và hồ sơ proof/QC.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "4",
      "feature": "Kiểm tiếp cận tự động và thủ công",
      "status": "Đang làm",
      "implemented": "A11y rules và F10 records EPUBCheck/ACE/screen reader",
      "remaining": "Chưa orchestration validator ngoài trên artifact thật",
      "id": "legacy-73",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          4
        ]
      },
      "purpose": "Tạo và kiểm file đúng cấu hình phát hành của từng kênh.",
      "how": "Ghi kiểm tiếp cận tự động và kiểm đọc thủ công theo thiết bị.",
      "input": "Edition / locale / formats; Số trang thực (0 nếu chỉ ebook); Cấu hình kênh / version; Kiểm màn hình / font / đọc thử / proof",
      "output": "Artifact có phiên bản, checksum và hồ sơ proof/QC.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "5",
      "feature": "Proofread / proof rồi khóa checksum",
      "status": "Đang làm",
      "implemented": "Checksum/version/proof/manual results được quản lý",
      "remaining": "Chưa preview/artifact storage/validator pipeline bất biến hoàn chỉnh",
      "id": "legacy-74",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          5
        ]
      },
      "purpose": "Tạo và kiểm file đúng cấu hình phát hành của từng kênh.",
      "how": "Ghi proof, người kiểm và checksum trước khi duyệt. Render/QC tự động đầy đủ vẫn đang hoàn thiện.",
      "input": "Edition / locale / formats; Số trang thực (0 nếu chỉ ebook); Cấu hình kênh / version; Kiểm màn hình / font / đọc thử / proof",
      "output": "Artifact có phiên bản, checksum và hồ sơ proof/QC.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "Local data form",
      "phase": "F10",
      "step": "",
      "feature": "Kiểm tra file / tiếp cận / proof",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Checksum và source version phải khớp preview. Ghi riêng kiểm tự động và kiểm thủ công.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-75",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1,
          2,
          3,
          4,
          5
        ]
      },
      "purpose": "Checksum và source version phải khớp preview. Ghi riêng kiểm tự động và kiểm thủ công. `not_run` là phép kiểm CHƯA chạy được (thiếu công cụ, thiếu người) — khác hẳn `pass`, và phải ghi lý do ở evidence.",
      "how": "Mở sách → F10 → Kiểm tra file / tiếp cận / proof; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "File / đường dẫn artifact (bắt buộc); Source / renderer version (bắt buộc); Checksum file (bắt buộc); Kênh / cấu hình (bắt buộc); Phép kiểm (bắt buộc); Kết quả (bắt buộc); Người kiểm (bắt buộc); Kết quả / disposition (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "Phase step",
      "phase": "F11",
      "step": "1",
      "feature": "Chọn SKU có nhu cầu",
      "status": "Đã xong",
      "implemented": "F03 product needs + F11 chọn/hoãn nhánh; optional decision",
      "remaining": "",
      "id": "legacy-76",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": [
          1
        ]
      },
      "purpose": "Chỉ bổ sung công cụ hoặc audio khi có nhu cầu và khả năng hỗ trợ.",
      "how": "Chọn SKU đã có nhu cầu và ghi phạm vi cần làm.",
      "input": "SKU, phạm vi và nhu cầu; Hỗ trợ / công suất / version phần mềm; Giọng, account, quyền, consent và tuyến phân phối nếu audio",
      "output": "Hồ sơ thử sản phẩm, quyền giọng và kết quả QC từng SKU.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=11"
    },
    {
      "group": "Phase step",
      "phase": "F11",
      "step": "2",
      "feature": "Mẫu / bản trống / reset / hướng dẫn",
      "status": "Đang làm",
      "implemented": "Course/remix/template/tool libraries và registry test/reset/instructions",
      "remaining": "Chưa runtime giao sản phẩm và reset khách mới cho mọi loại",
      "id": "legacy-77",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": [
          2
        ]
      },
      "purpose": "Chỉ bổ sung công cụ hoặc audio khi có nhu cầu và khả năng hỗ trợ.",
      "how": "Chuẩn bị mẫu, bản trống, reset và hướng dẫn cùng version.",
      "input": "SKU, phạm vi và nhu cầu; Hỗ trợ / công suất / version phần mềm; Giọng, account, quyền, consent và tuyến phân phối nếu audio",
      "output": "Hồ sơ thử sản phẩm, quyền giọng và kết quả QC từng SKU.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=11"
    },
    {
      "group": "Phase step",
      "phase": "F11",
      "step": "3",
      "feature": "Thử tài khoản khách và dữ liệu biên",
      "status": "Đã xong",
      "implemented": "Product tests platform/version/edge/pass/fail/reviewer",
      "remaining": "Người vận hành thực hiện và ghi kết quả",
      "id": "legacy-78",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": [
          3
        ]
      },
      "purpose": "Chỉ bổ sung công cụ hoặc audio khi có nhu cầu và khả năng hỗ trợ.",
      "how": "Ghi kết quả thử với tài khoản khách và dữ liệu biên.",
      "input": "SKU, phạm vi và nhu cầu; Hỗ trợ / công suất / version phần mềm; Giọng, account, quyền, consent và tuyến phân phối nếu audio",
      "output": "Hồ sơ thử sản phẩm, quyền giọng và kết quả QC từng SKU.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=11"
    },
    {
      "group": "Phase step",
      "phase": "F11",
      "step": "4",
      "feature": "Kiểm audio account / voice / route",
      "status": "Đang làm",
      "implemented": "Audio voice/account/route/rights fields và adapter TTS",
      "remaining": "Chưa provider enrollment/clone consent lifecycle end-to-end",
      "id": "legacy-79",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": [
          4
        ]
      },
      "purpose": "Chỉ bổ sung công cụ hoặc audio khi có nhu cầu và khả năng hỗ trợ.",
      "how": "Với audio, ghi account, quyền giọng, consent và route phân phối.",
      "input": "SKU, phạm vi và nhu cầu; Hỗ trợ / công suất / version phần mềm; Giọng, account, quyền, consent và tuyến phân phối nếu audio",
      "output": "Hồ sơ thử sản phẩm, quyền giọng và kết quả QC từng SKU.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=11"
    },
    {
      "group": "Phase step",
      "phase": "F11",
      "step": "5",
      "feature": "Duyệt mẫu, nghe toàn bộ và QC",
      "status": "Đang làm",
      "implemented": "Audio sample/QC helpers/media worker và nghe duyệt trong hồ sơ",
      "remaining": "Chưa audio job thật, nghe duyệt toàn bộ, phân phối thật",
      "id": "legacy-80",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": [
          5
        ]
      },
      "purpose": "Chỉ bổ sung công cụ hoặc audio khi có nhu cầu và khả năng hỗ trợ.",
      "how": "Ghi duyệt mẫu và nghe/QC toàn bộ trước phát hành. Worker audio thật chưa hoàn tất.",
      "input": "SKU, phạm vi và nhu cầu; Hỗ trợ / công suất / version phần mềm; Giọng, account, quyền, consent và tuyến phân phối nếu audio",
      "output": "Hồ sơ thử sản phẩm, quyền giọng và kết quả QC từng SKU.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=11"
    },
    {
      "group": "Local data form",
      "phase": "F11",
      "step": "",
      "feature": "Kiểm thử sản phẩm bổ sung",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Dữ liệu mẫu, bản trống, reset và thử tài khoản khách mới; không giao quyền sửa file gốc.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-81",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": [
          2,
          3,
          5
        ]
      },
      "purpose": "Dữ liệu mẫu, bản trống, reset và thử tài khoản khách mới; không giao quyền sửa file gốc.",
      "how": "Mở sách → F11 → Kiểm thử sản phẩm bổ sung; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "SKU (bắt buộc); Phần mềm / thiết bị / version (bắt buộc); Trường hợp điển hình / biên / nhập sai (bắt buộc); Kết quả (bắt buộc); Hướng dẫn / reset / hỗ trợ (bắt buộc); Người kiểm (bắt buộc); Bằng chứng (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=11"
    },
    {
      "group": "Phase step",
      "phase": "F12",
      "step": "1",
      "feature": "Chọn route / kiểm độc quyền",
      "status": "Đã xong",
      "implemented": "Route/SKU/market/format/exclusivity/eligibility/policy/date checks",
      "remaining": "Không tự xác nhận hợp đồng nhà phân phối",
      "id": "legacy-82",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          1
        ]
      },
      "purpose": "Kiểm đường phân phối và một đơn mua trọn vòng trước phát hành.",
      "how": "Ghi route, điều kiện độc quyền và bằng chứng quyền phát hành.",
      "input": "Metadata và artifact versions; Payment / tax responsibility / payout verified; Nguồn tài nguyên và kiểm liên kết theo kênh; Giao thư / unsubscribe / SPF DKIM DMARC nếu dùng email; External IDs / ngày mua thực tế / bằng chứng phát hành",
      "output": "Release candidate, metadata, quyền liên hệ và bằng chứng giao đơn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Phase step",
      "phase": "F12",
      "step": "2",
      "feature": "Metadata / ISBN / giá / disclosure",
      "status": "Đang làm",
      "implemented": "Metadata/pricing/disclosure/ISBN, blueprint validator",
      "remaining": "Connector marketplace/POD chưa hoàn chỉnh; giá là kịch bản",
      "id": "legacy-83",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          2
        ]
      },
      "purpose": "Kiểm đường phân phối và một đơn mua trọn vòng trước phát hành.",
      "how": "Nhập metadata, ISBN nếu cần, giá và disclosure theo kênh.",
      "input": "Metadata và artifact versions; Payment / tax responsibility / payout verified; Nguồn tài nguyên và kiểm liên kết theo kênh; Giao thư / unsubscribe / SPF DKIM DMARC nếu dùng email; External IDs / ngày mua thực tế / bằng chứng phát hành",
      "output": "Release candidate, metadata, quyền liên hệ và bằng chứng giao đơn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Phase step",
      "phase": "F12",
      "step": "3",
      "feature": "Kiểm tài nguyên và quyền email",
      "status": "Đã xong",
      "implemented": "KDP resource rules; marketing khác transactional consent",
      "remaining": "Chưa mail delivery/unsubscribe thật",
      "id": "legacy-84",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          3
        ]
      },
      "purpose": "Kiểm đường phân phối và một đơn mua trọn vòng trước phát hành.",
      "how": "Kiểm tài nguyên, liên kết và consent email; ghi kết quả kiểm nguồn.",
      "input": "Metadata và artifact versions; Payment / tax responsibility / payout verified; Nguồn tài nguyên và kiểm liên kết theo kênh; Giao thư / unsubscribe / SPF DKIM DMARC nếu dùng email; External IDs / ngày mua thực tế / bằng chứng phát hành",
      "output": "Release candidate, metadata, quyền liên hệ và bằng chứng giao đơn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Phase step",
      "phase": "F12",
      "step": "4",
      "feature": "Thử đơn trọn vòng",
      "status": "Đang làm",
      "implemented": "Test-order registry; Stripe Checkout gói/credits app",
      "remaining": "Chưa D2C bán sách→giao file→hoàn tiền→đối soát thật",
      "id": "legacy-85",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          4
        ]
      },
      "purpose": "Kiểm đường phân phối và một đơn mua trọn vòng trước phát hành.",
      "how": "Ghi đơn thử từ trả tiền tới nhận file, hỗ trợ và hoàn tiền; billing app không thay bán sách D2C.",
      "input": "Metadata và artifact versions; Payment / tax responsibility / payout verified; Nguồn tài nguyên và kiểm liên kết theo kênh; Giao thư / unsubscribe / SPF DKIM DMARC nếu dùng email; External IDs / ngày mua thực tế / bằng chứng phát hành",
      "output": "Release candidate, metadata, quyền liên hệ và bằng chứng giao đơn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Phase step",
      "phase": "F12",
      "step": "5",
      "feature": "Duyệt release candidate và phát hành",
      "status": "Đang làm",
      "implemented": "Release evidence/version/external IDs; publish route/packaging có nền",
      "remaining": "Chưa chứng minh phát hành qua từng nhà phân phối",
      "id": "legacy-86",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          5
        ]
      },
      "purpose": "Kiểm đường phân phối và một đơn mua trọn vòng trước phát hành.",
      "how": "Ghi artifact/external ID/ngày có thể mua và duyệt release. Adapter phát hành/D2C đầu-cuối chưa hoàn tất.",
      "input": "Metadata và artifact versions; Payment / tax responsibility / payout verified; Nguồn tài nguyên và kiểm liên kết theo kênh; Giao thư / unsubscribe / SPF DKIM DMARC nếu dùng email; External IDs / ngày mua thực tế / bằng chứng phát hành",
      "output": "Release candidate, metadata, quyền liên hệ và bằng chứng giao đơn.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Local data form",
      "phase": "F12",
      "step": "",
      "feature": "Ma trận kênh và độc quyền",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Một tuyến cung cấp cho mỗi tựa/ngôn ngữ/định dạng/kênh. Eligibility giọng AI phải được xác nhận.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-87",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          1
        ]
      },
      "purpose": "Một tuyến cung cấp cho mỗi tựa/ngôn ngữ/định dạng/kênh. Eligibility giọng AI phải được xác nhận.",
      "how": "Mở sách → F12 → Ma trận kênh và độc quyền; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "SKU (bắt buộc); Kênh (bắt buộc); Thị trường (bắt buộc); Định dạng (bắt buộc); Nhà phân phối / tuyến gửi (bắt buộc); Độc quyền (bắt buộc); Bắt đầu; Kết thúc / gia hạn; Quyền / tài khoản / giọng được phép (bắt buộc); Nguồn policy / hợp đồng (bắt buộc); Ngày kiểm (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Local data form",
      "phase": "F12",
      "step": "",
      "feature": "Thử đơn và đối soát",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Đi hết thanh toán, giao, tải, dùng, hỗ trợ và hoàn tiền trong môi trường thử hợp lệ.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-88",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          4
        ]
      },
      "purpose": "Đi hết thanh toán, giao, tải, dùng, hỗ trợ và hoàn tiền trong môi trường thử hợp lệ.",
      "how": "Mở sách → F12 → Thử đơn và đối soát; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã đơn (không ghi dữ liệu cá nhân) (bắt buộc); SKU (bắt buộc); Kênh (bắt buộc); Kết quả toàn vòng (bắt buộc); Thanh toán / giao / tải / hỗ trợ / hoàn tiền / đối soát (bắt buộc); Người kiểm (bắt buộc); Ngày thử (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Local data form",
      "phase": "F12",
      "step": "",
      "feature": "Quyền nhận email",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Email giao dịch không mặc định cho phép marketing. Lưu mã khách thay thông tin riêng tư.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-89",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          3
        ]
      },
      "purpose": "Email giao dịch không mặc định cho phép marketing. Lưu mã khách thay thông tin riêng tư.",
      "how": "Mở sách → F12 → Quyền nhận email; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã khách / nhóm (bắt buộc); Mục đích (bắt buộc); Trạng thái (bắt buộc); Cơ sở / bằng chứng đồng ý (bắt buộc); Ngày ghi nhận (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Local data form",
      "phase": "F12",
      "step": "",
      "feature": "Liên kết tài nguyên theo kênh",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Link trong Kindle phải hỗ trợ nội dung; không yêu cầu thông tin khách hàng hoặc dẫn tới cửa hàng ebook ngoài Amazon. Kiểm thủ công đích đến và ghi nguồn chính sách.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-90",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": [
          3
        ]
      },
      "purpose": "Link trong Kindle phải hỗ trợ nội dung; không yêu cầu thông tin khách hàng hoặc dẫn tới cửa hàng ebook ngoài Amazon. Kiểm thủ công đích đến và ghi nguồn chính sách.",
      "how": "Mở sách → F12 → Liên kết tài nguyên theo kênh; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tên tự mô tả (bắt buộc); Kênh (bắt buộc); Định dạng (bắt buộc); Đường dẫn (bắt buộc); Đích đến (bắt buộc); Mục đích (bắt buộc); Nguồn chính sách / bằng chứng kiểm tra (bắt buộc); Ngày kiểm tra (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "1",
      "feature": "Chuẩn bị trước 28 ngày",
      "status": "Đang làm",
      "implemented": "Launch kit/calendar/checklist và cửa sổ prelaunch Campaign được nối vào lịch SOP.",
      "remaining": "Một số tab còn fixture; chưa orchestration chiến dịch thật",
      "id": "legacy-91",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": [
          1
        ]
      },
      "purpose": "Ra mắt có mốc thời gian và thử thay đổi với bằng chứng đo được.",
      "how": "Lập việc từ trước 28 ngày và người phụ trách trong lịch ra mắt.",
      "input": "Ngày có thể mua thực tế; Review ngày 30 và quyết định; Review ngày 90 và quyết định; Nguồn traffic / cửa sổ attribution / yếu tố nhiễu",
      "output": "Nhật ký ra mắt, thử nghiệm và quyết định tại ngày 30/90.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts",
        "src/lib/launch/sop-schedule.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "2",
      "feature": "ARC tự nguyện và thử giao",
      "status": "Đang làm",
      "implemented": "ARC voluntary, reviewer/task/evidence trong hồ sơ",
      "remaining": "Chưa gửi mẫu/email hoặc theo dõi delivery thật",
      "id": "legacy-92",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": [
          2
        ]
      },
      "purpose": "Ra mắt có mốc thời gian và thử thay đổi với bằng chứng đo được.",
      "how": "Ghi ARC tự nguyện và kiểm giao; không tự động gửi thư hoặc yêu cầu review tích cực.",
      "input": "Ngày có thể mua thực tế; Review ngày 30 và quyết định; Review ngày 90 và quyết định; Nguồn traffic / cửa sổ attribution / yếu tố nhiễu",
      "output": "Nhật ký ra mắt, thử nghiệm và quyết định tại ngày 30/90.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "3",
      "feature": "Ngày 0–7 theo dõi hỗ trợ",
      "status": "Đã xong",
      "implemented": "Day0 thực tế, launch tasks và notes hỗ trợ",
      "remaining": "Vận hành thủ công",
      "id": "legacy-93",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": [
          3
        ]
      },
      "purpose": "Ra mắt có mốc thời gian và thử thay đổi với bằng chứng đo được.",
      "how": "Ghi vấn đề hỗ trợ và khả năng mua/giao trong ngày 0–7.",
      "input": "Ngày có thể mua thực tế; Review ngày 30 và quyết định; Review ngày 90 và quyết định; Nguồn traffic / cửa sổ attribution / yếu tố nhiễu",
      "output": "Nhật ký ra mắt, thử nghiệm và quyết định tại ngày 30/90.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "4",
      "feature": "Ngày 8–30 thử thay đổi có kiểm soát",
      "status": "Đã xong",
      "implemented": "Experiment registry/window/spend/design; không tự tăng ngân sách",
      "remaining": "Kết quả nhập tay/CSV, chưa tracking tự động",
      "id": "legacy-94",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": [
          4
        ]
      },
      "purpose": "Ra mắt có mốc thời gian và thử thay đổi với bằng chứng đo được.",
      "how": "Đặt giả thuyết và ngưỡng trước thử ngày 8–30; chỉ đổi điều đã lên kế hoạch.",
      "input": "Ngày có thể mua thực tế; Review ngày 30 và quyết định; Review ngày 90 và quyết định; Nguồn traffic / cửa sổ attribution / yếu tố nhiễu",
      "output": "Nhật ký ra mắt, thử nghiệm và quyết định tại ngày 30/90.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "5",
      "feature": "Ngày 31–90 đo đóng góp / mua tiếp",
      "status": "Đang làm",
      "implemented": "Sales/portfolio contribution, cohort fields và import primitives",
      "remaining": "Chưa đọc telemetry/cohort khách hàng tự động",
      "id": "legacy-95",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": [
          5
        ]
      },
      "purpose": "Ra mắt có mốc thời gian và thử thay đổi với bằng chứng đo được.",
      "how": "Nhập kết quả, đóng góp, mua tiếp và cửa sổ attribution ngày 31–90.",
      "input": "Ngày có thể mua thực tế; Review ngày 30 và quyết định; Review ngày 90 và quyết định; Nguồn traffic / cửa sổ attribution / yếu tố nhiễu",
      "output": "Nhật ký ra mắt, thử nghiệm và quyết định tại ngày 30/90.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "6",
      "feature": "Review 30 / 90 và ngân sách tiếp",
      "status": "Đã xong",
      "implemented": "Review30/review90, decision, next spend và revisit",
      "remaining": "Không tự gọi lịch hẹn hoặc gửi thông báo ngoài",
      "id": "legacy-96",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": [
          6
        ]
      },
      "purpose": "Ra mắt có mốc thời gian và thử thay đổi với bằng chứng đo được.",
      "how": "Ghi review ngày 30/90, giới hạn kết luận và ngân sách tiếp theo.",
      "input": "Ngày có thể mua thực tế; Review ngày 30 và quyết định; Review ngày 90 và quyết định; Nguồn traffic / cửa sổ attribution / yếu tố nhiễu",
      "output": "Nhật ký ra mắt, thử nghiệm và quyết định tại ngày 30/90.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Local data form",
      "phase": "F13",
      "step": "",
      "feature": "Lịch ra mắt và ARC",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Ngày 0 là ngày mua thực tế. ARC là đánh giá tự nguyện, không thưởng hoặc yêu cầu số sao.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-97",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": [
          1,
          2,
          3
        ]
      },
      "purpose": "Ngày 0 là ngày mua thực tế. ARC là đánh giá tự nguyện, không thưởng hoặc yêu cầu số sao.",
      "how": "Mở sách → F13 → Lịch ra mắt và ARC; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Công việc (bắt buộc); Khoảng (bắt buộc); Người phụ trách (bắt buộc); Ngày (bắt buộc); Hạn mức (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Trạng thái (bắt buộc); Kết quả / quyền gửi (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Local data form",
      "phase": "F13",
      "step": "",
      "feature": "Thử nghiệm nhu cầu và thương mại",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Email chỉ là quan tâm. Phân biệt A/B có kiểm soát với so sánh trước sau; không tự đăng trang hoặc chạy quảng cáo.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-98",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": [
          4,
          5
        ]
      },
      "purpose": "Email chỉ là quan tâm. Phân biệt A/B có kiểm soát với so sánh trước sau; không tự đăng trang hoặc chạy quảng cáo.",
      "how": "Mở sách → F13 → Thử nghiệm nhu cầu và thương mại; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Giả thuyết (bắt buộc); Mã ngách / SKU (bắt buộc); Cách thử (bắt buộc); Thiết kế (bắt buộc); Thông điệp / mẫu / thay đổi (bắt buộc); Đối tượng đủ điều kiện (bắt buộc); Lượt tiếp cận đủ điều kiện (bắt buộc); Đăng ký quan tâm; Người dùng mẫu; Đơn mua (bắt buộc); Chi tiêu (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Hạn mức thử (bắt buộc); Cửa sổ đo và attribution (bắt buộc); Yếu tố nhiễu / hạn chế (bắt buộc); Kết luận và lần thử tiếp theo (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "1",
      "feature": "Đóng sổ tháng và đối soát",
      "status": "Đã xong",
      "implemented": "Financial-event CSV idempotent, conflict rejected; portfolio close",
      "remaining": "Phải đối chiếu đủ báo cáo nguồn thủ công",
      "id": "legacy-99",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          1
        ]
      },
      "purpose": "Đối soát tiền và quản lý cập nhật/quyền ở cấp danh mục.",
      "how": "Nhập CSV sự kiện quan sát, kiểm trùng nguồn và đối chiếu báo cáo theo kỳ.",
      "input": "Kỳ tháng / quý; Giữ / sửa / dừng / mở rộng và bằng chứng; Tiền khả dụng / công suất / nghĩa vụ cập nhật; Sự cố tài khoản / hỗ trợ / kế hoạch xử lý",
      "output": "Sổ kỳ theo SKU, ảnh hưởng cập nhật và quyết định đầu tư tiếp.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "2",
      "feature": "P&L theo SKU / cash / cohort",
      "status": "Đang làm",
      "implemented": "Tách retail/royalty/refund/cost/cash/currency; thiếu dữ liệu vẫn null",
      "remaining": "Cohort/repeat revenue thật chưa tự đồng bộ",
      "id": "legacy-100",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          2
        ]
      },
      "purpose": "Đối soát tiền và quản lý cập nhật/quyền ở cấp danh mục.",
      "how": "Nhập đóng sổ SKU; xem riêng bán lẻ, royalty, đóng góp và tiền về cùng tiền tệ.",
      "input": "Kỳ tháng / quý; Giữ / sửa / dừng / mở rộng và bằng chứng; Tiền khả dụng / công suất / nghĩa vụ cập nhật; Sự cố tài khoản / hỗ trợ / kế hoạch xử lý",
      "output": "Sổ kỳ theo SKU, ảnh hưởng cập nhật và quyết định đầu tư tiếp.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "3",
      "feature": "Rà hoàn tiền và support",
      "status": "Đang làm",
      "implemented": "Portfolio/refund/support records và phân tích sales",
      "remaining": "Chưa helpdesk sync hoặc refund execution thật",
      "id": "legacy-101",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          3
        ]
      },
      "purpose": "Đối soát tiền và quản lý cập nhật/quyền ở cấp danh mục.",
      "how": "Ghi hoàn tiền, hỗ trợ và nguyên nhân cần cải tiến.",
      "input": "Kỳ tháng / quý; Giữ / sửa / dừng / mở rộng và bằng chứng; Tiền khả dụng / công suất / nghĩa vụ cập nhật; Sự cố tài khoản / hỗ trợ / kế hoạch xử lý",
      "output": "Sổ kỳ theo SKU, ảnh hưởng cập nhật và quyết định đầu tư tiếp.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "4",
      "feature": "Cập nhật source / editions / audio / tools",
      "status": "Đang làm",
      "implemented": "Change register/content anchors/edition versions/merge/snapshots",
      "remaining": "Chưa propagation tự động mọi audio/tool/translation",
      "id": "legacy-102",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          4
        ]
      },
      "purpose": "Đối soát tiền và quản lý cập nhật/quyền ở cấp danh mục.",
      "how": "Ghi content ID thay đổi và mọi edition/audio/tool cần cập nhật.",
      "input": "Kỳ tháng / quý; Giữ / sửa / dừng / mở rộng và bằng chứng; Tiền khả dụng / công suất / nghĩa vụ cập nhật; Sự cố tài khoản / hỗ trợ / kế hoạch xử lý",
      "output": "Sổ kỳ theo SKU, ảnh hưởng cập nhật và quyết định đầu tư tiếp.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "5",
      "feature": "Rà gia hạn và quyền B2B",
      "status": "Đã xong",
      "implemented": "License pipeline/status/territory/expiry/owner và review quyền",
      "remaining": "Không ký/gửi hợp đồng tự động",
      "id": "legacy-103",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          5
        ]
      },
      "purpose": "Đối soát tiền và quản lý cập nhật/quyền ở cấp danh mục.",
      "how": "Ghi quyền B2B, thời hạn, nghĩa vụ báo cáo và gia hạn.",
      "input": "Kỳ tháng / quý; Giữ / sửa / dừng / mở rộng và bằng chứng; Tiền khả dụng / công suất / nghĩa vụ cập nhật; Sự cố tài khoản / hỗ trợ / kế hoạch xử lý",
      "output": "Sổ kỳ theo SKU, ảnh hưởng cập nhật và quyết định đầu tư tiếp.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "6",
      "feature": "Review quý và đầu tư tiếp",
      "status": "Đã xong",
      "implemented": "Period/decision/capacity/incident và vòng đầu tư lại",
      "remaining": "",
      "id": "legacy-104",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          6
        ]
      },
      "purpose": "Đối soát tiền và quản lý cập nhật/quyền ở cấp danh mục.",
      "how": "Ghi tiền khả dụng, công suất, bằng chứng rồi chọn giữ/sửa/dừng/mở rộng.",
      "input": "Kỳ tháng / quý; Giữ / sửa / dừng / mở rộng và bằng chứng; Tiền khả dụng / công suất / nghĩa vụ cập nhật; Sự cố tài khoản / hỗ trợ / kế hoạch xử lý",
      "output": "Sổ kỳ theo SKU, ảnh hưởng cập nhật và quyết định đầu tư tiếp.",
      "scope": "Bước quy trình, gồm phần mềm và nghiệm thu",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Local data form",
      "phase": "F14",
      "step": "",
      "feature": "Sổ giao dịch đối soát",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Nhập sự kiện từ báo cáo nguồn: doanh thu bán lẻ, royalty, hoàn tiền, tiền thực nhận và chi phí là các loại khác nhau. Hoàn tiền đã trừ trong royalty không nhập lại như refund_accrual. Không lưu thông tin cá nhân khách hàng.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-105",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          1
        ]
      },
      "purpose": "Nhập sự kiện từ báo cáo nguồn: doanh thu bán lẻ, royalty, hoàn tiền, tiền thực nhận và chi phí là các loại khác nhau. Hoàn tiền đã trừ trong royalty không nhập lại như refund_accrual. Không lưu thông tin cá nhân khách hàng. `subject` là MÃ KHÁCH GIẢ (mã giả, không phải tên/email/điện thoại) — không có nó thì không tính được cohort, và cohort khi đó là CHƯA BIẾT chứ không phải 0.",
      "how": "Mở sách → F14 → Sổ giao dịch đối soát; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã giao dịch nguồn (bắt buộc); SKU (bắt buộc); Kênh (bắt buộc); Mã khách giả (không phải PII) (bắt buộc); Ngày sự kiện (bắt buộc); Loại sự kiện (bắt buộc); Số tiền (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Local data form",
      "phase": "F14",
      "step": "",
      "feature": "Đóng sổ danh mục",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Doanh thu bán lẻ, royalty và tiền về là ba số khác nhau. Không suy ra cohort từ tỷ số đơn.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-106",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          1,
          2
        ]
      },
      "purpose": "Doanh thu bán lẻ, royalty và tiền về là ba số khác nhau. Không suy ra cohort từ tỷ số đơn.",
      "how": "Mở sách → F14 → Đóng sổ danh mục; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "SKU (bắt buộc); Kỳ tháng / quý (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Doanh thu bán lẻ (bắt buộc); Royalty ghi nhận (bắt buộc); Hoàn tiền chưa trừ (bắt buộc); Chi phí (bắt buộc); Tiền về ngân hàng (bắt buộc); Chênh lệch chờ đối soát (bắt buộc); Loại bằng chứng (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Local data form",
      "phase": "F14",
      "step": "",
      "feature": "Cập nhật và ảnh hưởng",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Sửa theo content ID, theo dõi mọi bản dịch/tool/audio liên quan.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-107",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          4
        ]
      },
      "purpose": "Sửa theo content ID, theo dõi mọi bản dịch/tool/audio liên quan.",
      "how": "Mở sách → F14 → Cập nhật và ảnh hưởng; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Mã nội dung / source version (bắt buộc); Thay đổi (bắt buộc); Ảnh hưởng (bắt buộc); Ngôn ngữ / sản phẩm cần sửa (bắt buộc); Người sửa (bắt buộc); Người kiểm (bắt buộc); Trạng thái (bắt buộc); Cần thông báo khách / lý do (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Local data form",
      "phase": "F14",
      "step": "",
      "feature": "Khai thác quyền và B2B",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, schema validation, local CAS; Ghi quyền, thời hạn, báo cáo, kiểm toán và trả lại quyền; thử hợp đồng nhỏ trước mở rộng.",
      "remaining": "Cloud SOP đã có schema; còn kiểm lưu/đọc bằng phiên người dùng thật; nhập tay không thay nhà cung cấp hoặc xác minh thực tế",
      "id": "legacy-108",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          5
        ]
      },
      "purpose": "Ghi quyền, thời hạn, báo cáo, kiểm toán và trả lại quyền; thử hợp đồng nhỏ trước mở rộng.",
      "how": "Mở sách → F14 → Khai thác quyền và B2B; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Đối tác (bắt buộc); Quyền / lãnh thổ / locale / format (bắt buộc); Thời hạn / chấm dứt / reversion (bắt buộc); Ngày hết hạn; Mức tối thiểu / tiền đặt cọc (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Báo cáo / kiểm toán (bắt buộc); Trạng thái (bắt buộc); Nguồn hợp đồng (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R01",
      "feature": "Xác định người mua, người dùng, job/trải nghiệm và 3–5 ngách",
      "status": "Đã xong",
      "implemented": "Candidate có buyer/user/problem/locale/source",
      "remaining": "Candidate Card liên kết F01, giả thuyết và cách tiếp cận",
      "id": "legacy-109",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Candidate có buyer/user/problem/locale/source",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Candidate có buyer/user/problem/locale/source",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R02",
      "feature": "Chốt câu hỏi, nguồn, phương pháp và ngân sách",
      "status": "Đã xong",
      "implemented": "Kế hoạch/method/budget/scope; chưa provider coverage registry đầy đủ",
      "remaining": "Sampling Plan; phạm vi, thời điểm và hạn mức được duyệt",
      "id": "legacy-110",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Kế hoạch/method/budget/scope; chưa provider coverage registry đầy đủ",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Kế hoạch/method/budget/scope; chưa provider coverage registry đầy đủ",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R03",
      "feature": "Thu thập 15–30 sản phẩm đối chiếu, gồm giải pháp ngoài sách",
      "status": "Đang làm",
      "implemented": "Catalog tay/CSV + Tavily URL; chưa tự extract marketplace",
      "remaining": "Giá/tiền tệ, format, update date, TOC, audience, delivery, strengths/gaps, provenance",
      "id": "legacy-111",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Catalog tay/CSV + Tavily URL; chưa tự extract marketplace",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Catalog tay/CSV + Tavily URL; chưa tự extract marketplace",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R04",
      "feature": "Quan sát search/BSR/price theo thời gian",
      "status": "Đang làm",
      "implemented": "Snapshots nhập tay có thời gian; chưa provider BSR/volume Có adapter DataForSEO search-volume; BSR/competition Amazon vẫn cần nguồn riêng.",
      "remaining": "Observation series có date/window, source và nhãn estimate; không BSR→sales certainty",
      "id": "legacy-112",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Snapshots nhập tay có thời gian; chưa provider BSR/volume",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Snapshots nhập tay có thời gian; chưa provider BSR/volume",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R05",
      "feature": "Chọn mẫu review tích cực/trung tính/tiêu cực",
      "status": "Đang làm",
      "implemented": "Corpus/rights/theme; summary loại trùng và đếm sắc thái; AI clustering chưa có",
      "remaining": "Theme, polarity, original excerpt, frequency/mẫu số, sampling bias và phản chứng",
      "id": "legacy-113",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Corpus/rights/theme; summary loại trùng và đếm sắc thái; AI clustering chưa có",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Corpus/rights/theme; summary loại trùng và đếm sắc thái; AI clustering chưa có",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R06",
      "feature": "Phỏng vấn khoảng 10–15 người đúng đối tượng",
      "status": "Đang làm",
      "implemented": "Notes/consent/quote; chưa upload transcript→AI coding workflow",
      "remaining": "Last problem/solution/spend/switching condition; quote IDs và kiểm ngữ cảnh",
      "id": "legacy-114",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Notes/consent/quote; chưa upload transcript→AI coding workflow",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Notes/consent/quote; chưa upload transcript→AI coding workflow",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R07",
      "feature": "Tổng hợp nhu cầu và khoảng trống",
      "status": "Đã xong",
      "implemented": "Needs/evidence/counterevidence; báo cáo nêu mã cần kiểm",
      "remaining": "Problem/opportunity statement, unresolved contradictions, segment-specific demand",
      "id": "legacy-115",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Needs/evidence/counterevidence; báo cáo nêu mã cần kiểm",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Needs/evidence/counterevidence; báo cáo nêu mã cần kiểm",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R08",
      "feature": "Thiết kế hai thông điệp và trang thử",
      "status": "Đang làm",
      "implemented": "Experiment variants/window/budget; chưa deploy trang và telemetry",
      "remaining": "Hypothesis, đối tượng, message, metric, denominator, budget, review date",
      "id": "legacy-116",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Experiment variants/window/budget; chưa deploy trang và telemetry",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Experiment variants/window/budget; chưa deploy trang và telemetry",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R09",
      "feature": "Thử chương/công cụ mẫu",
      "status": "Đã xong",
      "implemented": "Sample protocol/reader tasks có version; nghiệm thu người thật",
      "remaining": "Hiểu/làm được, assistance/time, failed steps; không đánh đồng đăng ký với mua",
      "id": "legacy-117",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Sample protocol/reader tasks có version; nghiệm thu người thật",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Sample protocol/reader tasks có version; nghiệm thu người thật",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R10",
      "feature": "Kiểm willingness-to-pay nếu phù hợp",
      "status": "Đang làm",
      "implemented": "Orders/refunds import có nền; chưa payment/delivery cho độc giả",
      "remaining": "Paid orders và delivery terms; chỉ bán/gửi khi có phê duyệt và đủ điều kiện",
      "id": "legacy-118",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Orders/refunds import có nền; chưa payment/delivery cho độc giả",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Orders/refunds import có nền; chưa payment/delivery cho độc giả",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R11",
      "feature": "Đọc kết quả và chẩn đoán",
      "status": "Đã xong",
      "implemented": "Tỷ lệ và Wilson interval; không tự gọi A/B causal",
      "remaining": "Kiểm audience/traffic/message/payment/price trước kết luận “ngách không có cầu”",
      "id": "legacy-119",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Tỷ lệ và Wilson interval; không tự gọi A/B causal",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Tỷ lệ và Wilson interval; không tự gọi A/B causal",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R12",
      "feature": "Lập F02 và quyết định đầu tư tiếp",
      "status": "Đã xong",
      "implemented": "F02 quyết định/vốn/revisit/history; chưa digital signing",
      "remaining": "Tiếp tục/sửa/hoãn/dừng; rationale, khoản đầu tư, loss cap và điều kiện xem lại",
      "id": "legacy-120",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "F02 quyết định/vốn/revisit/history; chưa digital signing",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "F02 quyết định/vốn/revisit/history; chưa digital signing",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "PRD group",
      "phase": "6–8",
      "step": "1",
      "feature": "AI Writing, 4-tier context",
      "status": "Đang làm",
      "implemented": "`generation/context-pack.ts`, `long-horizon.ts`, `ai/`",
      "remaining": "Nâng cấp context theo scene và chapter dependency; không xây engine thứ hai",
      "id": "legacy-121",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [],
        "7": [],
        "8": []
      },
      "purpose": "`generation/context-pack.ts`, `long-horizon.ts`, `ai/`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`generation/context-pack.ts`, `long-horizon.ts`, `ai/`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "6–8, 14",
      "step": "2",
      "feature": "Codex / Story Bible",
      "status": "Đang làm",
      "implemented": "`bible/`, `gen/types.ts`",
      "remaining": "Giữ extraction/canon/glossary; thêm temporal states và timeline UI",
      "id": "legacy-122",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [],
        "7": [],
        "8": [],
        "14": []
      },
      "purpose": "`bible/`, `gen/types.ts`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`bible/`, `gen/types.ts`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "8, 10",
      "step": "3",
      "feature": "AI Editorial 5-pass",
      "status": "Đang làm",
      "implemented": "`quality/`, `quality-ops/`, `audit.ts`, `debate/`",
      "remaining": "Nâng cấp bốn lớp nghiệm thu SOP, genre rubric, proofread artifact",
      "id": "legacy-123",
      "phase_ids": [
        8,
        10
      ],
      "steps": {
        "8": [],
        "10": []
      },
      "purpose": "`quality/`, `quality-ops/`, `audit.ts`, `debate/`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`quality/`, `quality-ops/`, `audit.ts`, `debate/`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "10",
      "step": "4",
      "feature": "Cover & Print Physics",
      "status": "Đang làm",
      "implemented": "`cover/`, `cover-tab.tsx`",
      "remaining": "Giữ math/templates; nối page count thực và renderer",
      "id": "legacy-124",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": []
      },
      "purpose": "`cover/`, `cover-tab.tsx`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Edition / locale / formats; Số trang thực (0 nếu chỉ ebook); Cấu hình kênh / version; Kiểm màn hình / font / đọc thử / proof",
      "output": "`cover/`, `cover-tab.tsx`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "PRD group",
      "phase": "10",
      "step": "5",
      "feature": "Interior Formatting",
      "status": "Đang làm",
      "implemented": "`formats/layout-profiles.ts`, `epub.ts`, print view, `workers/render/`",
      "remaining": "Nâng cấp pagination/gutter/typography/validation; không viết lại export",
      "id": "legacy-125",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": []
      },
      "purpose": "`formats/layout-profiles.ts`, `epub.ts`, print view, `workers/render/`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Edition / locale / formats; Số trang thực (0 nếu chỉ ebook); Cấu hình kênh / version; Kiểm màn hình / font / đọc thử / proof",
      "output": "`formats/layout-profiles.ts`, `epub.ts`, print view, `workers/render/`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "PRD group",
      "phase": "11–12",
      "step": "6",
      "feature": "Audiobook Studio",
      "status": "Đang làm",
      "implemented": "`audio/`, `audio-tab.tsx`, `workers/media/`",
      "remaining": "Nối pipeline end-to-end, job và QC trên file thật",
      "id": "legacy-126",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [],
        "12": []
      },
      "purpose": "`audio/`, `audio-tab.tsx`, `workers/media/`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`audio/`, `audio-tab.tsx`, `workers/media/`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "4, 12–14",
      "step": "7",
      "feature": "Publishing & Commerce",
      "status": "Đang làm",
      "implemented": "`publish/`, API publish, `sales/`",
      "remaining": "Giữ commerce/pricing; hoàn thiện release workflow và connector capability",
      "id": "legacy-127",
      "phase_ids": [
        4,
        12,
        13,
        14
      ],
      "steps": {
        "4": [],
        "12": [],
        "13": [],
        "14": []
      },
      "purpose": "`publish/`, API publish, `sales/`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`publish/`, API publish, `sales/`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "2–3, 12–13",
      "step": "8",
      "feature": "Marketing & SEO",
      "status": "Đang làm",
      "implemented": "`publish/metadata-optimizer.ts`, `launch/`",
      "remaining": "Giữ; nối campaign vào release đã duyệt và kết quả đo",
      "id": "legacy-128",
      "phase_ids": [
        2,
        3,
        12,
        13
      ],
      "steps": {
        "2": [],
        "3": [],
        "12": [],
        "13": []
      },
      "purpose": "`publish/metadata-optimizer.ts`, `launch/`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`publish/metadata-optimizer.ts`, `launch/`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "3, 6–8, 11",
      "step": "9",
      "feature": "Niche Book Generators",
      "status": "Đang làm",
      "implemented": "`blueprints/`, `batch/`, `marketplace/`",
      "remaining": "Mở rộng blueprint có nhu cầu và rubric; chưa coi đủ 18+ loại",
      "id": "legacy-129",
      "phase_ids": [
        3,
        6,
        7,
        8,
        11
      ],
      "steps": {
        "3": [],
        "6": [],
        "7": [],
        "8": [],
        "11": []
      },
      "purpose": "`blueprints/`, `batch/`, `marketplace/`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`blueprints/`, `batch/`, `marketplace/`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "9–10",
      "step": "10",
      "feature": "Translation & Multi-language",
      "status": "Đang làm",
      "implemented": "`publish/translate.ts`, `citations/backtranslate*`, editions",
      "remaining": "Nâng cấp edition workflow, cultural review, RTL; chưa tuyên bố hỗ trợ 59 ngôn ngữ",
      "id": "legacy-130",
      "phase_ids": [
        9,
        10
      ],
      "steps": {
        "9": [],
        "10": []
      },
      "purpose": "`publish/translate.ts`, `citations/backtranslate*`, editions",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`publish/translate.ts`, `citations/backtranslate*`, editions",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "7–8, 13–14",
      "step": "11",
      "feature": "Community & Gamification",
      "status": "Chưa làm",
      "implemented": "`fiction/writing-sprint.ts`, `market/author-site.ts` chỉ là nền liên quan",
      "remaining": "Community thật còn thiếu; thêm sau. Milestone tối thiểu lấy từ phase events",
      "id": "legacy-131",
      "phase_ids": [
        7,
        8,
        13,
        14
      ],
      "steps": {
        "7": [],
        "8": [],
        "13": [],
        "14": []
      },
      "purpose": "`fiction/writing-sprint.ts`, `market/author-site.ts` chỉ là nền liên quan",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`fiction/writing-sprint.ts`, `market/author-site.ts` chỉ là nền liên quan",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "5, 8–12",
      "step": "12",
      "feature": "Legal & Compliance",
      "status": "Đang làm",
      "implemented": "`trust/`, `factcheck/`, `disclosure.ts`, sensitivity",
      "remaining": "Nâng cấp risk/rights workflow; dùng cổng hiện có",
      "id": "legacy-132",
      "phase_ids": [
        5,
        8,
        9,
        10,
        11,
        12
      ],
      "steps": {
        "5": [],
        "8": [],
        "9": [],
        "10": [],
        "11": [],
        "12": []
      },
      "purpose": "`trust/`, `factcheck/`, `disclosure.ts`, sensitivity",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`trust/`, `factcheck/`, `disclosure.ts`, sensitivity",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "2, 4, 13–14",
      "step": "13",
      "feature": "Analytics & Optimization",
      "status": "Đang làm",
      "implemented": "`sales/`, `eval/`, `market/niche-score.ts`",
      "remaining": "Ưu tiên Research Workspace: bằng chứng nhu cầu, đối thủ, phỏng vấn và thử nghiệm; trend là một tín hiệu",
      "id": "legacy-133",
      "phase_ids": [
        2,
        4,
        13,
        14
      ],
      "steps": {
        "2": [],
        "4": [],
        "13": [],
        "14": []
      },
      "purpose": "`sales/`, `eval/`, `market/niche-score.ts`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`sales/`, `eval/`, `market/niche-score.ts`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "2, 6–7, 11",
      "step": "14",
      "feature": "Content Repurposing",
      "status": "Đang làm",
      "implemented": "`refs/`, `publish/translate.ts` remix, course, formats, `podcast/`",
      "remaining": "Giữ đầu ra; nối source-to-book recipes, thêm transcript/OCR khi cần",
      "id": "legacy-134",
      "phase_ids": [
        2,
        6,
        7,
        11
      ],
      "steps": {
        "2": [],
        "6": [],
        "7": [],
        "11": []
      },
      "purpose": "`refs/`, `publish/translate.ts` remix, course, formats, `podcast/`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`refs/`, `publish/translate.ts` remix, course, formats, `podcast/`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "Xuyên suốt",
      "step": "15",
      "feature": "Mobile & Sync",
      "status": "Đang làm",
      "implemented": "IndexedDB; SOP cloud có chọn tổ chức, lưu/đọc có kiểm revision, lịch sử, so sánh và khôi phục dữ liệu giữ quyết định; làm mới bản nguồn sau lưu",
      "remaining": "Cần kiểm lưu/đọc bằng phiên người dùng thật; PWA/CRDT ngoại tuyến và native app chưa hoàn tất",
      "id": "legacy-135",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {
        "1": [],
        "2": [],
        "3": [],
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": [],
        "9": [],
        "10": [],
        "11": [],
        "12": [],
        "13": [],
        "14": []
      },
      "purpose": "IndexedDB; SOP cloud có chọn tổ chức, lưu/đọc có kiểm revision, lịch sử, so sánh và khôi phục dữ liệu giữ quyết định; làm mới bản nguồn sau lưu",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "IndexedDB; SOP cloud có chọn tổ chức, lưu/đọc có kiểm revision, lịch sử, so sánh và khôi phục dữ liệu giữ quyết định; làm mới bản nguồn sau lưu",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "2, 6, 10–12",
      "step": "16",
      "feature": "Free Tools Suite",
      "status": "Chưa làm",
      "implemented": "Hàm bible/metadata/cover/pricing có thể tái sử dụng",
      "remaining": "Chưa có hub 25+ tools; chọn vài tool hữu ích, không nhân bản logic",
      "id": "legacy-136",
      "phase_ids": [
        2,
        6,
        10,
        11,
        12
      ],
      "steps": {
        "2": [],
        "6": [],
        "10": [],
        "11": [],
        "12": []
      },
      "purpose": "Hàm bible/metadata/cover/pricing có thể tái sử dụng",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Hàm bible/metadata/cover/pricing có thể tái sử dụng",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "5, 7–8",
      "step": "17",
      "feature": "Collaboration Suite",
      "status": "Đang làm",
      "implemented": "SOP cloud owner/admin, lịch sử có tài khoản/thời gian, đối chiếu dữ liệu, sao lưu trước khôi phục; phục vụ toàn bộ F01–F14",
      "remaining": "Cộng tác bản thảo thời gian thực, comments/approval/merge chưa nối đầy đủ vào dữ liệu thật; còn kiểm cloud bằng phiên người dùng hợp lệ",
      "id": "legacy-137",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [],
        "7": [],
        "8": []
      },
      "purpose": "SOP cloud owner/admin, lịch sử có tài khoản/thời gian, đối chiếu dữ liệu, sao lưu trước khôi phục; phục vụ toàn bộ F01–F14",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "SOP cloud owner/admin, lịch sử có tài khoản/thời gian, đối chiếu dữ liệu, sao lưu trước khôi phục; phục vụ toàn bộ F01–F14",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "Xuyên suốt",
      "step": "18",
      "feature": "API & White-label",
      "status": "Đang làm",
      "implemented": "`/api/v1/`, `api-auth/`, `enterprise/white-label.ts`",
      "remaining": "Giữ public API/brand logic; hoàn thiện persistence, portal và vận hành",
      "id": "legacy-138",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {
        "1": [],
        "2": [],
        "3": [],
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": [],
        "9": [],
        "10": [],
        "11": [],
        "12": [],
        "13": [],
        "14": []
      },
      "purpose": "`/api/v1/`, `api-auth/`, `enterprise/white-label.ts`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`/api/v1/`, `api-auth/`, `enterprise/white-label.ts`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "5, 11–12",
      "step": "19",
      "feature": "AI Voice Cloning",
      "status": "Đang làm",
      "implemented": "`audio/voices.ts` clone entry, capability flags",
      "remaining": "Gộp #6; thêm provider enrollment, consent, upload/sample/lifecycle",
      "id": "legacy-139",
      "phase_ids": [
        5,
        11,
        12
      ],
      "steps": {
        "5": [],
        "11": [],
        "12": []
      },
      "purpose": "`audio/voices.ts` clone entry, capability flags",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`audio/voices.ts` clone entry, capability flags",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "5, 7–8",
      "step": "20",
      "feature": "Real-time Collaboration",
      "status": "Đang làm",
      "implemented": "`collab/oplog.ts`, transport seam",
      "remaining": "Gộp #17; thêm CRDT, network transport, presence, CAS/version checks",
      "id": "legacy-140",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [],
        "7": [],
        "8": []
      },
      "purpose": "`collab/oplog.ts`, transport seam",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`collab/oplog.ts`, transport seam",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "2, 9, 14",
      "step": "21",
      "feature": "AI Market Trend Detector",
      "status": "Đang làm",
      "implemented": "`market/niche-score.ts`, feasibility bridge, mock data source",
      "remaining": "Ưu tiên Research Workspace: bằng chứng nhu cầu, đối thủ, phỏng vấn và thử nghiệm; trend là một tín hiệu",
      "id": "legacy-141",
      "phase_ids": [
        2,
        9,
        14
      ],
      "steps": {
        "2": [],
        "9": [],
        "14": []
      },
      "purpose": "`market/niche-score.ts`, feasibility bridge, mock data source",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`market/niche-score.ts`, feasibility bridge, mock data source",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "4, 13–14",
      "step": "22",
      "feature": "Dynamic Pricing",
      "status": "Đang làm",
      "implemented": "`publish/pricing.ts`, `sales/price-experiment.ts`",
      "remaining": "Gộp #7/#13; unit economics trước đầu tư, thử giá sau duyệt, không tự mở rộng bằng LTV giả định",
      "id": "legacy-142",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [],
        "13": [],
        "14": []
      },
      "purpose": "`publish/pricing.ts`, `sales/price-experiment.ts`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`publish/pricing.ts`, `sales/price-experiment.ts`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "6, 10",
      "step": "23",
      "feature": "Illustration Consistency",
      "status": "Đang làm",
      "implemented": "`cover/visual-bible.ts`",
      "remaining": "Gộp #4; reference sheet + conditioning + QC/retry còn thiếu",
      "id": "legacy-143",
      "phase_ids": [
        6,
        10
      ],
      "steps": {
        "6": [],
        "10": []
      },
      "purpose": "`cover/visual-bible.ts`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`cover/visual-bible.ts`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "8, 13–14",
      "step": "24",
      "feature": "Reader Analytics",
      "status": "Đang làm",
      "implemented": "`reader-insight/feedback.ts` là phản hồi, `sales/` là doanh số",
      "remaining": "Gộp #13; telemetry đọc thật còn thiếu, chỉ thu trên bề mặt kiểm soát được",
      "id": "legacy-144",
      "phase_ids": [
        8,
        13,
        14
      ],
      "steps": {
        "8": [],
        "13": [],
        "14": []
      },
      "purpose": "`reader-insight/feedback.ts` là phản hồi, `sales/` là doanh số",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`reader-insight/feedback.ts` là phản hồi, `sales/` là doanh số",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "13",
      "step": "25",
      "feature": "AI Marketing Campaign",
      "status": "Đang làm",
      "implemented": "`launch/launch-kit.ts`, template, quote-miner, A+",
      "remaining": "Gộp #8; giữ generator, nâng lifecycle/tracking; không tạo module copywriting mới",
      "id": "legacy-145",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": []
      },
      "purpose": "`launch/launch-kit.ts`, template, quote-miner, A+",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Ngày có thể mua thực tế; Review ngày 30 và quyết định; Review ngày 90 và quyết định; Nguồn traffic / cửa sổ attribution / yếu tố nhiễu",
      "output": "`launch/launch-kit.ts`, template, quote-miner, A+",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "PRD group",
      "phase": "10, 12–14",
      "step": "26",
      "feature": "POD API",
      "status": "Chưa làm",
      "implemented": "Print calculations/packages, chưa thấy connector POD hoàn chỉnh",
      "remaining": "Gộp #7; thêm adapter provider đã xác minh, proof approval và order/status",
      "id": "legacy-146",
      "phase_ids": [
        10,
        12,
        13,
        14
      ],
      "steps": {
        "10": [],
        "12": [],
        "13": [],
        "14": []
      },
      "purpose": "Print calculations/packages, chưa thấy connector POD hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Print calculations/packages, chưa thấy connector POD hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "6–8, 14",
      "step": "27",
      "feature": "Series Universe Manager",
      "status": "Đang làm",
      "implemented": "`bible/series.ts`, `sales/series-planner.ts`, `market/reading-order.ts`",
      "remaining": "Gộp #2; nâng versioned canon, override review và propagation",
      "id": "legacy-147",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [],
        "7": [],
        "8": [],
        "14": []
      },
      "purpose": "`bible/series.ts`, `sales/series-planner.ts`, `market/reading-order.ts`",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`bible/series.ts`, `sales/series-planner.ts`, `market/reading-order.ts`",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "2, 10, 13",
      "step": "28",
      "feature": "A/B Covers & Blurbs",
      "status": "Đang làm",
      "implemented": "Review có A/B draft; sales có thử giá",
      "remaining": "Gộp #4/#13; A/B nội dung draft không phải thử conversion bìa/blurb; thêm experiment",
      "id": "legacy-148",
      "phase_ids": [
        2,
        10,
        13
      ],
      "steps": {
        "2": [],
        "10": [],
        "13": []
      },
      "purpose": "Review có A/B draft; sales có thử giá",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Review có A/B draft; sales có thử giá",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "13–14",
      "step": "29",
      "feature": "Automated Review Response",
      "status": "Chưa làm",
      "implemented": "Feedback aggregation, review-request templates",
      "remaining": "Gộp #13; response drafting còn thiếu; phản hồi ra ngoài phải duyệt",
      "id": "legacy-149",
      "phase_ids": [
        13,
        14
      ],
      "steps": {
        "13": [],
        "14": []
      },
      "purpose": "Feedback aggregation, review-request templates",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Feedback aggregation, review-request templates",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "5, 8–12",
      "step": "30",
      "feature": "AI Legal & Copyright Checker",
      "status": "Đang làm",
      "implemented": "Policy, similarity, evidence/provenance",
      "remaining": "Gộp #12; nâng risk classification và rights evidence, không xây checker thứ hai",
      "id": "legacy-150",
      "phase_ids": [
        5,
        8,
        9,
        10,
        11,
        12
      ],
      "steps": {
        "5": [],
        "8": [],
        "9": [],
        "10": [],
        "11": [],
        "12": []
      },
      "purpose": "Policy, similarity, evidence/provenance",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Policy, similarity, evidence/provenance",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "5, 14",
      "step": "31",
      "feature": "Blockchain & NFT",
      "status": "Chưa làm",
      "implemented": "Provenance certificate có sẵn, chưa thấy blockchain/NFT",
      "remaining": "Gộp #12; hoãn. Nếu cần trước, dùng chứng nhận hash/version hiện có",
      "id": "legacy-151",
      "phase_ids": [
        5,
        14
      ],
      "steps": {
        "5": [],
        "14": []
      },
      "purpose": "Provenance certificate có sẵn, chưa thấy blockchain/NFT",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Provenance certificate có sẵn, chưa thấy blockchain/NFT",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "Xuyên suốt",
      "step": "32",
      "feature": "API Marketplace & Integrations",
      "status": "Chưa làm",
      "implemented": "`integrations/`, API v1; marketplace hiện tại dành cho sản phẩm sách",
      "remaining": "Gộp #18; integrations có rồi; chợ connector/app còn thiếu, hoãn",
      "id": "legacy-152",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {
        "1": [],
        "2": [],
        "3": [],
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": [],
        "9": [],
        "10": [],
        "11": [],
        "12": [],
        "13": [],
        "14": []
      },
      "purpose": "`integrations/`, API v1; marketplace hiện tại dành cho sản phẩm sách",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`integrations/`, API v1; marketplace hiện tại dành cho sản phẩm sách",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "Xuyên suốt",
      "step": "33",
      "feature": "White-label Agencies",
      "status": "Đang làm",
      "implemented": "`enterprise/white-label.ts`, client portal, team/budget/DFY",
      "remaining": "Gộp #18; nối branding/domain/portal thật, không viết module agency mới",
      "id": "legacy-153",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {
        "1": [],
        "2": [],
        "3": [],
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": [],
        "9": [],
        "10": [],
        "11": [],
        "12": [],
        "13": [],
        "14": []
      },
      "purpose": "`enterprise/white-label.ts`, client portal, team/budget/DFY",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`enterprise/white-label.ts`, client portal, team/budget/DFY",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "Sau 12",
      "step": "34",
      "feature": "Interactive Reader App",
      "status": "Chưa làm",
      "implemented": "EPUB/PDF tương tác, PWA readiness checker",
      "remaining": "Reader runtime/branching/sync chưa có; hoãn app tương tác đầy đủ",
      "id": "legacy-154",
      "phase_ids": [
        12,
        13,
        14
      ],
      "steps": {
        "12": [],
        "13": [],
        "14": []
      },
      "purpose": "EPUB/PDF tương tác, PWA readiness checker",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "EPUB/PDF tương tác, PWA readiness checker",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "PRD group",
      "phase": "8, 13–14",
      "step": "35",
      "feature": "AI Beta Reader Marketplace",
      "status": "Chưa làm",
      "implemented": "`reader-insight/reader-sim.ts`, feedback; chưa có chợ người đọc",
      "remaining": "Giữ AI simulation; chợ matching/payment/reputation người thật là phạm vi mới, hoãn",
      "id": "legacy-155",
      "phase_ids": [
        8,
        13,
        14
      ],
      "steps": {
        "8": [],
        "13": [],
        "14": []
      },
      "purpose": "`reader-insight/reader-sim.ts`, feedback; chưa có chợ người đọc",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "`reader-insight/reader-sim.ts`, feedback; chưa có chợ người đọc",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books"
    },
    {
      "group": "Backlog",
      "phase": "P0/A",
      "step": "S01",
      "feature": "14-phase model/rail/deep links; registry hiện có",
      "status": "Đã xong",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Tab mapping đủ, keyboard/mobile, streams sống, scope/optional rõ",
      "id": "legacy-156",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {
        "1": [],
        "2": [],
        "3": [],
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": [],
        "9": [],
        "10": [],
        "11": [],
        "12": [],
        "13": [],
        "14": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books"
    },
    {
      "group": "Backlog",
      "phase": "P0/A",
      "step": "S02",
      "feature": "Handoffs F01–F14 và quyết định/authorized spend",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Actor/evidence/version/decision/revisit; thiếu hồ sơ không mở thao tác phụ thuộc",
      "id": "legacy-157",
      "phase_ids": [
        1,
        4,
        6,
        7
      ],
      "steps": {
        "1": [],
        "4": [],
        "6": [],
        "7": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books"
    },
    {
      "group": "Backlog",
      "phase": "P0/A",
      "step": "S03",
      "feature": "Canonical project, CAS/stale, metadata/export chung",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Concurrent edit bị phát hiện; source/approval/artifact versions đúng",
      "id": "legacy-158",
      "phase_ids": [
        7,
        8,
        10
      ],
      "steps": {
        "7": [],
        "8": [],
        "10": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books"
    },
    {
      "group": "Backlog",
      "phase": "P0/A",
      "step": "S04",
      "feature": "Investment Brief buyer/user/budget/loss cap",
      "status": "Đã xong",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F01 duyệt ngân sách nghiên cứu, không tự cấp toàn bộ production",
      "id": "legacy-159",
      "phase_ids": [
        1
      ],
      "steps": {
        "1": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Mục tiêu và chỉ số chính; Người mua; Người sử dụng; Thị trường / locale / định dạng; Bằng chứng chuyên môn; Tiền tệ (ví dụ USD); Vốn tổng; Vốn nghiên cứu; Mức lỗ tối đa; Ngày đánh giá; Nhánh chưa làm và điều kiện kích hoạt",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=1"
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S05",
      "feature": "Research data contracts/provenance/imports",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "CSV/notes/URL/source/license/time/unknown giữ đủ; tenant isolation",
      "id": "legacy-160",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S06",
      "feature": "Candidate + competitor catalog",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "R01–04, book/non-book alternatives, scope/price/TOC; không BSR→sales certainty",
      "id": "legacy-161",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S07",
      "feature": "Review corpus/theme + interview workflows",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "R05–06, balance/sample denominators/quote traces; AI summary được human check",
      "id": "legacy-162",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S08",
      "feature": "Needs matrix và evidence-linked synthesis",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "R07, counterevidence và missing data; từng problem dẫn observation",
      "id": "legacy-163",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S09",
      "feature": "Experiment registry/message/sample/payment results",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "R08–11, budget/window/denominator; signup khác paid; before-after label đúng",
      "id": "legacy-164",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S10",
      "feature": "F02 evidence adequacy và scanner/bridge correction",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "R12, thiếu dữ liệu không auto go/no-go; price khác margin; decision được ký",
      "id": "legacy-165",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Câu hỏi nghiên cứu; Phương pháp / mẫu / hạn chế; Khả năng tiếp cận độc giả; Kết luận và phản chứng; Lần thử rẻ nhất kế tiếp / điều kiện xem lại",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2"
    },
    {
      "group": "Backlog",
      "phase": "P0/B→D",
      "step": "S11",
      "feature": "F06 sample generation/tool và human sample acceptance",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Thử mẫu trong research budget trước full generation; result quay lại F02/F03",
      "id": "legacy-166",
      "phase_ids": [
        6
      ],
      "steps": {
        "6": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Lời hứa → mã chương / nội dung; Nguồn / phần cần chuyên gia; Glossary, giọng và cách dẫn nguồn",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=6"
    },
    {
      "group": "Backlog",
      "phase": "P0/C",
      "step": "S12",
      "feature": "Product/SKU/offer và promise coverage",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F03 từng promise dẫn content/need; core book đủ giá trị; support capacity",
      "id": "legacy-167",
      "phase_ids": [
        3,
        6
      ],
      "steps": {
        "3": [],
        "6": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books"
    },
    {
      "group": "Backlog",
      "phase": "P0/C",
      "step": "S13",
      "feature": "Assumptions/unit economics/scenario engine",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F04 observed/projection riêng; đúng base/denominator/currency; royalty rules cập nhật",
      "id": "legacy-168",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Tiền tệ (ví dụ USD); Người / pháp nhân nhận tiền; Hồ sơ thuế, tỷ lệ đã xác nhận và nguồn; Tiền đầu kỳ; Dự toán 12 tháng / giả định / nguồn; CAC / LTV thực tế và dự báo tách riêng",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Backlog",
      "phase": "P0/C",
      "step": "S14",
      "feature": "13-week cashflow, commitments, payouts/reconciliation",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Tiền khả dụng khác accrual; reserve và chi đã cam kết ngăn over-spend",
      "id": "legacy-169",
      "phase_ids": [
        4,
        14
      ],
      "steps": {
        "4": [],
        "14": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books"
    },
    {
      "group": "Backlog",
      "phase": "P0/A→C",
      "step": "S15",
      "feature": "Rights/contracts/data permissions/policy registry",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F05 asset scope/expiry/evidence; disputed rights chặn; dữ liệu chỉ tới AI được duyệt",
      "id": "legacy-170",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Thành phần AI / dữ liệu được phép gửi; Đường xuất bản / thị trường / người kiểm tra; Vai trò / thu hồi truy cập / sao lưu",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=5"
    },
    {
      "group": "Backlog",
      "phase": "P0/A→C",
      "step": "S16",
      "feature": "Pricing/calendar/link policy discrepancies",
      "status": "Đã xong",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Versioned rules; KDP size/VAT/limits và link compliance test cases; code sửa ở đợt triển khai",
      "id": "legacy-171",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Metadata và artifact versions; Payment / tax responsibility / payout verified; Nguồn tài nguyên và kiểm liên kết theo kênh; Giao thư / unsubscribe / SPF DKIM DMARC nếu dùng email; External IDs / ngày mua thực tế / bằng chứng phát hành",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Backlog",
      "phase": "P0/D",
      "step": "S17",
      "feature": "Live jobs/storage/credits, retry/hydrate",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Resume/replay không double charge; reload giữ run/review; cost usage không log content",
      "id": "legacy-172",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Phiên bản bản nháp; Danh sách phần chưa kiểm / nguồn chờ; Cách thử hướng dẫn và trường hợp biên",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Backlog",
      "phase": "P1/D",
      "step": "S18",
      "feature": "Context/temporal canon + anti-repetition",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Locked context giữ; knowledge state hợp scene; allocator infeasible báo rõ",
      "id": "legacy-173",
      "phase_ids": [
        7
      ],
      "steps": {
        "7": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Phiên bản bản nháp; Danh sách phần chưa kiểm / nguồn chờ; Cách thử hướng dẫn và trường hợp biên",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=7"
    },
    {
      "group": "Backlog",
      "phase": "P0/D",
      "step": "S19",
      "feature": "SOP editorial + reader task testing + source lock",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F08 lỗi có fix/retest; simulation không thay human; changed source stale",
      "id": "legacy-174",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Bản nguồn được khóa; So lời hứa với thành phẩm; Người chịu trách nhiệm biên tập / kiểm chứng",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=8"
    },
    {
      "group": "Backlog",
      "phase": "P2/D sau core",
      "step": "S20",
      "feature": "Quick Start/chat/Sensory/selection proposals",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Quick Start tạo investment/sample proposal; chat có refs, không bypass F02/F04/F06",
      "id": "legacy-175",
      "phase_ids": [
        6,
        7
      ],
      "steps": {
        "6": [],
        "7": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books"
    },
    {
      "group": "Backlog",
      "phase": "P1/E optional",
      "step": "S21",
      "feature": "Translation market case/sample/bilingual review",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F09 target approval riêng; sample trước full; source lock và reviewers",
      "id": "legacy-176",
      "phase_ids": [
        9
      ],
      "steps": {
        "9": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Locale và quốc gia đích; Bằng chứng thị trường đích và đầu tư; Bản nguồn khóa; Glossary / số / ngày / đơn vị; Người dịch; Người hiệu đính song ngữ độc lập",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=9"
    },
    {
      "group": "Backlog",
      "phase": "P0/E",
      "step": "S22",
      "feature": "Interior/page count/bìa/RTL/a11y/proof",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F10 file opens/validation/manual read; hashes/preview khớp, spine từ actual pages",
      "id": "legacy-177",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Edition / locale / formats; Số trang thực (0 nếu chỉ ebook); Cấu hình kênh / version; Kiểm màn hình / font / đọc thử / proof",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=10"
    },
    {
      "group": "Backlog",
      "phase": "P1/E",
      "step": "S23",
      "feature": "Tool/course delivery QA, copy/reset/support",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F11 fresh customer dùng được; test edge/missing inputs; không sửa master/shared secret",
      "id": "legacy-178",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "SKU, phạm vi và nhu cầu; Hỗ trợ / công suất / version phần mềm; Giọng, account, quyền, consent và tuyến phân phối nếu audio",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=11"
    },
    {
      "group": "Backlog",
      "phase": "P1/E optional",
      "step": "S24",
      "feature": "Audio account/voice/route eligibility, sample/jobs/QC",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Route/rights/sample approval trước full cost; nghe toàn bộ và file QC; clone consent",
      "id": "legacy-179",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "SKU, phạm vi và nhu cầu; Hỗ trợ / công suất / version phần mềm; Giọng, account, quyền, consent và tuyến phân phối nếu audio",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=11"
    },
    {
      "group": "Backlog",
      "phase": "P0/E",
      "step": "S25",
      "feature": "Routes/exclusivity/ISBN/metadata/final release",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F12 không duplicate route/conflicting rights; candidate version duyệt; publish status có evidence",
      "id": "legacy-180",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Metadata và artifact versions; Payment / tax responsibility / payout verified; Nguồn tài nguyên và kiểm liên kết theo kênh; Giao thư / unsubscribe / SPF DKIM DMARC nếu dùng email; External IDs / ngày mua thực tế / bằng chứng phát hành",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Backlog",
      "phase": "P0/E",
      "step": "S26",
      "feature": "D2C order/delivery/refund/consent/email setup checklist",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Một đơn đi hết vòng; marketing consent khác transactional; link rules theo channel",
      "id": "legacy-181",
      "phase_ids": [
        12
      ],
      "steps": {
        "12": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Metadata và artifact versions; Payment / tax responsibility / payout verified; Nguồn tài nguyên và kiểm liên kết theo kênh; Giao thư / unsubscribe / SPF DKIM DMARC nếu dùng email; External IDs / ngày mua thực tế / bằng chứng phát hành",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=12"
    },
    {
      "group": "Backlog",
      "phase": "P1/F",
      "step": "S27",
      "feature": "Launch calendar/ARC, tracking/ads import, 30/90 reviews",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F13 day0 đúng availability, windows/metrics; voluntary reviews; no auto spend escalation",
      "id": "legacy-182",
      "phase_ids": [
        13
      ],
      "steps": {
        "13": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Ngày có thể mua thực tế; Review ngày 30 và quyết định; Review ngày 90 và quyết định; Nguồn traffic / cửa sổ attribution / yếu tố nhiễu",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=13"
    },
    {
      "group": "Backlog",
      "phase": "P1/F",
      "step": "S28",
      "feature": "Portfolio close/cohort/changes/licensing pipeline",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "F14 gross/royalty/cash reconciled; observed cohort vs proxy; update impact và next-investment",
      "id": "legacy-183",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Kỳ tháng / quý; Giữ / sửa / dừng / mở rộng và bằng chứng; Tiền khả dụng / công suất / nghĩa vụ cập nhật; Sự cố tài khoản / hỗ trợ / kế hoạch xử lý",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=14"
    },
    {
      "group": "Backlog",
      "phase": "P2/G",
      "step": "S29",
      "feature": "Provider/trend/ads/email/POD integrations",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "API/license coverage verified, snapshots/retry/budget; publication/order/message cần quyền",
      "id": "legacy-184",
      "phase_ids": [
        2,
        13,
        14
      ],
      "steps": {
        "2": [],
        "13": [],
        "14": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books"
    },
    {
      "group": "Backlog",
      "phase": "P1–P2/G",
      "step": "S30",
      "feature": "CRDT/offline/chapter permissions, agency production",
      "status": "Đang làm",
      "implemented": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "remaining": "Reconnect converge, server perms/tenant boundary; portal dùng contracts hiện có",
      "id": "legacy-185",
      "phase_ids": [
        5,
        7,
        8,
        14
      ],
      "steps": {
        "5": [],
        "7": [],
        "8": [],
        "14": []
      },
      "purpose": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "how": "Mở công cụ tương ứng của phase; đối chiếu phần hiện có và giới hạn trước khi dùng.",
      "input": "Dữ liệu, quyền và cấu hình theo phạm vi mô tả.",
      "output": "Xem các bước phase tương ứng; không tính thư viện/mock là tích hợp hoàn chỉnh",
      "scope": "Phạm vi PRD/backlog",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books"
    },
    {
      "group": "Local data form",
      "phase": "F03",
      "step": "",
      "feature": "Lời hứa → nhu cầu → nội dung",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, validation, local CAS; Dùng cho sách chính. Gắn mã nhu cầu F02 trước, mã chương/block ở F06; kiểm định có người chịu trách nhiệm ở F08. Có liên kết không có nghĩa nội dung đã thực hiện đúng lời hứa.",
      "remaining": "Cloud đã có schema; cần đăng nhập owner/admin và lưu hồ sơ đúng tổ chức. Không tự thu thập dữ liệu thực tế hoặc ký duyệt danh tính.",
      "id": "legacy-186",
      "phase_ids": [
        3
      ],
      "steps": {
        "3": [
          4
        ]
      },
      "purpose": "Dùng cho sách chính. Gắn mã nhu cầu F02 trước, mã chương/block ở F06; kiểm định có người chịu trách nhiệm ở F08. Có liên kết không có nghĩa nội dung đã thực hiện đúng lời hứa.",
      "how": "Mở sách → F03 → Lời hứa → nhu cầu → nội dung; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "SKU sách chính (bắt buộc); Lời hứa với độc giả (bắt buộc); Mã nhu cầu F02, cách nhau bằng dấu phẩy (bắt buộc); Mã chương/block thực hiện lời hứa; Kiểm định lời hứa (bắt buộc); Người kiểm định; Bằng chứng nghiệm thu",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=3"
    },
    {
      "group": "Local data form",
      "phase": "F04",
      "step": "",
      "feature": "Dự toán 12 tháng",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, validation, local CAS; Mỗi kịch bản có một dòng cho mỗi tháng 1–12. Royalty/đóng góp khác tiền thu. Không cộng bảng này với 13 tuần; thiếu tháng hoặc tiền tệ khác làm dòng tiền chưa xác định.",
      "remaining": "Cloud đã có schema; cần đăng nhập owner/admin và lưu hồ sơ đúng tổ chức. Không tự thu thập dữ liệu thực tế hoặc ký duyệt danh tính.",
      "id": "legacy-187",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          5
        ]
      },
      "purpose": "Mỗi kịch bản có một dòng cho mỗi tháng 1–12. Royalty/đóng góp khác tiền thu. Không cộng bảng này với 13 tuần; thiếu tháng hoặc tiền tệ khác làm dòng tiền chưa xác định.",
      "how": "Mở sách → F04 → Dự toán 12 tháng; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tháng (1–12) (bắt buộc); Kịch bản (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Doanh thu bán lẻ (bắt buộc); Tiền hưởng ghi nhận (bắt buộc); Hoàn tiền chưa trừ (bắt buộc); Chi phí biến đổi chưa trừ (bắt buộc); Chi phí cố định chưa trừ (bắt buộc); Chi phí thu hút khách (bắt buộc); Tiền thực thu dự kiến (bắt buộc); Chi trả dự kiến (không gồm thuế) (bắt buộc); Thuế chi trả dự kiến (bắt buộc); Dự phòng cần giữ cuối tháng (bắt buộc); Nghĩa vụ chưa chi cuối tháng (bắt buộc); Cơ sở dự toán (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "group": "Local data form",
      "phase": "F04",
      "step": "",
      "feature": "Thực tế theo tháng",
      "status": "Đã xong",
      "implemented": "Nhập tay/CSV, validation, local CAS; Cùng tháng tương đối của dự toán, một dòng mỗi tháng. Chỉ ghi báo cáo đã quan sát; chưa có báo cáo để thiếu, không điền 0. Đối chiếu riêng với sổ giao dịch F14.",
      "remaining": "Cloud đã có schema; cần đăng nhập owner/admin và lưu hồ sơ đúng tổ chức. Không tự thu thập dữ liệu thực tế hoặc ký duyệt danh tính.",
      "id": "legacy-188",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          5
        ]
      },
      "purpose": "Cùng tháng tương đối của dự toán, một dòng mỗi tháng. Chỉ ghi báo cáo đã quan sát; chưa có báo cáo để thiếu, không điền 0. Đối chiếu riêng với sổ giao dịch F14.",
      "how": "Mở sách → F04 → Thực tế theo tháng; thêm bản ghi hoặc tải/nhập CSV, kiểm lỗi rồi lưu.",
      "input": "Tháng (1–12) (bắt buộc); Tiền tệ (ví dụ USD) (bắt buộc); Doanh thu bán lẻ thực tế (bắt buộc); Tiền hưởng ghi nhận (bắt buộc); Hoàn tiền chưa trừ (bắt buộc); Chi phí biến đổi chưa trừ (bắt buộc); Chi phí cố định chưa trừ (bắt buộc); Chi phí thu hút khách (bắt buộc); Tiền thực thu (bắt buộc); Chi trả (không gồm thuế) (bắt buộc); Thuế đã chi (bắt buộc); Dự phòng cuối tháng (bắt buộc); Nghĩa vụ chưa chi cuối tháng (bắt buộc); Cơ sở thực tế (bắt buộc); Nguồn hoặc mã tài liệu (bắt buộc); Ngày quan sát (bắt buộc)",
      "output": "Bản ghi có mã, lưu trên trình duyệt; có thể xuất CSV và sao lưu.",
      "scope": "Biểu mẫu và lưu cục bộ",
      "verification": "Đối chiếu mã nguồn và hồ sơ triển khai; xem giới hạn. Không tự xác nhận tích hợp live.",
      "evidence": [
        "src/lib/sop/schema.ts"
      ],
      "location": "/app/books?phase=4"
    },
    {
      "id": "cap-ai-1",
      "group": "Capability",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {
        "1": [
          5
        ],
        "2": [
          4,
          7
        ],
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4
        ],
        "8": [
          2,
          3
        ],
        "9": [
          3
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Chọn model chính theo tổ chức và từng vai trò AI",
      "status": "Đang làm",
      "purpose": "Chọn model chính theo tổ chức và từng vai trò AI. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/models; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, vai trò tác vụ, model, tier và khóa nhà cung cấp ở máy chủ/BYOK.",
      "output": "Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "implemented": "Có mã triển khai tại src/lib/ai/org-overrides.ts. Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ai/org-overrides.ts"
      ],
      "location": "/app/models",
      "tool": "models"
    },
    {
      "id": "cap-ai-2",
      "group": "Capability",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {
        "1": [
          5
        ],
        "2": [
          4,
          7
        ],
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4
        ],
        "8": [
          2,
          3
        ],
        "9": [
          3
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Xem chuỗi model chính và fallback theo tier",
      "status": "Đang làm",
      "purpose": "Xem chuỗi model chính và fallback theo tier. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/models; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, vai trò tác vụ, model, tier và khóa nhà cung cấp ở máy chủ/BYOK.",
      "output": "Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "implemented": "Có mã triển khai tại src/lib/ai/routing.ts. Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ai/routing.ts"
      ],
      "location": "/app/models",
      "tool": "models"
    },
    {
      "id": "cap-ai-3",
      "group": "Capability",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {
        "1": [
          5
        ],
        "2": [
          4,
          7
        ],
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4
        ],
        "8": [
          2,
          3
        ],
        "9": [
          3
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Danh mục model, trạng thái hoạt động, context và giá tham chiếu",
      "status": "Đang làm",
      "purpose": "Danh mục model, trạng thái hoạt động, context và giá tham chiếu. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/models; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, vai trò tác vụ, model, tier và khóa nhà cung cấp ở máy chủ/BYOK.",
      "output": "Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "implemented": "Có mã triển khai tại src/lib/ai/registry.ts. Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ai/registry.ts"
      ],
      "location": "/app/models",
      "tool": "models"
    },
    {
      "id": "cap-ai-4",
      "group": "Capability",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {
        "1": [
          5
        ],
        "2": [
          4,
          7
        ],
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4
        ],
        "8": [
          2,
          3
        ],
        "9": [
          3
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "OpenRouter và adapter OpenAI/Anthropic/Google/Ollama",
      "status": "Đang làm",
      "purpose": "OpenRouter và adapter OpenAI/Anthropic/Google/Ollama. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/models; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, vai trò tác vụ, model, tier và khóa nhà cung cấp ở máy chủ/BYOK.",
      "output": "Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "implemented": "Có mã triển khai tại src/lib/ai/providers.ts. Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ai/providers.ts"
      ],
      "location": "/app/models",
      "tool": "models"
    },
    {
      "id": "cap-ai-5",
      "group": "Capability",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {
        "1": [
          5
        ],
        "2": [
          4,
          7
        ],
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4
        ],
        "8": [
          2,
          3
        ],
        "9": [
          3
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Retry, fallback, JSON output và ghi usage không chứa nội dung",
      "status": "Đang làm",
      "purpose": "Retry, fallback, JSON output và ghi usage không chứa nội dung. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/models; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, vai trò tác vụ, model, tier và khóa nhà cung cấp ở máy chủ/BYOK.",
      "output": "Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "implemented": "Có mã triển khai tại src/lib/ai/router.ts. Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ai/router.ts"
      ],
      "location": "/app/models",
      "tool": "models"
    },
    {
      "id": "cap-ai-6",
      "group": "Capability",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {
        "1": [
          5
        ],
        "2": [
          4,
          7
        ],
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4
        ],
        "8": [
          2,
          3
        ],
        "9": [
          3
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Mã hóa và giải mã khóa BYOK theo tổ chức",
      "status": "Đang làm",
      "purpose": "Mã hóa và giải mã khóa BYOK theo tổ chức. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/models; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, vai trò tác vụ, model, tier và khóa nhà cung cấp ở máy chủ/BYOK.",
      "output": "Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "implemented": "Có mã triển khai tại src/lib/ai/byok.ts. Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ai/byok.ts"
      ],
      "location": "/app/models",
      "tool": "models"
    },
    {
      "id": "cap-ai-7",
      "group": "Capability",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {
        "1": [
          5
        ],
        "2": [
          4,
          7
        ],
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4
        ],
        "8": [
          2,
          3
        ],
        "9": [
          3
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Đối chiếu phase/công cụ với tác vụ và model thực sự được gọi",
      "status": "Đã xong",
      "purpose": "Đối chiếu phase/công cụ với tác vụ và model thực sự được gọi. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/models; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, vai trò tác vụ, model, tier và khóa nhà cung cấp ở máy chủ/BYOK.",
      "output": "Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "implemented": "Có mã triển khai tại src/lib/ai/phase-models.ts. Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ai/phase-models.ts"
      ],
      "location": "/app/models",
      "tool": "models"
    },
    {
      "id": "cap-ai-8",
      "group": "Capability",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {
        "1": [
          5
        ],
        "2": [
          4,
          7
        ],
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4
        ],
        "8": [
          2,
          3
        ],
        "9": [
          3
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Ước tính giá tác vụ theo token",
      "status": "Đã xong",
      "purpose": "Ước tính giá tác vụ theo token. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/models; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, vai trò tác vụ, model, tier và khóa nhà cung cấp ở máy chủ/BYOK.",
      "output": "Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "implemented": "Có mã triển khai tại src/lib/ai/cost.ts. Cấu hình model chính/dự phòng, usage token và chi phí ước tính.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ai/cost.ts"
      ],
      "location": "/app/models",
      "tool": "models"
    },
    {
      "id": "cap-blueprints-1",
      "group": "Capability",
      "phase": "F01, F03, F06",
      "phase_ids": [
        1,
        3,
        6
      ],
      "steps": {
        "1": [
          1,
          2,
          3,
          4
        ],
        "3": [
          1,
          2,
          4
        ],
        "6": [
          2,
          4
        ]
      },
      "step": "",
      "feature": "Phỏng vấn tạo Brief và xuất Brief Card",
      "status": "Đang làm",
      "purpose": "Phỏng vấn tạo Brief và xuất Brief Card. Xác định độc giả, mục tiêu và phạm vi sách.",
      "how": "Mở brief, rà câu trả lời và lưu; hoàn thiện hồ sơ F01 trước duyệt đầu tư.",
      "input": "Loại sách, câu trả lời phỏng vấn, độc giả, lời hứa, ngôn ngữ và quy mô.",
      "output": "Brief Card và cấu trúc chương với required elements của thể loại.",
      "implemented": "Có mã triển khai tại src/lib/blueprints/brief.ts. Brief Card và cấu trúc chương với required elements của thể loại.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/blueprints/brief.ts"
      ],
      "location": "/app/books",
      "tool": "brief"
    },
    {
      "id": "cap-blueprints-2",
      "group": "Capability",
      "phase": "F01, F03, F06",
      "phase_ids": [
        1,
        3,
        6
      ],
      "steps": {
        "1": [
          1,
          2,
          3,
          4
        ],
        "3": [
          1,
          2,
          4
        ],
        "6": [
          2,
          4
        ]
      },
      "step": "",
      "feature": "Kiểm cấu trúc blueprint và các phần bắt buộc",
      "status": "Đang làm",
      "purpose": "Kiểm cấu trúc blueprint và các phần bắt buộc. Xác định độc giả, mục tiêu và phạm vi sách.",
      "how": "Mở brief, rà câu trả lời và lưu; hoàn thiện hồ sơ F01 trước duyệt đầu tư.",
      "input": "Loại sách, câu trả lời phỏng vấn, độc giả, lời hứa, ngôn ngữ và quy mô.",
      "output": "Brief Card và cấu trúc chương với required elements của thể loại.",
      "implemented": "Có mã triển khai tại src/lib/blueprints/schema.ts. Brief Card và cấu trúc chương với required elements của thể loại.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/blueprints/schema.ts"
      ],
      "location": "/app/books",
      "tool": "brief"
    },
    {
      "id": "cap-blueprints-3",
      "group": "Capability",
      "phase": "F01, F03, F06",
      "phase_ids": [
        1,
        3,
        6
      ],
      "steps": {
        "1": [
          1,
          2,
          3,
          4
        ],
        "3": [
          1,
          2,
          4
        ],
        "6": [
          2,
          4
        ]
      },
      "step": "",
      "feature": "Điều chỉnh Brief phù hợp loại sách trước generation",
      "status": "Đang làm",
      "purpose": "Điều chỉnh Brief phù hợp loại sách trước generation. Xác định độc giả, mục tiêu và phạm vi sách.",
      "how": "Mở brief, rà câu trả lời và lưu; hoàn thiện hồ sơ F01 trước duyệt đầu tư.",
      "input": "Loại sách, câu trả lời phỏng vấn, độc giả, lời hứa, ngôn ngữ và quy mô.",
      "output": "Brief Card và cấu trúc chương với required elements của thể loại.",
      "implemented": "Có mã triển khai tại src/lib/blueprints/fit-brief.ts. Brief Card và cấu trúc chương với required elements của thể loại.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/blueprints/fit-brief.ts"
      ],
      "location": "/app/books",
      "tool": "brief"
    },
    {
      "id": "cap-market-1",
      "group": "Capability",
      "phase": "F02, F09, F13, F14",
      "phase_ids": [
        2,
        9,
        13,
        14
      ],
      "steps": {
        "2": [
          1,
          2,
          3,
          7
        ],
        "9": [
          1
        ],
        "13": [
          1,
          5
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Tìm URL và trích đoạn qua Tavily với hạn mức nghiên cứu",
      "status": "Đang làm",
      "purpose": "Tìm URL và trích đoạn qua Tavily với hạn mức nghiên cứu. Đối chiếu ngách, nhu cầu và giả định thị trường.",
      "how": "Ghi nguồn, ngày và phạm vi; chuyển bằng chứng đã kiểm sang hồ sơ F02, không dùng số mẫu làm doanh số thật.",
      "input": "Ngách, từ khóa, locale, nguồn dữ liệu và ngày quan sát.",
      "output": "Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "implemented": "Có mã triển khai tại src/lib/market/research-search.ts. Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/market/research-search.ts"
      ],
      "location": "/app/books",
      "tool": "market"
    },
    {
      "id": "cap-market-2",
      "group": "Capability",
      "phase": "F02, F09, F13, F14",
      "phase_ids": [
        2,
        9,
        13,
        14
      ],
      "steps": {
        "2": [
          1,
          2,
          3,
          7
        ],
        "9": [
          1
        ],
        "13": [
          1,
          5
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Search volume và lịch sử tìm kiếm qua DataForSEO",
      "status": "Đang làm",
      "purpose": "Search volume và lịch sử tìm kiếm qua DataForSEO. Đối chiếu ngách, nhu cầu và giả định thị trường.",
      "how": "Ghi nguồn, ngày và phạm vi; chuyển bằng chứng đã kiểm sang hồ sơ F02, không dùng số mẫu làm doanh số thật.",
      "input": "Ngách, từ khóa, locale, nguồn dữ liệu và ngày quan sát.",
      "output": "Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "implemented": "Có mã triển khai tại src/lib/market/dataforseo.ts. Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/market/dataforseo.ts"
      ],
      "location": "/app/books",
      "tool": "market"
    },
    {
      "id": "cap-market-3",
      "group": "Capability",
      "phase": "F02, F09, F13, F14",
      "phase_ids": [
        2,
        9,
        13,
        14
      ],
      "steps": {
        "2": [
          1,
          2,
          3,
          7
        ],
        "9": [
          1
        ],
        "13": [
          1,
          5
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Chấm ngách với chỉ báo dữ liệu thiếu",
      "status": "Đang làm",
      "purpose": "Chấm ngách với chỉ báo dữ liệu thiếu. Đối chiếu ngách, nhu cầu và giả định thị trường.",
      "how": "Ghi nguồn, ngày và phạm vi; chuyển bằng chứng đã kiểm sang hồ sơ F02, không dùng số mẫu làm doanh số thật.",
      "input": "Ngách, từ khóa, locale, nguồn dữ liệu và ngày quan sát.",
      "output": "Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "implemented": "Có mã triển khai tại src/lib/market/niche-score.ts. Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/market/niche-score.ts"
      ],
      "location": "/app/books",
      "tool": "market"
    },
    {
      "id": "cap-market-4",
      "group": "Capability",
      "phase": "F02, F09, F13, F14",
      "phase_ids": [
        2,
        9,
        13,
        14
      ],
      "steps": {
        "2": [
          1,
          2,
          3,
          7
        ],
        "9": [
          1
        ],
        "13": [
          1,
          5
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Chuyển kết quả nghiên cứu sang kế hoạch khả thi",
      "status": "Đang làm",
      "purpose": "Chuyển kết quả nghiên cứu sang kế hoạch khả thi. Đối chiếu ngách, nhu cầu và giả định thị trường.",
      "how": "Ghi nguồn, ngày và phạm vi; chuyển bằng chứng đã kiểm sang hồ sơ F02, không dùng số mẫu làm doanh số thật.",
      "input": "Ngách, từ khóa, locale, nguồn dữ liệu và ngày quan sát.",
      "output": "Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "implemented": "Có mã triển khai tại src/lib/market/feasibility-bridge.ts. Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/market/feasibility-bridge.ts"
      ],
      "location": "/app/books",
      "tool": "market"
    },
    {
      "id": "cap-market-5",
      "group": "Capability",
      "phase": "F02, F09, F13, F14",
      "phase_ids": [
        2,
        9,
        13,
        14
      ],
      "steps": {
        "2": [
          1,
          2,
          3,
          7
        ],
        "9": [
          1
        ],
        "13": [
          1,
          5
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Xác định thứ tự đọc bộ sách",
      "status": "Đang làm",
      "purpose": "Xác định thứ tự đọc bộ sách. Đối chiếu ngách, nhu cầu và giả định thị trường.",
      "how": "Ghi nguồn, ngày và phạm vi; chuyển bằng chứng đã kiểm sang hồ sơ F02, không dùng số mẫu làm doanh số thật.",
      "input": "Ngách, từ khóa, locale, nguồn dữ liệu và ngày quan sát.",
      "output": "Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "implemented": "Có mã triển khai tại src/lib/market/reading-order.ts. Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/market/reading-order.ts"
      ],
      "location": "/app/books",
      "tool": "market"
    },
    {
      "id": "cap-market-6",
      "group": "Capability",
      "phase": "F02, F09, F13, F14",
      "phase_ids": [
        2,
        9,
        13,
        14
      ],
      "steps": {
        "2": [
          1,
          2,
          3,
          7
        ],
        "9": [
          1
        ],
        "13": [
          1,
          5
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Tạo nội dung trang series",
      "status": "Đang làm",
      "purpose": "Tạo nội dung trang series. Đối chiếu ngách, nhu cầu và giả định thị trường.",
      "how": "Ghi nguồn, ngày và phạm vi; chuyển bằng chứng đã kiểm sang hồ sơ F02, không dùng số mẫu làm doanh số thật.",
      "input": "Ngách, từ khóa, locale, nguồn dữ liệu và ngày quan sát.",
      "output": "Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "implemented": "Có mã triển khai tại src/lib/market/series-page.ts. Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/market/series-page.ts"
      ],
      "location": "/app/books",
      "tool": "market"
    },
    {
      "id": "cap-market-7",
      "group": "Capability",
      "phase": "F02, F09, F13, F14",
      "phase_ids": [
        2,
        9,
        13,
        14
      ],
      "steps": {
        "2": [
          1,
          2,
          3,
          7
        ],
        "9": [
          1
        ],
        "13": [
          1,
          5
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Tạo nội dung website tác giả",
      "status": "Đang làm",
      "purpose": "Tạo nội dung website tác giả. Đối chiếu ngách, nhu cầu và giả định thị trường.",
      "how": "Ghi nguồn, ngày và phạm vi; chuyển bằng chứng đã kiểm sang hồ sơ F02, không dùng số mẫu làm doanh số thật.",
      "input": "Ngách, từ khóa, locale, nguồn dữ liệu và ngày quan sát.",
      "output": "Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "implemented": "Có mã triển khai tại src/lib/market/author-site.ts. Bảng số đo/thiếu số đo, điểm khả thi có giới hạn, nội dung trang tác giả/series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/market/author-site.ts"
      ],
      "location": "/app/books",
      "tool": "market"
    },
    {
      "id": "cap-refs-1",
      "group": "Capability",
      "phase": "F02, F05, F06, F07, F08",
      "phase_ids": [
        2,
        5,
        6,
        7,
        8
      ],
      "steps": {
        "2": [
          2,
          4
        ],
        "5": [
          1,
          3,
          4
        ],
        "6": [
          3
        ],
        "7": [
          2,
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Nạp tài liệu và chia đoạn nguồn",
      "status": "Đang làm",
      "purpose": "Nạp tài liệu và chia đoạn nguồn. Giữ tài liệu để kiểm chứng và viết có căn cứ.",
      "how": "Thêm file/văn bản, phân loại quyền và grounding; chỉ xác nhận nguồn đã được phép dùng.",
      "input": "File/văn bản/URL nguồn, quyền sử dụng, loại nguồn, yêu cầu grounding.",
      "output": "Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "implemented": "Có mã triển khai tại src/lib/refs/ingest.ts. Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/refs/ingest.ts"
      ],
      "location": "/app/books",
      "tool": "references"
    },
    {
      "id": "cap-refs-2",
      "group": "Capability",
      "phase": "F02, F05, F06, F07, F08",
      "phase_ids": [
        2,
        5,
        6,
        7,
        8
      ],
      "steps": {
        "2": [
          2,
          4
        ],
        "5": [
          1,
          3,
          4
        ],
        "6": [
          3
        ],
        "7": [
          2,
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Kiểm prompt injection trong nguồn",
      "status": "Đang làm",
      "purpose": "Kiểm prompt injection trong nguồn. Giữ tài liệu để kiểm chứng và viết có căn cứ.",
      "how": "Thêm file/văn bản, phân loại quyền và grounding; chỉ xác nhận nguồn đã được phép dùng.",
      "input": "File/văn bản/URL nguồn, quyền sử dụng, loại nguồn, yêu cầu grounding.",
      "output": "Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "implemented": "Có mã triển khai tại src/lib/refs/sanitize.ts. Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/refs/sanitize.ts"
      ],
      "location": "/app/books",
      "tool": "references"
    },
    {
      "id": "cap-refs-3",
      "group": "Capability",
      "phase": "F02, F05, F06, F07, F08",
      "phase_ids": [
        2,
        5,
        6,
        7,
        8
      ],
      "steps": {
        "2": [
          2,
          4
        ],
        "5": [
          1,
          3,
          4
        ],
        "6": [
          3
        ],
        "7": [
          2,
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Lập context từ tài liệu theo yêu cầu",
      "status": "Đang làm",
      "purpose": "Lập context từ tài liệu theo yêu cầu. Giữ tài liệu để kiểm chứng và viết có căn cứ.",
      "how": "Thêm file/văn bản, phân loại quyền và grounding; chỉ xác nhận nguồn đã được phép dùng.",
      "input": "File/văn bản/URL nguồn, quyền sử dụng, loại nguồn, yêu cầu grounding.",
      "output": "Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "implemented": "Có mã triển khai tại src/lib/refs/retrieve.ts. Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/refs/retrieve.ts"
      ],
      "location": "/app/books",
      "tool": "references"
    },
    {
      "id": "cap-refs-4",
      "group": "Capability",
      "phase": "F02, F05, F06, F07, F08",
      "phase_ids": [
        2,
        5,
        6,
        7,
        8
      ],
      "steps": {
        "2": [
          2,
          4
        ],
        "5": [
          1,
          3,
          4
        ],
        "6": [
          3
        ],
        "7": [
          2,
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Tổng hợp factsheet có dấu nguồn",
      "status": "Đang làm",
      "purpose": "Tổng hợp factsheet có dấu nguồn. Giữ tài liệu để kiểm chứng và viết có căn cứ.",
      "how": "Thêm file/văn bản, phân loại quyền và grounding; chỉ xác nhận nguồn đã được phép dùng.",
      "input": "File/văn bản/URL nguồn, quyền sử dụng, loại nguồn, yêu cầu grounding.",
      "output": "Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "implemented": "Có mã triển khai tại src/lib/refs/factsheet.ts. Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/refs/factsheet.ts"
      ],
      "location": "/app/books",
      "tool": "references"
    },
    {
      "id": "cap-refs-5",
      "group": "Capability",
      "phase": "F02, F05, F06, F07, F08",
      "phase_ids": [
        2,
        5,
        6,
        7,
        8
      ],
      "steps": {
        "2": [
          2,
          4
        ],
        "5": [
          1,
          3,
          4
        ],
        "6": [
          3
        ],
        "7": [
          2,
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Báo cáo khoảng trống nguồn",
      "status": "Đang làm",
      "purpose": "Báo cáo khoảng trống nguồn. Giữ tài liệu để kiểm chứng và viết có căn cứ.",
      "how": "Thêm file/văn bản, phân loại quyền và grounding; chỉ xác nhận nguồn đã được phép dùng.",
      "input": "File/văn bản/URL nguồn, quyền sử dụng, loại nguồn, yêu cầu grounding.",
      "output": "Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "implemented": "Có mã triển khai tại src/lib/refs/gap-report.ts. Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/refs/gap-report.ts"
      ],
      "location": "/app/books",
      "tool": "references"
    },
    {
      "id": "cap-refs-6",
      "group": "Capability",
      "phase": "F02, F05, F06, F07, F08",
      "phase_ids": [
        2,
        5,
        6,
        7,
        8
      ],
      "steps": {
        "2": [
          2,
          4
        ],
        "5": [
          1,
          3,
          4
        ],
        "6": [
          3
        ],
        "7": [
          2,
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Phân đoạn tài liệu và giữ source IDs",
      "status": "Đang làm",
      "purpose": "Phân đoạn tài liệu và giữ source IDs. Giữ tài liệu để kiểm chứng và viết có căn cứ.",
      "how": "Thêm file/văn bản, phân loại quyền và grounding; chỉ xác nhận nguồn đã được phép dùng.",
      "input": "File/văn bản/URL nguồn, quyền sử dụng, loại nguồn, yêu cầu grounding.",
      "output": "Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "implemented": "Có mã triển khai tại src/lib/refs/chunk.ts. Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/refs/chunk.ts"
      ],
      "location": "/app/books",
      "tool": "references"
    },
    {
      "id": "cap-refs-7",
      "group": "Capability",
      "phase": "F02, F05, F06, F07, F08",
      "phase_ids": [
        2,
        5,
        6,
        7,
        8
      ],
      "steps": {
        "2": [
          2,
          4
        ],
        "5": [
          1,
          3,
          4
        ],
        "6": [
          3
        ],
        "7": [
          2,
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Tìm tương đồng đoạn nguồn",
      "status": "Đang làm",
      "purpose": "Tìm tương đồng đoạn nguồn. Giữ tài liệu để kiểm chứng và viết có căn cứ.",
      "how": "Thêm file/văn bản, phân loại quyền và grounding; chỉ xác nhận nguồn đã được phép dùng.",
      "input": "File/văn bản/URL nguồn, quyền sử dụng, loại nguồn, yêu cầu grounding.",
      "output": "Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "implemented": "Có mã triển khai tại src/lib/refs/similarity.ts. Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/refs/similarity.ts"
      ],
      "location": "/app/books",
      "tool": "references"
    },
    {
      "id": "cap-refs-8",
      "group": "Capability",
      "phase": "F02, F05, F06, F07, F08",
      "phase_ids": [
        2,
        5,
        6,
        7,
        8
      ],
      "steps": {
        "2": [
          2,
          4
        ],
        "5": [
          1,
          3,
          4
        ],
        "6": [
          3
        ],
        "7": [
          2,
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Trích nội dung và metadata file",
      "status": "Đang làm",
      "purpose": "Trích nội dung và metadata file. Giữ tài liệu để kiểm chứng và viết có căn cứ.",
      "how": "Thêm file/văn bản, phân loại quyền và grounding; chỉ xác nhận nguồn đã được phép dùng.",
      "input": "File/văn bản/URL nguồn, quyền sử dụng, loại nguồn, yêu cầu grounding.",
      "output": "Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "implemented": "Có mã triển khai tại src/lib/refs/extract.ts. Tài liệu, đoạn chia nhỏ, cảnh báo injection, kết quả truy xuất và báo cáo phủ nguồn.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/refs/extract.ts"
      ],
      "location": "/app/books",
      "tool": "references"
    },
    {
      "id": "cap-outline-1",
      "group": "Capability",
      "phase": "F06, F07",
      "phase_ids": [
        6,
        7
      ],
      "steps": {
        "6": [
          1,
          2,
          3,
          4
        ],
        "7": [
          1
        ]
      },
      "step": "",
      "feature": "Tạo dàn ý AI từ Brief",
      "status": "Đang làm",
      "purpose": "Tạo dàn ý AI từ Brief. Sắp chương theo nhiệm vụ và thứ tự cần thiết.",
      "how": "Rà từng node, sửa thứ tự/nội dung, duyệt dàn ý rồi gắn mã chương vào sổ lời hứa.",
      "input": "Brief, blueprint hoặc workbook XLSX với cấu trúc chương.",
      "output": "Dàn ý có node ID, cảnh báo cấu trúc, phiên bản và trạng thái duyệt.",
      "implemented": "Có mã triển khai tại src/lib/outline/generate.ts. Dàn ý có node ID, cảnh báo cấu trúc, phiên bản và trạng thái duyệt.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/outline/generate.ts"
      ],
      "location": "/app/books",
      "tool": "outline"
    },
    {
      "id": "cap-outline-2",
      "group": "Capability",
      "phase": "F06, F07",
      "phase_ids": [
        6,
        7
      ],
      "steps": {
        "6": [
          1,
          2,
          3,
          4
        ],
        "7": [
          1
        ]
      },
      "step": "",
      "feature": "Kiểm dàn ý theo blueprint và yêu cầu",
      "status": "Đang làm",
      "purpose": "Kiểm dàn ý theo blueprint và yêu cầu. Sắp chương theo nhiệm vụ và thứ tự cần thiết.",
      "how": "Rà từng node, sửa thứ tự/nội dung, duyệt dàn ý rồi gắn mã chương vào sổ lời hứa.",
      "input": "Brief, blueprint hoặc workbook XLSX với cấu trúc chương.",
      "output": "Dàn ý có node ID, cảnh báo cấu trúc, phiên bản và trạng thái duyệt.",
      "implemented": "Có mã triển khai tại src/lib/outline/validate.ts. Dàn ý có node ID, cảnh báo cấu trúc, phiên bản và trạng thái duyệt.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/outline/validate.ts"
      ],
      "location": "/app/books",
      "tool": "outline"
    },
    {
      "id": "cap-outline-3",
      "group": "Capability",
      "phase": "F06, F07",
      "phase_ids": [
        6,
        7
      ],
      "steps": {
        "6": [
          1,
          2,
          3,
          4
        ],
        "7": [
          1
        ]
      },
      "step": "",
      "feature": "Sửa, sắp thứ tự, khóa và duyệt node",
      "status": "Đang làm",
      "purpose": "Sửa, sắp thứ tự, khóa và duyệt node. Sắp chương theo nhiệm vụ và thứ tự cần thiết.",
      "how": "Rà từng node, sửa thứ tự/nội dung, duyệt dàn ý rồi gắn mã chương vào sổ lời hứa.",
      "input": "Brief, blueprint hoặc workbook XLSX với cấu trúc chương.",
      "output": "Dàn ý có node ID, cảnh báo cấu trúc, phiên bản và trạng thái duyệt.",
      "implemented": "Có mã triển khai tại src/lib/outline/ops.ts. Dàn ý có node ID, cảnh báo cấu trúc, phiên bản và trạng thái duyệt.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/outline/ops.ts"
      ],
      "location": "/app/books",
      "tool": "outline"
    },
    {
      "id": "cap-outline-4",
      "group": "Capability",
      "phase": "F06, F07",
      "phase_ids": [
        6,
        7
      ],
      "steps": {
        "6": [
          1,
          2,
          3,
          4
        ],
        "7": [
          1
        ]
      },
      "step": "",
      "feature": "Nhập dàn ý và Brief từ Excel",
      "status": "Đang làm",
      "purpose": "Nhập dàn ý và Brief từ Excel. Sắp chương theo nhiệm vụ và thứ tự cần thiết.",
      "how": "Rà từng node, sửa thứ tự/nội dung, duyệt dàn ý rồi gắn mã chương vào sổ lời hứa.",
      "input": "Brief, blueprint hoặc workbook XLSX với cấu trúc chương.",
      "output": "Dàn ý có node ID, cảnh báo cấu trúc, phiên bản và trạng thái duyệt.",
      "implemented": "Có mã triển khai tại src/lib/outline/import-xlsx.ts. Dàn ý có node ID, cảnh báo cấu trúc, phiên bản và trạng thái duyệt.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/outline/import-xlsx.ts"
      ],
      "location": "/app/books",
      "tool": "outline"
    },
    {
      "id": "cap-generation-1",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          1,
          2,
          3,
          4,
          6
        ],
        "8": [
          1,
          3
        ]
      },
      "step": "",
      "feature": "Engine viết chương, chấm và sửa theo quality gate",
      "status": "Đang làm",
      "purpose": "Engine viết chương, chấm và sửa theo quality gate. Viết và theo dõi các phiên bản chương.",
      "how": "Chọn chương, kiểm nguồn rồi tạo/sửa bản nháp; bàn giao bản được chọn sang bản thảo.",
      "input": "Brief/dàn ý đã duyệt, nguồn được phép, gate, ngân sách và model.",
      "output": "Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "implemented": "Có mã triển khai tại src/lib/generation/engine.ts. Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/generation/engine.ts"
      ],
      "location": "/app/books",
      "tool": "drafts"
    },
    {
      "id": "cap-generation-2",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          1,
          2,
          3,
          4,
          6
        ],
        "8": [
          1,
          3
        ]
      },
      "step": "",
      "feature": "Gói context Brief/Bible/summary/nguồn",
      "status": "Đang làm",
      "purpose": "Gói context Brief/Bible/summary/nguồn. Viết và theo dõi các phiên bản chương.",
      "how": "Chọn chương, kiểm nguồn rồi tạo/sửa bản nháp; bàn giao bản được chọn sang bản thảo.",
      "input": "Brief/dàn ý đã duyệt, nguồn được phép, gate, ngân sách và model.",
      "output": "Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "implemented": "Có mã triển khai tại src/lib/generation/context-pack.ts. Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/generation/context-pack.ts"
      ],
      "location": "/app/books",
      "tool": "drafts"
    },
    {
      "id": "cap-generation-3",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          1,
          2,
          3,
          4,
          6
        ],
        "8": [
          1,
          3
        ]
      },
      "step": "",
      "feature": "Context dài hạn và giới hạn độ dài",
      "status": "Đang làm",
      "purpose": "Context dài hạn và giới hạn độ dài. Viết và theo dõi các phiên bản chương.",
      "how": "Chọn chương, kiểm nguồn rồi tạo/sửa bản nháp; bàn giao bản được chọn sang bản thảo.",
      "input": "Brief/dàn ý đã duyệt, nguồn được phép, gate, ngân sách và model.",
      "output": "Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "implemented": "Có mã triển khai tại src/lib/generation/long-horizon.ts. Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/generation/long-horizon.ts"
      ],
      "location": "/app/books",
      "tool": "drafts"
    },
    {
      "id": "cap-generation-4",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          1,
          2,
          3,
          4,
          6
        ],
        "8": [
          1,
          3
        ]
      },
      "step": "",
      "feature": "Kiểm continuity trong vòng generation",
      "status": "Đang làm",
      "purpose": "Kiểm continuity trong vòng generation. Viết và theo dõi các phiên bản chương.",
      "how": "Chọn chương, kiểm nguồn rồi tạo/sửa bản nháp; bàn giao bản được chọn sang bản thảo.",
      "input": "Brief/dàn ý đã duyệt, nguồn được phép, gate, ngân sách và model.",
      "output": "Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "implemented": "Có mã triển khai tại src/lib/generation/engine-continuity.ts. Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/generation/engine-continuity.ts"
      ],
      "location": "/app/books",
      "tool": "drafts"
    },
    {
      "id": "cap-generation-5",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          1,
          2,
          3,
          4,
          6
        ],
        "8": [
          1,
          3
        ]
      },
      "step": "",
      "feature": "Ước tính token và chi phí trước chạy",
      "status": "Đang làm",
      "purpose": "Ước tính token và chi phí trước chạy. Viết và theo dõi các phiên bản chương.",
      "how": "Chọn chương, kiểm nguồn rồi tạo/sửa bản nháp; bàn giao bản được chọn sang bản thảo.",
      "input": "Brief/dàn ý đã duyệt, nguồn được phép, gate, ngân sách và model.",
      "output": "Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "implemented": "Có mã triển khai tại src/lib/generation/estimate.ts. Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/generation/estimate.ts"
      ],
      "location": "/app/books",
      "tool": "drafts"
    },
    {
      "id": "cap-generation-6",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          1,
          2,
          3,
          4,
          6
        ],
        "8": [
          1,
          3
        ]
      },
      "step": "",
      "feature": "Chuyển Markdown đầu ra thành blocks",
      "status": "Đang làm",
      "purpose": "Chuyển Markdown đầu ra thành blocks. Viết và theo dõi các phiên bản chương.",
      "how": "Chọn chương, kiểm nguồn rồi tạo/sửa bản nháp; bàn giao bản được chọn sang bản thảo.",
      "input": "Brief/dàn ý đã duyệt, nguồn được phép, gate, ngân sách và model.",
      "output": "Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "implemented": "Có mã triển khai tại src/lib/generation/markdown-to-blocks.ts. Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/generation/markdown-to-blocks.ts"
      ],
      "location": "/app/books",
      "tool": "drafts"
    },
    {
      "id": "cap-generation-7",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          1,
          2,
          3,
          4,
          6
        ],
        "8": [
          1,
          3
        ]
      },
      "step": "",
      "feature": "Phát sự kiện tiến độ theo chương và tác vụ",
      "status": "Đang làm",
      "purpose": "Phát sự kiện tiến độ theo chương và tác vụ. Viết và theo dõi các phiên bản chương.",
      "how": "Chọn chương, kiểm nguồn rồi tạo/sửa bản nháp; bàn giao bản được chọn sang bản thảo.",
      "input": "Brief/dàn ý đã duyệt, nguồn được phép, gate, ngân sách và model.",
      "output": "Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "implemented": "Có mã triển khai tại src/lib/generation/engine-emitter.ts. Bản nháp chương, version, scores, summaries, tiến độ và lỗi có thể tiếp tục.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/generation/engine-emitter.ts"
      ],
      "location": "/app/books",
      "tool": "drafts"
    },
    {
      "id": "cap-bible-1",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          3
        ],
        "7": [
          4
        ],
        "8": [
          2
        ],
        "14": [
          4
        ]
      },
      "step": "",
      "feature": "Trích entity từ bản thảo",
      "status": "Đang làm",
      "purpose": "Trích entity từ bản thảo. Giữ giọng, glossary và canon nhất quán.",
      "how": "Ghi thuật ngữ/quy tắc và đối chiếu khi viết hoặc sửa chương.",
      "input": "Entity, glossary, quy tắc canon, block bản thảo và mốc thời gian.",
      "output": "Story Bible cập nhật, entity hợp nhất và context đúng thời điểm.",
      "implemented": "Có mã triển khai tại src/lib/bible/extract.ts. Story Bible cập nhật, entity hợp nhất và context đúng thời điểm.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/bible/extract.ts"
      ],
      "location": "/app/books",
      "tool": "bible"
    },
    {
      "id": "cap-bible-2",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          3
        ],
        "7": [
          4
        ],
        "8": [
          2
        ],
        "14": [
          4
        ]
      },
      "step": "",
      "feature": "Hợp nhất entity và phát hiện xung đột",
      "status": "Đang làm",
      "purpose": "Hợp nhất entity và phát hiện xung đột. Giữ giọng, glossary và canon nhất quán.",
      "how": "Ghi thuật ngữ/quy tắc và đối chiếu khi viết hoặc sửa chương.",
      "input": "Entity, glossary, quy tắc canon, block bản thảo và mốc thời gian.",
      "output": "Story Bible cập nhật, entity hợp nhất và context đúng thời điểm.",
      "implemented": "Có mã triển khai tại src/lib/bible/merge.ts. Story Bible cập nhật, entity hợp nhất và context đúng thời điểm.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/bible/merge.ts"
      ],
      "location": "/app/books",
      "tool": "bible"
    },
    {
      "id": "cap-bible-3",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          3
        ],
        "7": [
          4
        ],
        "8": [
          2
        ],
        "14": [
          4
        ]
      },
      "step": "",
      "feature": "Rút gọn canon và hướng dẫn sử dụng",
      "status": "Đang làm",
      "purpose": "Rút gọn canon và hướng dẫn sử dụng. Giữ giọng, glossary và canon nhất quán.",
      "how": "Ghi thuật ngữ/quy tắc và đối chiếu khi viết hoặc sửa chương.",
      "input": "Entity, glossary, quy tắc canon, block bản thảo và mốc thời gian.",
      "output": "Story Bible cập nhật, entity hợp nhất và context đúng thời điểm.",
      "implemented": "Có mã triển khai tại src/lib/bible/compact.ts. Story Bible cập nhật, entity hợp nhất và context đúng thời điểm.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/bible/compact.ts"
      ],
      "location": "/app/books",
      "tool": "bible"
    },
    {
      "id": "cap-bible-4",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          3
        ],
        "7": [
          4
        ],
        "8": [
          2
        ],
        "14": [
          4
        ]
      },
      "step": "",
      "feature": "Tra cứu canon theo thời điểm tránh tiết lộ tương lai",
      "status": "Đang làm",
      "purpose": "Tra cứu canon theo thời điểm tránh tiết lộ tương lai. Giữ giọng, glossary và canon nhất quán.",
      "how": "Ghi thuật ngữ/quy tắc và đối chiếu khi viết hoặc sửa chương.",
      "input": "Entity, glossary, quy tắc canon, block bản thảo và mốc thời gian.",
      "output": "Story Bible cập nhật, entity hợp nhất và context đúng thời điểm.",
      "implemented": "Có mã triển khai tại src/lib/bible/temporal.ts. Story Bible cập nhật, entity hợp nhất và context đúng thời điểm.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/bible/temporal.ts"
      ],
      "location": "/app/books",
      "tool": "bible"
    },
    {
      "id": "cap-fiction-1",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4,
          6
        ],
        "8": [
          1
        ]
      },
      "step": "",
      "feature": "Lấy chương và snapshots từ bản nguồn chính",
      "status": "Đã xong",
      "purpose": "Lấy chương và snapshots từ bản nguồn chính. Quản lý scene, beat, phiên bản và nhật ký viết.",
      "how": "Chọn scene từ bản nguồn, rà canon và so phiên bản; nhập nhật ký/đích viết theo sách rồi lưu.",
      "input": "Bản nguồn Workspace hoặc bản nháp mới nhất; snapshots và nhật ký viết thật.",
      "output": "Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "implemented": "Có mã triển khai tại src/lib/fiction/book-source.ts. Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/fiction/book-source.ts"
      ],
      "location": "/app/books",
      "tool": "fiction"
    },
    {
      "id": "cap-fiction-2",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4,
          6
        ],
        "8": [
          1
        ]
      },
      "step": "",
      "feature": "Thẻ scene và mẫu beat sheet",
      "status": "Đang làm",
      "purpose": "Thẻ scene và mẫu beat sheet. Quản lý scene, beat, phiên bản và nhật ký viết.",
      "how": "Chọn scene từ bản nguồn, rà canon và so phiên bản; nhập nhật ký/đích viết theo sách rồi lưu.",
      "input": "Bản nguồn Workspace hoặc bản nháp mới nhất; snapshots và nhật ký viết thật.",
      "output": "Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "implemented": "Có mã triển khai tại src/lib/fiction/beat-sheet.ts. Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/fiction/beat-sheet.ts"
      ],
      "location": "/app/books",
      "tool": "fiction"
    },
    {
      "id": "cap-fiction-3",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4,
          6
        ],
        "8": [
          1
        ]
      },
      "step": "",
      "feature": "Đo POV và nhịp câu",
      "status": "Đang làm",
      "purpose": "Đo POV và nhịp câu. Quản lý scene, beat, phiên bản và nhật ký viết.",
      "how": "Chọn scene từ bản nguồn, rà canon và so phiên bản; nhập nhật ký/đích viết theo sách rồi lưu.",
      "input": "Bản nguồn Workspace hoặc bản nháp mới nhất; snapshots và nhật ký viết thật.",
      "output": "Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "implemented": "Có mã triển khai tại src/lib/fiction/beat-sheet-pov.ts. Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/fiction/beat-sheet-pov.ts"
      ],
      "location": "/app/books",
      "tool": "fiction"
    },
    {
      "id": "cap-fiction-4",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4,
          6
        ],
        "8": [
          1
        ]
      },
      "step": "",
      "feature": "So sánh phiên bản và giữ xung đột cần quyết định",
      "status": "Đang làm",
      "purpose": "So sánh phiên bản và giữ xung đột cần quyết định. Quản lý scene, beat, phiên bản và nhật ký viết.",
      "how": "Chọn scene từ bản nguồn, rà canon và so phiên bản; nhập nhật ký/đích viết theo sách rồi lưu.",
      "input": "Bản nguồn Workspace hoặc bản nháp mới nhất; snapshots và nhật ký viết thật.",
      "output": "Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "implemented": "Có mã triển khai tại src/lib/fiction/version-compare.ts. Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/fiction/version-compare.ts"
      ],
      "location": "/app/books",
      "tool": "fiction"
    },
    {
      "id": "cap-fiction-5",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4,
          6
        ],
        "8": [
          1
        ]
      },
      "step": "",
      "feature": "Dự toán tiến độ dựa trên nhật ký viết thật",
      "status": "Đã xong",
      "purpose": "Dự toán tiến độ dựa trên nhật ký viết thật. Quản lý scene, beat, phiên bản và nhật ký viết.",
      "how": "Chọn scene từ bản nguồn, rà canon và so phiên bản; nhập nhật ký/đích viết theo sách rồi lưu.",
      "input": "Bản nguồn Workspace hoặc bản nháp mới nhất; snapshots và nhật ký viết thật.",
      "output": "Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "implemented": "Có mã triển khai tại src/lib/fiction/writing-sprint.ts. Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/fiction/writing-sprint.ts"
      ],
      "location": "/app/books",
      "tool": "fiction"
    },
    {
      "id": "cap-fiction-6",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4,
          6
        ],
        "8": [
          1
        ]
      },
      "step": "",
      "feature": "Lưu sprint theo từng sách trên trình duyệt",
      "status": "Đã xong",
      "purpose": "Lưu sprint theo từng sách trên trình duyệt. Quản lý scene, beat, phiên bản và nhật ký viết.",
      "how": "Chọn scene từ bản nguồn, rà canon và so phiên bản; nhập nhật ký/đích viết theo sách rồi lưu.",
      "input": "Bản nguồn Workspace hoặc bản nháp mới nhất; snapshots và nhật ký viết thật.",
      "output": "Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "implemented": "Có mã triển khai tại src/lib/fiction/sprint-store.ts. Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/fiction/sprint-store.ts"
      ],
      "location": "/app/books",
      "tool": "fiction"
    },
    {
      "id": "cap-fiction-7",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          2,
          4
        ],
        "7": [
          2,
          4,
          6
        ],
        "8": [
          1
        ]
      },
      "step": "",
      "feature": "Đánh giá điều kiện offline/PWA",
      "status": "Đang làm",
      "purpose": "Đánh giá điều kiện offline/PWA. Quản lý scene, beat, phiên bản và nhật ký viết.",
      "how": "Chọn scene từ bản nguồn, rà canon và so phiên bản; nhập nhật ký/đích viết theo sách rồi lưu.",
      "input": "Bản nguồn Workspace hoặc bản nháp mới nhất; snapshots và nhật ký viết thật.",
      "output": "Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "implemented": "Có mã triển khai tại src/lib/fiction/pwa-review.ts. Scene/beat/POV/rhythm, diff phiên bản và tiến độ sprint từ dữ liệu người viết.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/fiction/pwa-review.ts"
      ],
      "location": "/app/books",
      "tool": "fiction"
    },
    {
      "id": "cap-quality-1",
      "group": "Capability",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {
        "7": [
          6
        ],
        "8": [
          1,
          3,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Chấm chương/sách và kiểm required elements",
      "status": "Đang làm",
      "purpose": "Chấm chương/sách và kiểm required elements. Quan sát kết quả kiểm và phần cần sửa.",
      "how": "Đọc lý do từng điểm, kiểm bằng bản nguồn rồi sửa; điểm AI không tự thay nghiệm thu.",
      "input": "Draft, Brief, tiêu chí gate, số judge và lỗi cần sửa.",
      "output": "Điểm theo tiêu chí, fix brief, nhận xét biên tập và lịch sử chất lượng.",
      "implemented": "Có mã triển khai tại src/lib/quality/score.ts. Điểm theo tiêu chí, fix brief, nhận xét biên tập và lịch sử chất lượng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/quality/score.ts"
      ],
      "location": "/app/books",
      "tool": "quality"
    },
    {
      "id": "cap-quality-2",
      "group": "Capability",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {
        "7": [
          6
        ],
        "8": [
          1,
          3,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Thư biên tập cấu trúc và hướng sửa",
      "status": "Đang làm",
      "purpose": "Thư biên tập cấu trúc và hướng sửa. Quan sát kết quả kiểm và phần cần sửa.",
      "how": "Đọc lý do từng điểm, kiểm bằng bản nguồn rồi sửa; điểm AI không tự thay nghiệm thu.",
      "input": "Draft, Brief, tiêu chí gate, số judge và lỗi cần sửa.",
      "output": "Điểm theo tiêu chí, fix brief, nhận xét biên tập và lịch sử chất lượng.",
      "implemented": "Có mã triển khai tại src/lib/quality/editorial.ts. Điểm theo tiêu chí, fix brief, nhận xét biên tập và lịch sử chất lượng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/quality/editorial.ts"
      ],
      "location": "/app/books",
      "tool": "quality"
    },
    {
      "id": "cap-quality-ops-1",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          5
        ],
        "8": [
          3,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Đo readability từ văn bản",
      "status": "Đang làm",
      "purpose": "Đo readability từ văn bản. Theo dõi lỗi và lần kiểm chất lượng.",
      "how": "Lập lỗi, người phụ trách, mức ảnh hưởng; ghi bằng chứng kiểm lại khi đóng lỗi.",
      "input": "Bản thảo, mục tiêu độ khó, glossary, ví dụ và bài tập.",
      "output": "Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "implemented": "Có mã triển khai tại src/lib/quality-ops/readability.ts. Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/quality-ops/readability.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps"
    },
    {
      "id": "cap-quality-ops-2",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          5
        ],
        "8": [
          3,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Đề xuất viết lại theo readability",
      "status": "Đang làm",
      "purpose": "Đề xuất viết lại theo readability. Theo dõi lỗi và lần kiểm chất lượng.",
      "how": "Lập lỗi, người phụ trách, mức ảnh hưởng; ghi bằng chứng kiểm lại khi đóng lỗi.",
      "input": "Bản thảo, mục tiêu độ khó, glossary, ví dụ và bài tập.",
      "output": "Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "implemented": "Có mã triển khai tại src/lib/quality-ops/readability-rewrite.ts. Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/quality-ops/readability-rewrite.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps"
    },
    {
      "id": "cap-quality-ops-3",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          5
        ],
        "8": [
          3,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Phát hiện lệch thuật ngữ",
      "status": "Đang làm",
      "purpose": "Phát hiện lệch thuật ngữ. Theo dõi lỗi và lần kiểm chất lượng.",
      "how": "Lập lỗi, người phụ trách, mức ảnh hưởng; ghi bằng chứng kiểm lại khi đóng lỗi.",
      "input": "Bản thảo, mục tiêu độ khó, glossary, ví dụ và bài tập.",
      "output": "Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "implemented": "Có mã triển khai tại src/lib/quality-ops/terminology.ts. Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/quality-ops/terminology.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps"
    },
    {
      "id": "cap-quality-ops-4",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          5
        ],
        "8": [
          3,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Thêm ví dụ minh họa",
      "status": "Đang làm",
      "purpose": "Thêm ví dụ minh họa. Theo dõi lỗi và lần kiểm chất lượng.",
      "how": "Lập lỗi, người phụ trách, mức ảnh hưởng; ghi bằng chứng kiểm lại khi đóng lỗi.",
      "input": "Bản thảo, mục tiêu độ khó, glossary, ví dụ và bài tập.",
      "output": "Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "implemented": "Có mã triển khai tại src/lib/quality-ops/example-injector.ts. Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/quality-ops/example-injector.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps"
    },
    {
      "id": "cap-quality-ops-5",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          5
        ],
        "8": [
          3,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Gợi ý ví dụ bằng AI",
      "status": "Đang làm",
      "purpose": "Gợi ý ví dụ bằng AI. Theo dõi lỗi và lần kiểm chất lượng.",
      "how": "Lập lỗi, người phụ trách, mức ảnh hưởng; ghi bằng chứng kiểm lại khi đóng lỗi.",
      "input": "Bản thảo, mục tiêu độ khó, glossary, ví dụ và bài tập.",
      "output": "Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "implemented": "Có mã triển khai tại src/lib/quality-ops/example-injector-ai.ts. Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/quality-ops/example-injector-ai.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps"
    },
    {
      "id": "cap-quality-ops-6",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          5
        ],
        "8": [
          3,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Điều chỉnh bài tập theo người học",
      "status": "Đang làm",
      "purpose": "Điều chỉnh bài tập theo người học. Theo dõi lỗi và lần kiểm chất lượng.",
      "how": "Lập lỗi, người phụ trách, mức ảnh hưởng; ghi bằng chứng kiểm lại khi đóng lỗi.",
      "input": "Bản thảo, mục tiêu độ khó, glossary, ví dụ và bài tập.",
      "output": "Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "implemented": "Có mã triển khai tại src/lib/quality-ops/exercise-tuner.ts. Báo cáo readability, thuật ngữ, gợi ý sửa và bài tập đánh giá.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/quality-ops/exercise-tuner.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps"
    },
    {
      "id": "cap-reader-insight-1",
      "group": "Capability",
      "phase": "F02, F06, F08, F13",
      "phase_ids": [
        2,
        6,
        8,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "6": [
          5
        ],
        "8": [
          4,
          5
        ],
        "13": [
          2,
          5
        ]
      },
      "step": "",
      "feature": "Mô phỏng độc giả theo persona",
      "status": "Đang làm",
      "purpose": "Mô phỏng độc giả theo persona. Tìm câu hỏi và giả thuyết cần thử.",
      "how": "Dùng phản hồi mô phỏng để chuẩn bị nhiệm vụ; ghi kết quả độc giả thật riêng ở F08.",
      "input": "Bản thảo và persona giả định; kết quả độc giả thật nhập riêng.",
      "output": "Phản hồi mô phỏng, cảnh báo nhạy cảm và phân loại vấn đề cần thử.",
      "implemented": "Có mã triển khai tại src/lib/reader-insight/simulation.ts. Phản hồi mô phỏng, cảnh báo nhạy cảm và phân loại vấn đề cần thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/reader-insight/simulation.ts"
      ],
      "location": "/app/books",
      "tool": "readerInsight"
    },
    {
      "id": "cap-reader-insight-2",
      "group": "Capability",
      "phase": "F02, F06, F08, F13",
      "phase_ids": [
        2,
        6,
        8,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "6": [
          5
        ],
        "8": [
          4,
          5
        ],
        "13": [
          2,
          5
        ]
      },
      "step": "",
      "feature": "Chấm phản hồi mô phỏng",
      "status": "Đang làm",
      "purpose": "Chấm phản hồi mô phỏng. Tìm câu hỏi và giả thuyết cần thử.",
      "how": "Dùng phản hồi mô phỏng để chuẩn bị nhiệm vụ; ghi kết quả độc giả thật riêng ở F08.",
      "input": "Bản thảo và persona giả định; kết quả độc giả thật nhập riêng.",
      "output": "Phản hồi mô phỏng, cảnh báo nhạy cảm và phân loại vấn đề cần thử.",
      "implemented": "Có mã triển khai tại src/lib/reader-insight/simulation-scoring.ts. Phản hồi mô phỏng, cảnh báo nhạy cảm và phân loại vấn đề cần thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/reader-insight/simulation-scoring.ts"
      ],
      "location": "/app/books",
      "tool": "readerInsight"
    },
    {
      "id": "cap-reader-insight-3",
      "group": "Capability",
      "phase": "F02, F06, F08, F13",
      "phase_ids": [
        2,
        6,
        8,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "6": [
          5
        ],
        "8": [
          4,
          5
        ],
        "13": [
          2,
          5
        ]
      },
      "step": "",
      "feature": "Rà sensitivity và inclusivity",
      "status": "Đang làm",
      "purpose": "Rà sensitivity và inclusivity. Tìm câu hỏi và giả thuyết cần thử.",
      "how": "Dùng phản hồi mô phỏng để chuẩn bị nhiệm vụ; ghi kết quả độc giả thật riêng ở F08.",
      "input": "Bản thảo và persona giả định; kết quả độc giả thật nhập riêng.",
      "output": "Phản hồi mô phỏng, cảnh báo nhạy cảm và phân loại vấn đề cần thử.",
      "implemented": "Có mã triển khai tại src/lib/reader-insight/sensitivity.ts. Phản hồi mô phỏng, cảnh báo nhạy cảm và phân loại vấn đề cần thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/reader-insight/sensitivity.ts"
      ],
      "location": "/app/books",
      "tool": "readerInsight"
    },
    {
      "id": "cap-reader-insight-4",
      "group": "Capability",
      "phase": "F02, F06, F08, F13",
      "phase_ids": [
        2,
        6,
        8,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "6": [
          5
        ],
        "8": [
          4,
          5
        ],
        "13": [
          2,
          5
        ]
      },
      "step": "",
      "feature": "Phân loại vòng phản hồi độc giả",
      "status": "Đang làm",
      "purpose": "Phân loại vòng phản hồi độc giả. Tìm câu hỏi và giả thuyết cần thử.",
      "how": "Dùng phản hồi mô phỏng để chuẩn bị nhiệm vụ; ghi kết quả độc giả thật riêng ở F08.",
      "input": "Bản thảo và persona giả định; kết quả độc giả thật nhập riêng.",
      "output": "Phản hồi mô phỏng, cảnh báo nhạy cảm và phân loại vấn đề cần thử.",
      "implemented": "Có mã triển khai tại src/lib/reader-insight/feedback.ts. Phản hồi mô phỏng, cảnh báo nhạy cảm và phân loại vấn đề cần thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/reader-insight/feedback.ts"
      ],
      "location": "/app/books",
      "tool": "readerInsight"
    },
    {
      "id": "cap-citations-1",
      "group": "Capability",
      "phase": "F07, F08, F09",
      "phase_ids": [
        7,
        8,
        9
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2
        ],
        "9": [
          3,
          4
        ]
      },
      "step": "",
      "feature": "Kiểm tính toàn vẹn liên kết trích dẫn",
      "status": "Đang làm",
      "purpose": "Kiểm tính toàn vẹn liên kết trích dẫn. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Claims, citations, source IDs và edition/ngôn ngữ.",
      "output": "Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "implemented": "Có mã triển khai tại src/lib/citations/verify.ts. Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/citations/verify.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-citations-2",
      "group": "Capability",
      "phase": "F07, F08, F09",
      "phase_ids": [
        7,
        8,
        9
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2
        ],
        "9": [
          3,
          4
        ]
      },
      "step": "",
      "feature": "Định dạng bibliography/in-text theo style",
      "status": "Đang làm",
      "purpose": "Định dạng bibliography/in-text theo style. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Claims, citations, source IDs và edition/ngôn ngữ.",
      "output": "Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "implemented": "Có mã triển khai tại src/lib/citations/format.ts. Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/citations/format.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-citations-3",
      "group": "Capability",
      "phase": "F07, F08, F09",
      "phase_ids": [
        7,
        8,
        9
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2
        ],
        "9": [
          3,
          4
        ]
      },
      "step": "",
      "feature": "Kiểm link nguồn",
      "status": "Đang làm",
      "purpose": "Kiểm link nguồn. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Claims, citations, source IDs và edition/ngôn ngữ.",
      "output": "Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "implemented": "Có mã triển khai tại src/lib/citations/verify-link.ts. Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/citations/verify-link.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-citations-4",
      "group": "Capability",
      "phase": "F07, F08, F09",
      "phase_ids": [
        7,
        8,
        9
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2
        ],
        "9": [
          3,
          4
        ]
      },
      "step": "",
      "feature": "Kiểm ISBN",
      "status": "Đang làm",
      "purpose": "Kiểm ISBN. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Claims, citations, source IDs và edition/ngôn ngữ.",
      "output": "Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "implemented": "Có mã triển khai tại src/lib/citations/verify-isbn.ts. Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/citations/verify-isbn.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-citations-5",
      "group": "Capability",
      "phase": "F07, F08, F09",
      "phase_ids": [
        7,
        8,
        9
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2
        ],
        "9": [
          3,
          4
        ]
      },
      "step": "",
      "feature": "Đánh số nguồn ổn định",
      "status": "Đang làm",
      "purpose": "Đánh số nguồn ổn định. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Claims, citations, source IDs và edition/ngôn ngữ.",
      "output": "Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "implemented": "Có mã triển khai tại src/lib/citations/numbering.ts. Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/citations/numbering.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-citations-6",
      "group": "Capability",
      "phase": "F07, F08, F09",
      "phase_ids": [
        7,
        8,
        9
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2
        ],
        "9": [
          3,
          4
        ]
      },
      "step": "",
      "feature": "Glossary theo edition",
      "status": "Đang làm",
      "purpose": "Glossary theo edition. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Claims, citations, source IDs và edition/ngôn ngữ.",
      "output": "Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "implemented": "Có mã triển khai tại src/lib/citations/glossary.ts. Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/citations/glossary.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-citations-7",
      "group": "Capability",
      "phase": "F07, F08, F09",
      "phase_ids": [
        7,
        8,
        9
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2
        ],
        "9": [
          3,
          4
        ]
      },
      "step": "",
      "feature": "Back-translation để đối chiếu bản dịch",
      "status": "Đang làm",
      "purpose": "Back-translation để đối chiếu bản dịch. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Claims, citations, source IDs và edition/ngôn ngữ.",
      "output": "Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "implemented": "Có mã triển khai tại src/lib/citations/backtranslate.ts. Kiểm liên kết nguồn và báo cáo trích dẫn cần sửa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/citations/backtranslate.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-factcheck-1",
      "group": "Capability",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2,
          5
        ]
      },
      "step": "",
      "feature": "Trích các claim cần kiểm",
      "status": "Đang làm",
      "purpose": "Trích các claim cần kiểm. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Block và phiên bản, nguồn kiểm chứng và claim.",
      "output": "Sổ claim, phân loại và kết quả đối chiếu có căn cứ.",
      "implemented": "Có mã triển khai tại src/lib/factcheck/extract.ts. Sổ claim, phân loại và kết quả đối chiếu có căn cứ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/factcheck/extract.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-factcheck-2",
      "group": "Capability",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2,
          5
        ]
      },
      "step": "",
      "feature": "Đối chiếu claim với nguồn",
      "status": "Đang làm",
      "purpose": "Đối chiếu claim với nguồn. Đối chiếu nguồn với nội dung.",
      "how": "Rà claim và nguồn, đánh dấu thiếu/sai; ghi người kiểm và sửa trước khóa bản.",
      "input": "Block và phiên bản, nguồn kiểm chứng và claim.",
      "output": "Sổ claim, phân loại và kết quả đối chiếu có căn cứ.",
      "implemented": "Có mã triển khai tại src/lib/factcheck/verify.ts. Sổ claim, phân loại và kết quả đối chiếu có căn cứ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/factcheck/verify.ts"
      ],
      "location": "/app/books",
      "tool": "citations"
    },
    {
      "id": "cap-cover-1",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1,
          2,
          5
        ]
      },
      "step": "",
      "feature": "Brand kit và bộ kiểu thương hiệu",
      "status": "Đang làm",
      "purpose": "Brand kit và bộ kiểu thương hiệu. Chuẩn bị thiết kế bìa theo định vị.",
      "how": "Chọn hướng bìa và thông tin; ghi asset/quyền/kết quả kiểm trong F10.",
      "input": "Tiêu đề, tác giả, brand kit, kích thước, giấy và số trang đo thật.",
      "output": "Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "implemented": "Có mã triển khai tại src/lib/cover/brand-kit.ts. Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/cover/brand-kit.ts"
      ],
      "location": "/app/books",
      "tool": "cover"
    },
    {
      "id": "cap-cover-2",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1,
          2,
          5
        ]
      },
      "step": "",
      "feature": "Template bìa và preview",
      "status": "Đang làm",
      "purpose": "Template bìa và preview. Chuẩn bị thiết kế bìa theo định vị.",
      "how": "Chọn hướng bìa và thông tin; ghi asset/quyền/kết quả kiểm trong F10.",
      "input": "Tiêu đề, tác giả, brand kit, kích thước, giấy và số trang đo thật.",
      "output": "Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "implemented": "Có mã triển khai tại src/lib/cover/templates.ts. Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/cover/templates.ts"
      ],
      "location": "/app/books",
      "tool": "cover"
    },
    {
      "id": "cap-cover-3",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1,
          2,
          5
        ]
      },
      "step": "",
      "feature": "Tính spine, bleed và wrap theo KDP",
      "status": "Đang làm",
      "purpose": "Tính spine, bleed và wrap theo KDP. Chuẩn bị thiết kế bìa theo định vị.",
      "how": "Chọn hướng bìa và thông tin; ghi asset/quyền/kết quả kiểm trong F10.",
      "input": "Tiêu đề, tác giả, brand kit, kích thước, giấy và số trang đo thật.",
      "output": "Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "implemented": "Có mã triển khai tại src/lib/cover/kdp-math.ts. Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/cover/kdp-math.ts"
      ],
      "location": "/app/books",
      "tool": "cover"
    },
    {
      "id": "cap-cover-4",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1,
          2,
          5
        ]
      },
      "step": "",
      "feature": "Prompt tạo artwork theo brief",
      "status": "Đang làm",
      "purpose": "Prompt tạo artwork theo brief. Chuẩn bị thiết kế bìa theo định vị.",
      "how": "Chọn hướng bìa và thông tin; ghi asset/quyền/kết quả kiểm trong F10.",
      "input": "Tiêu đề, tác giả, brand kit, kích thước, giấy và số trang đo thật.",
      "output": "Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "implemented": "Có mã triển khai tại src/lib/cover/prompts.ts. Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/cover/prompts.ts"
      ],
      "location": "/app/books",
      "tool": "cover"
    },
    {
      "id": "cap-cover-5",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1,
          2,
          5
        ]
      },
      "step": "",
      "feature": "Sinh ảnh qua provider và báo thiếu cấu hình",
      "status": "Đang làm",
      "purpose": "Sinh ảnh qua provider và báo thiếu cấu hình. Chuẩn bị thiết kế bìa theo định vị.",
      "how": "Chọn hướng bìa và thông tin; ghi asset/quyền/kết quả kiểm trong F10.",
      "input": "Tiêu đề, tác giả, brand kit, kích thước, giấy và số trang đo thật.",
      "output": "Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "implemented": "Có mã triển khai tại src/lib/cover/image-provider.ts. Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/cover/image-provider.ts"
      ],
      "location": "/app/books",
      "tool": "cover"
    },
    {
      "id": "cap-cover-6",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1,
          2,
          5
        ]
      },
      "step": "",
      "feature": "Render bìa PNG/PDF",
      "status": "Đang làm",
      "purpose": "Render bìa PNG/PDF. Chuẩn bị thiết kế bìa theo định vị.",
      "how": "Chọn hướng bìa và thông tin; ghi asset/quyền/kết quả kiểm trong F10.",
      "input": "Tiêu đề, tác giả, brand kit, kích thước, giấy và số trang đo thật.",
      "output": "Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "implemented": "Có mã triển khai tại src/lib/cover/render.ts. Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/cover/render.ts"
      ],
      "location": "/app/books",
      "tool": "cover"
    },
    {
      "id": "cap-cover-7",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          1,
          2,
          5
        ]
      },
      "step": "",
      "feature": "Visual Bible cho hình ảnh nhất quán",
      "status": "Đang làm",
      "purpose": "Visual Bible cho hình ảnh nhất quán. Chuẩn bị thiết kế bìa theo định vị.",
      "how": "Chọn hướng bìa và thông tin; ghi asset/quyền/kết quả kiểm trong F10.",
      "input": "Tiêu đề, tác giả, brand kit, kích thước, giấy và số trang đo thật.",
      "output": "Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "implemented": "Có mã triển khai tại src/lib/cover/visual-bible.ts. Preview bìa, prompt, thông số spine/bleed và file render khi renderer được cấu hình.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/cover/visual-bible.ts"
      ],
      "location": "/app/books",
      "tool": "cover"
    },
    {
      "id": "cap-pagination-1",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ]
      },
      "step": "",
      "feature": "Tính geometry khổ in và vùng chữ",
      "status": "Đã xong",
      "purpose": "Tính geometry khổ in và vùng chữ. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Blocks, khổ in, margins, font và đo layout trên trình duyệt.",
      "output": "Trang được phân chia, số trang thực đo, geometry và cảnh báo overflow.",
      "implemented": "Có mã triển khai tại src/lib/pagination/geometry.ts. Trang được phân chia, số trang thực đo, geometry và cảnh báo overflow.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/pagination/geometry.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-pagination-2",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ]
      },
      "step": "",
      "feature": "Đo kích thước block bằng layout",
      "status": "Đã xong",
      "purpose": "Đo kích thước block bằng layout. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Blocks, khổ in, margins, font và đo layout trên trình duyệt.",
      "output": "Trang được phân chia, số trang thực đo, geometry và cảnh báo overflow.",
      "implemented": "Có mã triển khai tại src/lib/pagination/measure.ts. Trang được phân chia, số trang thực đo, geometry và cảnh báo overflow.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/pagination/measure.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-pagination-3",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ]
      },
      "step": "",
      "feature": "Phân trang theo kết quả đo",
      "status": "Đã xong",
      "purpose": "Phân trang theo kết quả đo. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Blocks, khổ in, margins, font và đo layout trên trình duyệt.",
      "output": "Trang được phân chia, số trang thực đo, geometry và cảnh báo overflow.",
      "implemented": "Có mã triển khai tại src/lib/pagination/flow.ts. Trang được phân chia, số trang thực đo, geometry và cảnh báo overflow.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/pagination/flow.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-1",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Xuất Word DOCX",
      "status": "Đang làm",
      "purpose": "Xuất Word DOCX. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/docx.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/docx.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-2",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Xuất Markdown",
      "status": "Đang làm",
      "purpose": "Xuất Markdown. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/multi-export.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/multi-export.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-3",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Xuất HTML bản đọc",
      "status": "Đang làm",
      "purpose": "Xuất HTML bản đọc. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/multi-export.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/multi-export.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-4",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Xuất PowerPoint PPTX",
      "status": "Đang làm",
      "purpose": "Xuất PowerPoint PPTX. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/slides.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/slides.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-5",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Xuất HTML slides",
      "status": "Đang làm",
      "purpose": "Xuất HTML slides. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/slides.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/slides.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-6",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Xuất công cụ HTML tương tác",
      "status": "Đang làm",
      "purpose": "Xuất công cụ HTML tương tác. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/interactive-pdf-html.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/interactive-pdf-html.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-7",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Xuất gói đào tạo SCORM",
      "status": "Đang làm",
      "purpose": "Xuất gói đào tạo SCORM. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/training-package.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/training-package.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-8",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Layout profiles theo mục đích",
      "status": "Đang làm",
      "purpose": "Layout profiles theo mục đích. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/layout-profiles.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/layout-profiles.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-9",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Tóm tắt và chuyển dạng nội dung",
      "status": "Đang làm",
      "purpose": "Tóm tắt và chuyển dạng nội dung. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/summary-modes.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/summary-modes.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-formats-10",
      "group": "Capability",
      "phase": "F10, F11, F12",
      "phase_ids": [
        10,
        11,
        12
      ],
      "steps": {
        "10": [
          2,
          3,
          5
        ],
        "11": [
          2
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Gói học tập và lesson assets",
      "status": "Đang làm",
      "purpose": "Gói học tập và lesson assets. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bản nguồn đã chọn, layout profile, brand kit và định dạng xuất.",
      "output": "File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "implemented": "Có mã triển khai tại src/lib/formats/training.ts. File xuất, gói ZIP, manifest và cảnh báo; summary AI cần model.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/formats/training.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-export-1",
      "group": "Capability",
      "phase": "F10, F12",
      "phase_ids": [
        10,
        12
      ],
      "steps": {
        "10": [
          3,
          4,
          5
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Kiểm cấu trúc EPUB và preview",
      "status": "Đang làm",
      "purpose": "Kiểm cấu trúc EPUB và preview. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bytes của artifact, manifest, version và kết quả validator/người kiểm.",
      "output": "Checksum, kiểm EPUB/preview, kết quả pass/fail/not_run và dấu khóa.",
      "implemented": "Có mã triển khai tại src/lib/export/validators.ts. Checksum, kiểm EPUB/preview, kết quả pass/fail/not_run và dấu khóa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/export/validators.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-export-2",
      "group": "Capability",
      "phase": "F10, F12",
      "phase_ids": [
        10,
        12
      ],
      "steps": {
        "10": [
          3,
          4,
          5
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Chạy EPUBCheck khi có Java và công cụ",
      "status": "Đang làm",
      "purpose": "Chạy EPUBCheck khi có Java và công cụ. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bytes của artifact, manifest, version và kết quả validator/người kiểm.",
      "output": "Checksum, kiểm EPUB/preview, kết quả pass/fail/not_run và dấu khóa.",
      "implemented": "Có mã triển khai tại src/lib/export/epubcheck.ts. Checksum, kiểm EPUB/preview, kết quả pass/fail/not_run và dấu khóa.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/export/epubcheck.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-export-3",
      "group": "Capability",
      "phase": "F10, F12",
      "phase_ids": [
        10,
        12
      ],
      "steps": {
        "10": [
          3,
          4,
          5
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Kiểm checksum và khóa artifact chống thay file",
      "status": "Đã xong",
      "purpose": "Kiểm checksum và khóa artifact chống thay file. Tạo file từ bản nguồn đã chọn.",
      "how": "Bàn giao và xử lý xung đột với Workspace; chọn định dạng, tải file và ghi QC/checksum F10.",
      "input": "Bytes của artifact, manifest, version và kết quả validator/người kiểm.",
      "output": "Checksum, kiểm EPUB/preview, kết quả pass/fail/not_run và dấu khóa.",
      "implemented": "Có mã triển khai tại src/lib/export/integrity.ts. Checksum, kiểm EPUB/preview, kết quả pass/fail/not_run và dấu khóa.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/export/integrity.ts"
      ],
      "location": "/app/books",
      "tool": "export"
    },
    {
      "id": "cap-illustration-1",
      "group": "Capability",
      "phase": "F06, F10",
      "phase_ids": [
        6,
        10
      ],
      "steps": {
        "6": [
          4
        ],
        "10": [
          1,
          3
        ]
      },
      "step": "",
      "feature": "Render minh họa và bảo toàn bằng chứng artifact",
      "status": "Đang làm",
      "purpose": "Render minh họa và bảo toàn bằng chứng artifact. Chuẩn bị thiết kế bìa theo định vị.",
      "how": "Chọn hướng bìa và thông tin; ghi asset/quyền/kết quả kiểm trong F10.",
      "input": "Mô tả minh họa, Visual Bible, scene, quyền và provider ảnh.",
      "output": "Artwork thật khi provider chạy, ghi rõ thiếu provider và nguồn asset.",
      "implemented": "Có mã triển khai tại src/lib/illustration/render.ts. Artwork thật khi provider chạy, ghi rõ thiếu provider và nguồn asset.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/illustration/render.ts"
      ],
      "location": "/app/books",
      "tool": "cover"
    },
    {
      "id": "cap-audio-1",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Lấy đúng bản nguồn Workspace cho narration",
      "status": "Đang làm",
      "purpose": "Lấy đúng bản nguồn Workspace cho narration. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/book-source.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/book-source.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-2",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Danh mục voice theo provider/locale/chất lượng",
      "status": "Đang làm",
      "purpose": "Danh mục voice theo provider/locale/chất lượng. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/voices.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/voices.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-3",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Xây narration script và retail sample",
      "status": "Đang làm",
      "purpose": "Xây narration script và retail sample. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/script.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/script.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-4",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Ước tính chi phí và finished hours",
      "status": "Đang làm",
      "purpose": "Ước tính chi phí và finished hours. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/cost.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/cost.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-5",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Adapter TTS OpenAI/Google/ElevenLabs/Azure",
      "status": "Đang làm",
      "purpose": "Adapter TTS OpenAI/Google/ElevenLabs/Azure. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/providers.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/providers.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-6",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Kiểm tương thích ngôn ngữ và engine",
      "status": "Đang làm",
      "purpose": "Kiểm tương thích ngôn ngữ và engine. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/language.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/language.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-7",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Engine điều phối sinh audio",
      "status": "Đang làm",
      "purpose": "Engine điều phối sinh audio. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/engine.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/engine.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-8",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Chuẩn hóa và ghép chương/M4B bằng ffmpeg",
      "status": "Đang làm",
      "purpose": "Chuẩn hóa và ghép chương/M4B bằng ffmpeg. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/ffmpeg-plan.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/ffmpeg-plan.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-9",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Kiểm ngưỡng ACX và số đo âm thanh",
      "status": "Đang làm",
      "purpose": "Kiểm ngưỡng ACX và số đo âm thanh. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/acx.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/acx.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-10",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Điều phối pipeline audio và kết quả",
      "status": "Đang làm",
      "purpose": "Điều phối pipeline audio và kết quả. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/pipeline.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/pipeline.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-audio-11",
      "group": "Capability",
      "phase": "F11, F12",
      "phase_ids": [
        11,
        12
      ],
      "steps": {
        "11": [
          4,
          5
        ],
        "12": [
          1,
          5
        ]
      },
      "step": "",
      "feature": "Ước lượng tốc độ nói theo ngôn ngữ",
      "status": "Đang làm",
      "purpose": "Ước lượng tốc độ nói theo ngôn ngữ. Chuẩn bị kịch bản và cấu hình sản phẩm nghe.",
      "how": "Ghi giọng, quyền, route và QC tại F11; tạo/lưu audio thật tự động chưa hoàn tất.",
      "input": "Bản nguồn, ngôn ngữ, giọng, quyền/consent, speed và route audio.",
      "output": "Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "implemented": "Có mã triển khai tại src/lib/audio/speech-rate.ts. Kịch bản, chi phí/thời lượng, mẫu TTS, kế hoạch ffmpeg và kiểm QC.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/audio/speech-rate.ts"
      ],
      "location": "/app/books",
      "tool": "audio"
    },
    {
      "id": "cap-voice-1",
      "group": "Capability",
      "phase": "F05, F11",
      "phase_ids": [
        5,
        11
      ],
      "steps": {
        "5": [
          1,
          3,
          4
        ],
        "11": [
          4,
          5
        ]
      },
      "step": "",
      "feature": "Chuẩn bị voice brief từ transcript; chưa có dịch vụ clone giọng",
      "status": "Đang làm",
      "purpose": "Chuẩn bị voice brief từ transcript; chưa có dịch vụ clone giọng. Chuẩn bị cấu hình và quyền của giọng đọc.",
      "how": "Ghi consent, phạm vi sử dụng và người kiểm mẫu tại F11; provider sinh giọng thật và pipeline audio chưa hoàn tất.",
      "input": "Audio/transcript được phép, ghi chú và câu trả lời phỏng vấn.",
      "output": "Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "implemented": "Có mã triển khai tại src/lib/voice/voice-brief.ts. Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/voice/voice-brief.ts"
      ],
      "location": "/app/books",
      "tool": "voice"
    },
    {
      "id": "cap-voice-2",
      "group": "Capability",
      "phase": "F05, F11",
      "phase_ids": [
        5,
        11
      ],
      "steps": {
        "5": [
          1,
          3,
          4
        ],
        "11": [
          4,
          5
        ]
      },
      "step": "",
      "feature": "Chép lời audio được phép",
      "status": "Đang làm",
      "purpose": "Chép lời audio được phép. Chuẩn bị cấu hình và quyền của giọng đọc.",
      "how": "Ghi consent, phạm vi sử dụng và người kiểm mẫu tại F11; provider sinh giọng thật và pipeline audio chưa hoàn tất.",
      "input": "Audio/transcript được phép, ghi chú và câu trả lời phỏng vấn.",
      "output": "Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "implemented": "Có mã triển khai tại src/lib/voice/transcribe.ts. Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/voice/transcribe.ts"
      ],
      "location": "/app/books",
      "tool": "voice"
    },
    {
      "id": "cap-voice-3",
      "group": "Capability",
      "phase": "F05, F11",
      "phase_ids": [
        5,
        11
      ],
      "steps": {
        "5": [
          1,
          3,
          4
        ],
        "11": [
          4,
          5
        ]
      },
      "step": "",
      "feature": "Tách transcript và speaker",
      "status": "Đang làm",
      "purpose": "Tách transcript và speaker. Chuẩn bị cấu hình và quyền của giọng đọc.",
      "how": "Ghi consent, phạm vi sử dụng và người kiểm mẫu tại F11; provider sinh giọng thật và pipeline audio chưa hoàn tất.",
      "input": "Audio/transcript được phép, ghi chú và câu trả lời phỏng vấn.",
      "output": "Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "implemented": "Có mã triển khai tại src/lib/voice/transcript.ts. Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/voice/transcript.ts"
      ],
      "location": "/app/books",
      "tool": "voice"
    },
    {
      "id": "cap-voice-4",
      "group": "Capability",
      "phase": "F05, F11",
      "phase_ids": [
        5,
        11
      ],
      "steps": {
        "5": [
          1,
          3,
          4
        ],
        "11": [
          4,
          5
        ]
      },
      "step": "",
      "feature": "Chuyển lời nói thành ghi chú",
      "status": "Đang làm",
      "purpose": "Chuyển lời nói thành ghi chú. Chuẩn bị cấu hình và quyền của giọng đọc.",
      "how": "Ghi consent, phạm vi sử dụng và người kiểm mẫu tại F11; provider sinh giọng thật và pipeline audio chưa hoàn tất.",
      "input": "Audio/transcript được phép, ghi chú và câu trả lời phỏng vấn.",
      "output": "Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "implemented": "Có mã triển khai tại src/lib/voice/notes.ts. Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/voice/notes.ts"
      ],
      "location": "/app/books",
      "tool": "voice"
    },
    {
      "id": "cap-voice-5",
      "group": "Capability",
      "phase": "F05, F11",
      "phase_ids": [
        5,
        11
      ],
      "steps": {
        "5": [
          1,
          3,
          4
        ],
        "11": [
          4,
          5
        ]
      },
      "step": "",
      "feature": "Map interview từ giọng nói vào Brief",
      "status": "Đang làm",
      "purpose": "Map interview từ giọng nói vào Brief. Chuẩn bị cấu hình và quyền của giọng đọc.",
      "how": "Ghi consent, phạm vi sử dụng và người kiểm mẫu tại F11; provider sinh giọng thật và pipeline audio chưa hoàn tất.",
      "input": "Audio/transcript được phép, ghi chú và câu trả lời phỏng vấn.",
      "output": "Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "implemented": "Có mã triển khai tại src/lib/voice/interview-map.ts. Voice brief, ghi chú và dữ liệu phỏng vấn; khác tính năng clone giọng và consent F05.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/voice/interview-map.ts"
      ],
      "location": "/app/books",
      "tool": "voice"
    },
    {
      "id": "cap-podcast-1",
      "group": "Capability",
      "phase": "F11, F13",
      "phase_ids": [
        11,
        13
      ],
      "steps": {
        "11": [
          1,
          2,
          5
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Chuyển nội dung sách thành gói tập podcast",
      "status": "Đang làm",
      "purpose": "Chuyển nội dung sách thành gói tập podcast. Chuẩn bị tập và nội dung từ bản nguồn.",
      "how": "Chọn nội dung, lập kịch bản tập, kiểm quyền và ghi thử mẫu F11. Tạo audio/lưu/phát hành tự động chưa hoàn tất.",
      "input": "Chương nguồn, người dẫn, số tập và mục đích phát hành.",
      "output": "Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "implemented": "Có mã triển khai tại src/lib/podcast/pack.ts. Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/podcast/pack.ts"
      ],
      "location": "/app/books",
      "tool": "podcast"
    },
    {
      "id": "cap-podcast-2",
      "group": "Capability",
      "phase": "F11, F13",
      "phase_ids": [
        11,
        13
      ],
      "steps": {
        "11": [
          1,
          2,
          5
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Chia chương thành tập",
      "status": "Đang làm",
      "purpose": "Chia chương thành tập. Chuẩn bị tập và nội dung từ bản nguồn.",
      "how": "Chọn nội dung, lập kịch bản tập, kiểm quyền và ghi thử mẫu F11. Tạo audio/lưu/phát hành tự động chưa hoàn tất.",
      "input": "Chương nguồn, người dẫn, số tập và mục đích phát hành.",
      "output": "Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "implemented": "Có mã triển khai tại src/lib/podcast/episode-split.ts. Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/podcast/episode-split.ts"
      ],
      "location": "/app/books",
      "tool": "podcast"
    },
    {
      "id": "cap-podcast-3",
      "group": "Capability",
      "phase": "F11, F13",
      "phase_ids": [
        11,
        13
      ],
      "steps": {
        "11": [
          1,
          2,
          5
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Show notes có nguồn",
      "status": "Đang làm",
      "purpose": "Show notes có nguồn. Chuẩn bị tập và nội dung từ bản nguồn.",
      "how": "Chọn nội dung, lập kịch bản tập, kiểm quyền và ghi thử mẫu F11. Tạo audio/lưu/phát hành tự động chưa hoàn tất.",
      "input": "Chương nguồn, người dẫn, số tập và mục đích phát hành.",
      "output": "Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "implemented": "Có mã triển khai tại src/lib/podcast/show-notes.ts. Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/podcast/show-notes.ts"
      ],
      "location": "/app/books",
      "tool": "podcast"
    },
    {
      "id": "cap-podcast-4",
      "group": "Capability",
      "phase": "F11, F13",
      "phase_ids": [
        11,
        13
      ],
      "steps": {
        "11": [
          1,
          2,
          5
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "RSS podcast và metadata",
      "status": "Đang làm",
      "purpose": "RSS podcast và metadata. Chuẩn bị tập và nội dung từ bản nguồn.",
      "how": "Chọn nội dung, lập kịch bản tập, kiểm quyền và ghi thử mẫu F11. Tạo audio/lưu/phát hành tự động chưa hoàn tất.",
      "input": "Chương nguồn, người dẫn, số tập và mục đích phát hành.",
      "output": "Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "implemented": "Có mã triển khai tại src/lib/podcast/rss.ts. Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/podcast/rss.ts"
      ],
      "location": "/app/books",
      "tool": "podcast"
    },
    {
      "id": "cap-podcast-5",
      "group": "Capability",
      "phase": "F11, F13",
      "phase_ids": [
        11,
        13
      ],
      "steps": {
        "11": [
          1,
          2,
          5
        ],
        "13": [
          1
        ]
      },
      "step": "",
      "feature": "Đánh dấu vị trí quảng cáo",
      "status": "Đang làm",
      "purpose": "Đánh dấu vị trí quảng cáo. Chuẩn bị tập và nội dung từ bản nguồn.",
      "how": "Chọn nội dung, lập kịch bản tập, kiểm quyền và ghi thử mẫu F11. Tạo audio/lưu/phát hành tự động chưa hoàn tất.",
      "input": "Chương nguồn, người dẫn, số tập và mục đích phát hành.",
      "output": "Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "implemented": "Có mã triển khai tại src/lib/podcast/ad-markers.ts. Kịch bản tập và gói nội dung; phát hành podcast/audio thật cần integration.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/podcast/ad-markers.ts"
      ],
      "location": "/app/books",
      "tool": "podcast"
    },
    {
      "id": "cap-publish-1",
      "group": "Capability",
      "phase": "F04, F09, F12",
      "phase_ids": [
        4,
        9,
        12
      ],
      "steps": {
        "4": [
          3,
          4
        ],
        "9": [
          3,
          5
        ],
        "12": [
          1,
          2,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Dự toán giá và royalty theo kênh",
      "status": "Đang làm",
      "purpose": "Dự toán giá và royalty theo kênh. Chuẩn bị metadata, giá và route.",
      "how": "Rà điều kiện kênh, ghi đơn thử/release F12; adapter phát hành thật chưa hoàn tất.",
      "input": "Metadata, ISBN/ASIN, locale, SKU, route, giá, quyền và token kênh.",
      "output": "Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "implemented": "Có mã triển khai tại src/lib/publish/pricing.ts. Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/publish/pricing.ts"
      ],
      "location": "/app/books",
      "tool": "publish"
    },
    {
      "id": "cap-publish-2",
      "group": "Capability",
      "phase": "F04, F09, F12",
      "phase_ids": [
        4,
        9,
        12
      ],
      "steps": {
        "4": [
          3,
          4
        ],
        "9": [
          3,
          5
        ],
        "12": [
          1,
          2,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Kiểm lịch phát hành theo điều kiện route",
      "status": "Đang làm",
      "purpose": "Kiểm lịch phát hành theo điều kiện route. Chuẩn bị metadata, giá và route.",
      "how": "Rà điều kiện kênh, ghi đơn thử/release F12; adapter phát hành thật chưa hoàn tất.",
      "input": "Metadata, ISBN/ASIN, locale, SKU, route, giá, quyền và token kênh.",
      "output": "Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "implemented": "Có mã triển khai tại src/lib/publish/release-calendar.ts. Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/publish/release-calendar.ts"
      ],
      "location": "/app/books",
      "tool": "publish"
    },
    {
      "id": "cap-publish-3",
      "group": "Capability",
      "phase": "F04, F09, F12",
      "phase_ids": [
        4,
        9,
        12
      ],
      "steps": {
        "4": [
          3,
          4
        ],
        "9": [
          3,
          5
        ],
        "12": [
          1,
          2,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Gợi ý metadata bằng AI",
      "status": "Đang làm",
      "purpose": "Gợi ý metadata bằng AI. Chuẩn bị metadata, giá và route.",
      "how": "Rà điều kiện kênh, ghi đơn thử/release F12; adapter phát hành thật chưa hoàn tất.",
      "input": "Metadata, ISBN/ASIN, locale, SKU, route, giá, quyền và token kênh.",
      "output": "Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "implemented": "Có mã triển khai tại src/lib/publish/metadata-optimizer.ts. Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/publish/metadata-optimizer.ts"
      ],
      "location": "/app/books",
      "tool": "publish"
    },
    {
      "id": "cap-publish-4",
      "group": "Capability",
      "phase": "F04, F09, F12",
      "phase_ids": [
        4,
        9,
        12
      ],
      "steps": {
        "4": [
          3,
          4
        ],
        "9": [
          3,
          5
        ],
        "12": [
          1,
          2,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Dịch nội dung theo ngôn ngữ đích",
      "status": "Đang làm",
      "purpose": "Dịch nội dung theo ngôn ngữ đích. Chuẩn bị metadata, giá và route.",
      "how": "Rà điều kiện kênh, ghi đơn thử/release F12; adapter phát hành thật chưa hoàn tất.",
      "input": "Metadata, ISBN/ASIN, locale, SKU, route, giá, quyền và token kênh.",
      "output": "Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "implemented": "Có mã triển khai tại src/lib/publish/translate.ts. Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/publish/translate.ts"
      ],
      "location": "/app/books",
      "tool": "publish"
    },
    {
      "id": "cap-publish-5",
      "group": "Capability",
      "phase": "F04, F09, F12",
      "phase_ids": [
        4,
        9,
        12
      ],
      "steps": {
        "4": [
          3,
          4
        ],
        "9": [
          3,
          5
        ],
        "12": [
          1,
          2,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Adapter Gumroad và payload sản phẩm",
      "status": "Đang làm",
      "purpose": "Adapter Gumroad và payload sản phẩm. Chuẩn bị metadata, giá và route.",
      "how": "Rà điều kiện kênh, ghi đơn thử/release F12; adapter phát hành thật chưa hoàn tất.",
      "input": "Metadata, ISBN/ASIN, locale, SKU, route, giá, quyền và token kênh.",
      "output": "Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "implemented": "Có mã triển khai tại src/lib/publish/gumroad.ts. Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/publish/gumroad.ts"
      ],
      "location": "/app/books",
      "tool": "publish"
    },
    {
      "id": "cap-publish-6",
      "group": "Capability",
      "phase": "F04, F09, F12",
      "phase_ids": [
        4,
        9,
        12
      ],
      "steps": {
        "4": [
          3,
          4
        ],
        "9": [
          3,
          5
        ],
        "12": [
          1,
          2,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Adapter Shopify",
      "status": "Đang làm",
      "purpose": "Adapter Shopify. Chuẩn bị metadata, giá và route.",
      "how": "Rà điều kiện kênh, ghi đơn thử/release F12; adapter phát hành thật chưa hoàn tất.",
      "input": "Metadata, ISBN/ASIN, locale, SKU, route, giá, quyền và token kênh.",
      "output": "Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "implemented": "Có mã triển khai tại src/lib/publish/shopify.ts. Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/publish/shopify.ts"
      ],
      "location": "/app/books",
      "tool": "publish"
    },
    {
      "id": "cap-publish-7",
      "group": "Capability",
      "phase": "F04, F09, F12",
      "phase_ids": [
        4,
        9,
        12
      ],
      "steps": {
        "4": [
          3,
          4
        ],
        "9": [
          3,
          5
        ],
        "12": [
          1,
          2,
          4,
          5
        ]
      },
      "step": "",
      "feature": "Adapter Etsy",
      "status": "Đang làm",
      "purpose": "Adapter Etsy. Chuẩn bị metadata, giá và route.",
      "how": "Rà điều kiện kênh, ghi đơn thử/release F12; adapter phát hành thật chưa hoàn tất.",
      "input": "Metadata, ISBN/ASIN, locale, SKU, route, giá, quyền và token kênh.",
      "output": "Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "implemented": "Có mã triển khai tại src/lib/publish/etsy.ts. Metadata/giá/lịch release, bản dịch, payload hoặc kết quả adapter kênh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/publish/etsy.ts"
      ],
      "location": "/app/books",
      "tool": "publish"
    },
    {
      "id": "cap-launch-1",
      "group": "Capability",
      "phase": "F02, F12, F13",
      "phase_ids": [
        2,
        12,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "12": [
          3
        ],
        "13": [
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Bộ nội dung ra mắt đa kênh",
      "status": "Đang làm",
      "purpose": "Bộ nội dung ra mắt đa kênh. Lập lịch và theo dõi việc ra mắt.",
      "how": "Chọn ngày có thể mua, lập các mốc và nhập bằng chứng thực hiện; ghi review30/90 F13.",
      "input": "Bản nguồn, ngày có thể mua, độc giả, campaign, consent và dữ liệu thử.",
      "output": "Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "implemented": "Có mã triển khai tại src/lib/launch/launch-kit.ts. Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/launch/launch-kit.ts"
      ],
      "location": "/app/books",
      "tool": "launch"
    },
    {
      "id": "cap-launch-2",
      "group": "Capability",
      "phase": "F02, F12, F13",
      "phase_ids": [
        2,
        12,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "12": [
          3
        ],
        "13": [
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Trích social snippets từ bản thảo",
      "status": "Đang làm",
      "purpose": "Trích social snippets từ bản thảo. Lập lịch và theo dõi việc ra mắt.",
      "how": "Chọn ngày có thể mua, lập các mốc và nhập bằng chứng thực hiện; ghi review30/90 F13.",
      "input": "Bản nguồn, ngày có thể mua, độc giả, campaign, consent và dữ liệu thử.",
      "output": "Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "implemented": "Có mã triển khai tại src/lib/launch/quote-miner.ts. Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/launch/quote-miner.ts"
      ],
      "location": "/app/books",
      "tool": "launch"
    },
    {
      "id": "cap-launch-3",
      "group": "Capability",
      "phase": "F02, F12, F13",
      "phase_ids": [
        2,
        12,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "12": [
          3
        ],
        "13": [
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Nội dung Amazon A+",
      "status": "Đang làm",
      "purpose": "Nội dung Amazon A+. Lập lịch và theo dõi việc ra mắt.",
      "how": "Chọn ngày có thể mua, lập các mốc và nhập bằng chứng thực hiện; ghi review30/90 F13.",
      "input": "Bản nguồn, ngày có thể mua, độc giả, campaign, consent và dữ liệu thử.",
      "output": "Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "implemented": "Có mã triển khai tại src/lib/launch/aplus.ts. Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/launch/aplus.ts"
      ],
      "location": "/app/books",
      "tool": "launch"
    },
    {
      "id": "cap-launch-4",
      "group": "Capability",
      "phase": "F02, F12, F13",
      "phase_ids": [
        2,
        12,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "12": [
          3
        ],
        "13": [
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Gói lead magnet từ chương sách",
      "status": "Đang làm",
      "purpose": "Gói lead magnet từ chương sách. Lập lịch và theo dõi việc ra mắt.",
      "how": "Chọn ngày có thể mua, lập các mốc và nhập bằng chứng thực hiện; ghi review30/90 F13.",
      "input": "Bản nguồn, ngày có thể mua, độc giả, campaign, consent và dữ liệu thử.",
      "output": "Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "implemented": "Có mã triển khai tại src/lib/launch/lead-magnet.ts. Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/launch/lead-magnet.ts"
      ],
      "location": "/app/books",
      "tool": "launch"
    },
    {
      "id": "cap-launch-5",
      "group": "Capability",
      "phase": "F02, F12, F13",
      "phase_ids": [
        2,
        12,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "12": [
          3
        ],
        "13": [
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Gắn campaign thật vào lịch SOP F13",
      "status": "Đang làm",
      "purpose": "Gắn campaign thật vào lịch SOP F13. Lập lịch và theo dõi việc ra mắt.",
      "how": "Chọn ngày có thể mua, lập các mốc và nhập bằng chứng thực hiện; ghi review30/90 F13.",
      "input": "Bản nguồn, ngày có thể mua, độc giả, campaign, consent và dữ liệu thử.",
      "output": "Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "implemented": "Có mã triển khai tại src/lib/launch/sop-schedule.ts. Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/launch/sop-schedule.ts"
      ],
      "location": "/app/books",
      "tool": "launch"
    },
    {
      "id": "cap-launch-6",
      "group": "Capability",
      "phase": "F02, F12, F13",
      "phase_ids": [
        2,
        12,
        13
      ],
      "steps": {
        "2": [
          6
        ],
        "12": [
          3
        ],
        "13": [
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Soạn yêu cầu review tự nguyện",
      "status": "Đang làm",
      "purpose": "Soạn yêu cầu review tự nguyện. Lập lịch và theo dõi việc ra mắt.",
      "how": "Chọn ngày có thể mua, lập các mốc và nhập bằng chứng thực hiện; ghi review30/90 F13.",
      "input": "Bản nguồn, ngày có thể mua, độc giả, campaign, consent và dữ liệu thử.",
      "output": "Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "implemented": "Có mã triển khai tại src/lib/launch/review-request.ts. Launch kit, snippet, A+, lead magnet, lịch SOP và thông điệp thử.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/launch/review-request.ts"
      ],
      "location": "/app/books",
      "tool": "launch"
    },
    {
      "id": "cap-sales-1",
      "group": "Capability",
      "phase": "F04, F13, F14",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [
          3,
          4,
          5
        ],
        "13": [
          4,
          5,
          6
        ],
        "14": [
          1,
          2,
          3,
          6
        ]
      },
      "step": "",
      "feature": "Nhập CSV doanh số KDP",
      "status": "Đã xong",
      "purpose": "Nhập CSV doanh số KDP. Theo dõi giả định, kết quả và đóng góp.",
      "how": "Nhập số liệu có nguồn/kỳ, tách quan sát và ước tính; dùng sổ F14 để đối soát.",
      "input": "CSV báo cáo có kỳ/nguồn, tiền tệ, SKU, thử giá và dữ liệu cohort.",
      "output": "Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "implemented": "Có mã triển khai tại src/lib/sales/import-kdp.ts. Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/sales/import-kdp.ts"
      ],
      "location": "/app/books",
      "tool": "sales"
    },
    {
      "id": "cap-sales-2",
      "group": "Capability",
      "phase": "F04, F13, F14",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [
          3,
          4,
          5
        ],
        "13": [
          4,
          5,
          6
        ],
        "14": [
          1,
          2,
          3,
          6
        ]
      },
      "step": "",
      "feature": "Nhập CSV Gumroad",
      "status": "Đã xong",
      "purpose": "Nhập CSV Gumroad. Theo dõi giả định, kết quả và đóng góp.",
      "how": "Nhập số liệu có nguồn/kỳ, tách quan sát và ước tính; dùng sổ F14 để đối soát.",
      "input": "CSV báo cáo có kỳ/nguồn, tiền tệ, SKU, thử giá và dữ liệu cohort.",
      "output": "Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "implemented": "Có mã triển khai tại src/lib/sales/import-gumroad.ts. Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/sales/import-gumroad.ts"
      ],
      "location": "/app/books",
      "tool": "sales"
    },
    {
      "id": "cap-sales-3",
      "group": "Capability",
      "phase": "F04, F13, F14",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [
          3,
          4,
          5
        ],
        "13": [
          4,
          5,
          6
        ],
        "14": [
          1,
          2,
          3,
          6
        ]
      },
      "step": "",
      "feature": "Nhập CSV Etsy",
      "status": "Đã xong",
      "purpose": "Nhập CSV Etsy. Theo dõi giả định, kết quả và đóng góp.",
      "how": "Nhập số liệu có nguồn/kỳ, tách quan sát và ước tính; dùng sổ F14 để đối soát.",
      "input": "CSV báo cáo có kỳ/nguồn, tiền tệ, SKU, thử giá và dữ liệu cohort.",
      "output": "Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "implemented": "Có mã triển khai tại src/lib/sales/import-etsy.ts. Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "remaining": "Phạm vi đã xong là chức năng tại máy; nghiệm thu nội dung và tích hợp ngoài vẫn làm riêng.",
      "scope": "Logic/công cụ tại máy",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/sales/import-etsy.ts"
      ],
      "location": "/app/books",
      "tool": "sales"
    },
    {
      "id": "cap-sales-4",
      "group": "Capability",
      "phase": "F04, F13, F14",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [
          3,
          4,
          5
        ],
        "13": [
          4,
          5,
          6
        ],
        "14": [
          1,
          2,
          3,
          6
        ]
      },
      "step": "",
      "feature": "Tổng hợp sales import và lỗi dòng",
      "status": "Đang làm",
      "purpose": "Tổng hợp sales import và lỗi dòng. Theo dõi giả định, kết quả và đóng góp.",
      "how": "Nhập số liệu có nguồn/kỳ, tách quan sát và ước tính; dùng sổ F14 để đối soát.",
      "input": "CSV báo cáo có kỳ/nguồn, tiền tệ, SKU, thử giá và dữ liệu cohort.",
      "output": "Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "implemented": "Có mã triển khai tại src/lib/sales/sales-import.ts. Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/sales/sales-import.ts"
      ],
      "location": "/app/books",
      "tool": "sales"
    },
    {
      "id": "cap-sales-5",
      "group": "Capability",
      "phase": "F04, F13, F14",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [
          3,
          4,
          5
        ],
        "13": [
          4,
          5,
          6
        ],
        "14": [
          1,
          2,
          3,
          6
        ]
      },
      "step": "",
      "feature": "Tính margin/đóng góp tách tiền về",
      "status": "Đang làm",
      "purpose": "Tính margin/đóng góp tách tiền về. Theo dõi giả định, kết quả và đóng góp.",
      "how": "Nhập số liệu có nguồn/kỳ, tách quan sát và ước tính; dùng sổ F14 để đối soát.",
      "input": "CSV báo cáo có kỳ/nguồn, tiền tệ, SKU, thử giá và dữ liệu cohort.",
      "output": "Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "implemented": "Có mã triển khai tại src/lib/sales/margin.ts. Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/sales/margin.ts"
      ],
      "location": "/app/books",
      "tool": "sales"
    },
    {
      "id": "cap-sales-6",
      "group": "Capability",
      "phase": "F04, F13, F14",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [
          3,
          4,
          5
        ],
        "13": [
          4,
          5,
          6
        ],
        "14": [
          1,
          2,
          3,
          6
        ]
      },
      "step": "",
      "feature": "Quy đổi FX với căn cứ tỷ giá",
      "status": "Đang làm",
      "purpose": "Quy đổi FX với căn cứ tỷ giá. Theo dõi giả định, kết quả và đóng góp.",
      "how": "Nhập số liệu có nguồn/kỳ, tách quan sát và ước tính; dùng sổ F14 để đối soát.",
      "input": "CSV báo cáo có kỳ/nguồn, tiền tệ, SKU, thử giá và dữ liệu cohort.",
      "output": "Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "implemented": "Có mã triển khai tại src/lib/sales/fx.ts. Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/sales/fx.ts"
      ],
      "location": "/app/books",
      "tool": "sales"
    },
    {
      "id": "cap-sales-7",
      "group": "Capability",
      "phase": "F04, F13, F14",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [
          3,
          4,
          5
        ],
        "13": [
          4,
          5,
          6
        ],
        "14": [
          1,
          2,
          3,
          6
        ]
      },
      "step": "",
      "feature": "Đánh giá thử nghiệm giá",
      "status": "Đang làm",
      "purpose": "Đánh giá thử nghiệm giá. Theo dõi giả định, kết quả và đóng góp.",
      "how": "Nhập số liệu có nguồn/kỳ, tách quan sát và ước tính; dùng sổ F14 để đối soát.",
      "input": "CSV báo cáo có kỳ/nguồn, tiền tệ, SKU, thử giá và dữ liệu cohort.",
      "output": "Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "implemented": "Có mã triển khai tại src/lib/sales/price-experiment.ts. Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/sales/price-experiment.ts"
      ],
      "location": "/app/books",
      "tool": "sales"
    },
    {
      "id": "cap-sales-8",
      "group": "Capability",
      "phase": "F04, F13, F14",
      "phase_ids": [
        4,
        13,
        14
      ],
      "steps": {
        "4": [
          3,
          4,
          5
        ],
        "13": [
          4,
          5,
          6
        ],
        "14": [
          1,
          2,
          3,
          6
        ]
      },
      "step": "",
      "feature": "Lập kế hoạch series từ số liệu",
      "status": "Đang làm",
      "purpose": "Lập kế hoạch series từ số liệu. Theo dõi giả định, kết quả và đóng góp.",
      "how": "Nhập số liệu có nguồn/kỳ, tách quan sát và ước tính; dùng sổ F14 để đối soát.",
      "input": "CSV báo cáo có kỳ/nguồn, tiền tệ, SKU, thử giá và dữ liệu cohort.",
      "output": "Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "implemented": "Có mã triển khai tại src/lib/sales/series-planner.ts. Dữ liệu nhập chuẩn hóa, margin, FX, thử nghiệm giá và đề xuất series.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/sales/series-planner.ts"
      ],
      "location": "/app/books",
      "tool": "sales"
    },
    {
      "id": "cap-collab-1",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1,
          6
        ],
        "8": [
          1,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Comment threads và trạng thái xử lý",
      "status": "Đang làm",
      "purpose": "Comment threads và trạng thái xử lý. Ghi phân công và theo dõi bàn giao.",
      "how": "Rà người phụ trách/quyền và phiên bản giao; cộng tác CRDT thời gian thực chưa hoàn tất.",
      "input": "Người tham gia, block/chapter IDs, revision, comment và operation log.",
      "output": "Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "implemented": "Có mã triển khai tại src/lib/collab/comments.ts. Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/collab/comments.ts"
      ],
      "location": "/app/books",
      "tool": "collab"
    },
    {
      "id": "cap-collab-2",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1,
          6
        ],
        "8": [
          1,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Chapter approval có người chịu trách nhiệm",
      "status": "Đang làm",
      "purpose": "Chapter approval có người chịu trách nhiệm. Ghi phân công và theo dõi bàn giao.",
      "how": "Rà người phụ trách/quyền và phiên bản giao; cộng tác CRDT thời gian thực chưa hoàn tất.",
      "input": "Người tham gia, block/chapter IDs, revision, comment và operation log.",
      "output": "Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "implemented": "Có mã triển khai tại src/lib/collab/comments-approval.ts. Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/collab/comments-approval.ts"
      ],
      "location": "/app/books",
      "tool": "collab"
    },
    {
      "id": "cap-collab-3",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1,
          6
        ],
        "8": [
          1,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Đối chiếu và giải xung đột block",
      "status": "Đang làm",
      "purpose": "Đối chiếu và giải xung đột block. Ghi phân công và theo dõi bàn giao.",
      "how": "Rà người phụ trách/quyền và phiên bản giao; cộng tác CRDT thời gian thực chưa hoàn tất.",
      "input": "Người tham gia, block/chapter IDs, revision, comment và operation log.",
      "output": "Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "implemented": "Có mã triển khai tại src/lib/collab/merge.ts. Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/collab/merge.ts"
      ],
      "location": "/app/books",
      "tool": "collab"
    },
    {
      "id": "cap-collab-4",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1,
          6
        ],
        "8": [
          1,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Operation log và phát lại thay đổi",
      "status": "Đang làm",
      "purpose": "Operation log và phát lại thay đổi. Ghi phân công và theo dõi bàn giao.",
      "how": "Rà người phụ trách/quyền và phiên bản giao; cộng tác CRDT thời gian thực chưa hoàn tất.",
      "input": "Người tham gia, block/chapter IDs, revision, comment và operation log.",
      "output": "Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "implemented": "Có mã triển khai tại src/lib/collab/oplog.ts. Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/collab/oplog.ts"
      ],
      "location": "/app/books",
      "tool": "collab"
    },
    {
      "id": "cap-collab-5",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1,
          6
        ],
        "8": [
          1,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Nguồn operation log từ Yjs",
      "status": "Đang làm",
      "purpose": "Nguồn operation log từ Yjs. Ghi phân công và theo dõi bàn giao.",
      "how": "Rà người phụ trách/quyền và phiên bản giao; cộng tác CRDT thời gian thực chưa hoàn tất.",
      "input": "Người tham gia, block/chapter IDs, revision, comment và operation log.",
      "output": "Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "implemented": "Có mã triển khai tại src/lib/collab/yjs-oplog-source.ts. Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/collab/yjs-oplog-source.ts"
      ],
      "location": "/app/books",
      "tool": "collab"
    },
    {
      "id": "cap-collab-6",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1,
          6
        ],
        "8": [
          1,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Transport đồng bộ Yjs",
      "status": "Đang làm",
      "purpose": "Transport đồng bộ Yjs. Ghi phân công và theo dõi bàn giao.",
      "how": "Rà người phụ trách/quyền và phiên bản giao; cộng tác CRDT thời gian thực chưa hoàn tất.",
      "input": "Người tham gia, block/chapter IDs, revision, comment và operation log.",
      "output": "Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "implemented": "Có mã triển khai tại src/lib/collab/yjs-transport.ts. Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/collab/yjs-transport.ts"
      ],
      "location": "/app/books",
      "tool": "collab"
    },
    {
      "id": "cap-collab-7",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1,
          6
        ],
        "8": [
          1,
          5,
          6
        ]
      },
      "step": "",
      "feature": "Command palette cho tác vụ biên tập",
      "status": "Đang làm",
      "purpose": "Command palette cho tác vụ biên tập. Ghi phân công và theo dõi bàn giao.",
      "how": "Rà người phụ trách/quyền và phiên bản giao; cộng tác CRDT thời gian thực chưa hoàn tất.",
      "input": "Người tham gia, block/chapter IDs, revision, comment và operation log.",
      "output": "Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "implemented": "Có mã triển khai tại src/lib/collab/command-palette.ts. Threads, trạng thái duyệt, merge/conflict và operation Yjs; transport thật cần xác minh.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/collab/command-palette.ts"
      ],
      "location": "/app/books",
      "tool": "collab"
    },
    {
      "id": "cap-eval-1",
      "group": "Capability",
      "phase": "F06, F08, F14",
      "phase_ids": [
        6,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "8": [
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Rubric chấm prompt và output",
      "status": "Đang làm",
      "purpose": "Rubric chấm prompt và output. So sánh mẫu đầu ra trước khi dùng cấu hình viết.",
      "how": "Lập tiêu chí, chọn mẫu và ghi kết quả thử; xác nhận cấu hình với mẫu F06. Benchmark và telemetry thật còn cần hoàn thiện.",
      "input": "Prompt pack, rubric, mẫu, model/tier và kết quả chạy.",
      "output": "Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "implemented": "Có mã triển khai tại src/lib/eval/rubric.ts. Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/eval/rubric.ts"
      ],
      "location": "/app/books",
      "tool": "eval"
    },
    {
      "id": "cap-eval-2",
      "group": "Capability",
      "phase": "F06, F08, F14",
      "phase_ids": [
        6,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "8": [
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Prompt packs theo tác vụ",
      "status": "Đang làm",
      "purpose": "Prompt packs theo tác vụ. So sánh mẫu đầu ra trước khi dùng cấu hình viết.",
      "how": "Lập tiêu chí, chọn mẫu và ghi kết quả thử; xác nhận cấu hình với mẫu F06. Benchmark và telemetry thật còn cần hoàn thiện.",
      "input": "Prompt pack, rubric, mẫu, model/tier và kết quả chạy.",
      "output": "Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "implemented": "Có mã triển khai tại src/lib/eval/prompt-packs.ts. Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/eval/prompt-packs.ts"
      ],
      "location": "/app/books",
      "tool": "eval"
    },
    {
      "id": "cap-eval-3",
      "group": "Capability",
      "phase": "F06, F08, F14",
      "phase_ids": [
        6,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "8": [
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Benchmark nhiều prompt/model",
      "status": "Đang làm",
      "purpose": "Benchmark nhiều prompt/model. So sánh mẫu đầu ra trước khi dùng cấu hình viết.",
      "how": "Lập tiêu chí, chọn mẫu và ghi kết quả thử; xác nhận cấu hình với mẫu F06. Benchmark và telemetry thật còn cần hoàn thiện.",
      "input": "Prompt pack, rubric, mẫu, model/tier và kết quả chạy.",
      "output": "Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "implemented": "Có mã triển khai tại src/lib/eval/benchmark.ts. Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/eval/benchmark.ts"
      ],
      "location": "/app/books",
      "tool": "eval"
    },
    {
      "id": "cap-eval-4",
      "group": "Capability",
      "phase": "F06, F08, F14",
      "phase_ids": [
        6,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "8": [
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "So sánh A/B và thống kê",
      "status": "Đang làm",
      "purpose": "So sánh A/B và thống kê. So sánh mẫu đầu ra trước khi dùng cấu hình viết.",
      "how": "Lập tiêu chí, chọn mẫu và ghi kết quả thử; xác nhận cấu hình với mẫu F06. Benchmark và telemetry thật còn cần hoàn thiện.",
      "input": "Prompt pack, rubric, mẫu, model/tier và kết quả chạy.",
      "output": "Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "implemented": "Có mã triển khai tại src/lib/eval/ab.ts. Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/eval/ab.ts"
      ],
      "location": "/app/books",
      "tool": "eval"
    },
    {
      "id": "cap-eval-5",
      "group": "Capability",
      "phase": "F06, F08, F14",
      "phase_ids": [
        6,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "8": [
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Replay một lần chạy",
      "status": "Đang làm",
      "purpose": "Replay một lần chạy. So sánh mẫu đầu ra trước khi dùng cấu hình viết.",
      "how": "Lập tiêu chí, chọn mẫu và ghi kết quả thử; xác nhận cấu hình với mẫu F06. Benchmark và telemetry thật còn cần hoàn thiện.",
      "input": "Prompt pack, rubric, mẫu, model/tier và kết quả chạy.",
      "output": "Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "implemented": "Có mã triển khai tại src/lib/eval/replay.ts. Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/eval/replay.ts"
      ],
      "location": "/app/books",
      "tool": "eval"
    },
    {
      "id": "cap-eval-6",
      "group": "Capability",
      "phase": "F06, F08, F14",
      "phase_ids": [
        6,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "8": [
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Theo dõi xu hướng chất lượng",
      "status": "Đang làm",
      "purpose": "Theo dõi xu hướng chất lượng. So sánh mẫu đầu ra trước khi dùng cấu hình viết.",
      "how": "Lập tiêu chí, chọn mẫu và ghi kết quả thử; xác nhận cấu hình với mẫu F06. Benchmark và telemetry thật còn cần hoàn thiện.",
      "input": "Prompt pack, rubric, mẫu, model/tier và kết quả chạy.",
      "output": "Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "implemented": "Có mã triển khai tại src/lib/eval/trends.ts. Benchmark, so A/B, replay và thống kê; màn hình demo không chứng minh chạy provider.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/eval/trends.ts"
      ],
      "location": "/app/books",
      "tool": "eval"
    },
    {
      "id": "cap-trust-1",
      "group": "Capability",
      "phase": "F05, F08, F10, F12",
      "phase_ids": [
        5,
        8,
        10,
        12
      ],
      "steps": {
        "5": [
          1,
          3,
          4,
          5
        ],
        "8": [
          2
        ],
        "10": [
          5
        ],
        "12": [
          1,
          2,
          3
        ]
      },
      "step": "",
      "feature": "Ghi provenance và đối chiếu nguồn nội dung",
      "status": "Đang làm",
      "purpose": "Ghi provenance và đối chiếu nguồn nội dung. Quản lý quyền, consent và điều kiện sử dụng.",
      "how": "Ghi bằng chứng quyền theo tài nguyên; đối chiếu hồ sơ F05 trước sản xuất/phát hành.",
      "input": "Quyền, consent, provenance, disclosure, policy và phạm vi kênh.",
      "output": "Cảnh báo tuân thủ, hồ sơ quyền và kết quả kiểm trước phát hành.",
      "implemented": "Có mã triển khai tại src/lib/trust/provenance.ts. Cảnh báo tuân thủ, hồ sơ quyền và kết quả kiểm trước phát hành.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/trust/provenance.ts"
      ],
      "location": "/app/books",
      "tool": "trust"
    },
    {
      "id": "cap-trust-2",
      "group": "Capability",
      "phase": "F05, F08, F10, F12",
      "phase_ids": [
        5,
        8,
        10,
        12
      ],
      "steps": {
        "5": [
          1,
          3,
          4,
          5
        ],
        "8": [
          2
        ],
        "10": [
          5
        ],
        "12": [
          1,
          2,
          3
        ]
      },
      "step": "",
      "feature": "Kiểm điều kiện/policy phát hành",
      "status": "Đang làm",
      "purpose": "Kiểm điều kiện/policy phát hành. Quản lý quyền, consent và điều kiện sử dụng.",
      "how": "Ghi bằng chứng quyền theo tài nguyên; đối chiếu hồ sơ F05 trước sản xuất/phát hành.",
      "input": "Quyền, consent, provenance, disclosure, policy và phạm vi kênh.",
      "output": "Cảnh báo tuân thủ, hồ sơ quyền và kết quả kiểm trước phát hành.",
      "implemented": "Có mã triển khai tại src/lib/trust/policy.ts. Cảnh báo tuân thủ, hồ sơ quyền và kết quả kiểm trước phát hành.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/trust/policy.ts"
      ],
      "location": "/app/books",
      "tool": "trust"
    },
    {
      "id": "cap-trust-3",
      "group": "Capability",
      "phase": "F05, F08, F10, F12",
      "phase_ids": [
        5,
        8,
        10,
        12
      ],
      "steps": {
        "5": [
          1,
          3,
          4,
          5
        ],
        "8": [
          2
        ],
        "10": [
          5
        ],
        "12": [
          1,
          2,
          3
        ]
      },
      "step": "",
      "feature": "Sao lưu và khôi phục hồ sơ tin cậy",
      "status": "Đang làm",
      "purpose": "Sao lưu và khôi phục hồ sơ tin cậy. Quản lý quyền, consent và điều kiện sử dụng.",
      "how": "Ghi bằng chứng quyền theo tài nguyên; đối chiếu hồ sơ F05 trước sản xuất/phát hành.",
      "input": "Quyền, consent, provenance, disclosure, policy và phạm vi kênh.",
      "output": "Cảnh báo tuân thủ, hồ sơ quyền và kết quả kiểm trước phát hành.",
      "implemented": "Có mã triển khai tại src/lib/trust/backup.ts. Cảnh báo tuân thủ, hồ sơ quyền và kết quả kiểm trước phát hành.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/trust/backup.ts"
      ],
      "location": "/app/books",
      "tool": "trust"
    },
    {
      "id": "cap-enterprise-1",
      "group": "Capability",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {
        "5": [
          2,
          5
        ],
        "14": [
          5,
          6
        ]
      },
      "step": "",
      "feature": "Quản trị đội và vai trò tổ chức",
      "status": "Đang làm",
      "purpose": "Quản trị đội và vai trò tổ chức. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Tổ chức, đội, vai trò, license và nhu cầu agency/SSO.",
      "output": "Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "implemented": "Có mã triển khai tại src/lib/enterprise/team-roles.ts. Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/enterprise/team-roles.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "cap-enterprise-2",
      "group": "Capability",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {
        "5": [
          2,
          5
        ],
        "14": [
          5,
          6
        ]
      },
      "step": "",
      "feature": "Hồ sơ white label",
      "status": "Đang làm",
      "purpose": "Hồ sơ white label. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Tổ chức, đội, vai trò, license và nhu cầu agency/SSO.",
      "output": "Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "implemented": "Có mã triển khai tại src/lib/enterprise/white-label.ts. Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/enterprise/white-label.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "cap-enterprise-3",
      "group": "Capability",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {
        "5": [
          2,
          5
        ],
        "14": [
          5,
          6
        ]
      },
      "step": "",
      "feature": "Hồ sơ đơn dịch vụ done-for-you",
      "status": "Đang làm",
      "purpose": "Hồ sơ đơn dịch vụ done-for-you. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Tổ chức, đội, vai trò, license và nhu cầu agency/SSO.",
      "output": "Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "implemented": "Có mã triển khai tại src/lib/enterprise/dfy.ts. Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/enterprise/dfy.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "cap-enterprise-4",
      "group": "Capability",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {
        "5": [
          2,
          5
        ],
        "14": [
          5,
          6
        ]
      },
      "step": "",
      "feature": "Điều kiện SSO và SCIM",
      "status": "Đang làm",
      "purpose": "Điều kiện SSO và SCIM. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Tổ chức, đội, vai trò, license và nhu cầu agency/SSO.",
      "output": "Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "implemented": "Có mã triển khai tại src/lib/enterprise/scim.ts. Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/enterprise/scim.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "cap-enterprise-5",
      "group": "Capability",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {
        "5": [
          2,
          5
        ],
        "14": [
          5,
          6
        ]
      },
      "step": "",
      "feature": "Giới hạn ngân sách tổ chức",
      "status": "Đang làm",
      "purpose": "Giới hạn ngân sách tổ chức. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Tổ chức, đội, vai trò, license và nhu cầu agency/SSO.",
      "output": "Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "implemented": "Có mã triển khai tại src/lib/enterprise/budget.ts. Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/enterprise/budget.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "cap-enterprise-6",
      "group": "Capability",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {
        "5": [
          2,
          5
        ],
        "14": [
          5,
          6
        ]
      },
      "step": "",
      "feature": "Quản lý seats",
      "status": "Đang làm",
      "purpose": "Quản lý seats. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Tổ chức, đội, vai trò, license và nhu cầu agency/SSO.",
      "output": "Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "implemented": "Có mã triển khai tại src/lib/enterprise/team-seats.ts. Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/enterprise/team-seats.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "cap-enterprise-7",
      "group": "Capability",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {
        "5": [
          2,
          5
        ],
        "14": [
          5,
          6
        ]
      },
      "step": "",
      "feature": "Client portal cho agency",
      "status": "Đang làm",
      "purpose": "Client portal cho agency. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Tổ chức, đội, vai trò, license và nhu cầu agency/SSO.",
      "output": "Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "implemented": "Có mã triển khai tại src/lib/enterprise/client-portal.ts. Kiểm quyền và cấu hình doanh nghiệp; identity/settlement thật còn cần tích hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/enterprise/client-portal.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "cap-ops-1",
      "group": "Capability",
      "phase": "F14",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          3,
          4,
          6
        ]
      },
      "step": "",
      "feature": "Quan sát tác vụ và sự cố vận hành",
      "status": "Đang làm",
      "purpose": "Quan sát tác vụ và sự cố vận hành. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Trạng thái job, lỗi, lần retry, SLA và nghĩa vụ cập nhật.",
      "output": "Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "implemented": "Có mã triển khai tại src/lib/ops/observability.ts. Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ops/observability.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-ops-2",
      "group": "Capability",
      "phase": "F14",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          3,
          4,
          6
        ]
      },
      "step": "",
      "feature": "Diễn tập phục hồi sự cố và sao lưu",
      "status": "Đang làm",
      "purpose": "Diễn tập phục hồi sự cố và sao lưu. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Trạng thái job, lỗi, lần retry, SLA và nghĩa vụ cập nhật.",
      "output": "Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "implemented": "Có mã triển khai tại src/lib/ops/dr-drill.ts. Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ops/dr-drill.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-ops-3",
      "group": "Capability",
      "phase": "F14",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          3,
          4,
          6
        ]
      },
      "step": "",
      "feature": "Xuất audit pack và lọc dữ liệu nhạy cảm",
      "status": "Đang làm",
      "purpose": "Xuất audit pack và lọc dữ liệu nhạy cảm. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Trạng thái job, lỗi, lần retry, SLA và nghĩa vụ cập nhật.",
      "output": "Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "implemented": "Có mã triển khai tại src/lib/ops/audit-export.ts. Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ops/audit-export.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-ops-4",
      "group": "Capability",
      "phase": "F14",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          3,
          4,
          6
        ]
      },
      "step": "",
      "feature": "Công bằng hàng đợi tác vụ",
      "status": "Đang làm",
      "purpose": "Công bằng hàng đợi tác vụ. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Trạng thái job, lỗi, lần retry, SLA và nghĩa vụ cập nhật.",
      "output": "Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "implemented": "Có mã triển khai tại src/lib/ops/queue-fairness.ts. Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ops/queue-fairness.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-ops-5",
      "group": "Capability",
      "phase": "F14",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          3,
          4,
          6
        ]
      },
      "step": "",
      "feature": "Kiểm sức khỏe khóa nhà cung cấp",
      "status": "Đang làm",
      "purpose": "Kiểm sức khỏe khóa nhà cung cấp. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Trạng thái job, lỗi, lần retry, SLA và nghĩa vụ cập nhật.",
      "output": "Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "implemented": "Có mã triển khai tại src/lib/ops/key-health.ts. Báo cáo sự cố, theo dõi runtime và hướng xử lý vận hành.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/ops/key-health.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-marketplace-1",
      "group": "Capability",
      "phase": "F12, F14",
      "phase_ids": [
        12,
        14
      ],
      "steps": {
        "12": [
          1,
          2,
          4,
          5
        ],
        "14": [
          5
        ]
      },
      "step": "",
      "feature": "Kiểm điều kiện listing trước đưa lên chợ",
      "status": "Đang làm",
      "purpose": "Kiểm điều kiện listing trước đưa lên chợ. Chuẩn bị listing và điều kiện bán/cấp quyền.",
      "how": "Rà mô tả, quyền, route và giao nhận tại F12; checkout, settlement và giao hàng thật của marketplace chưa hoàn tất.",
      "input": "Listing, blueprint, checklist quyền và đơn hàng.",
      "output": "Bản listing/checklist/lợi nhuận; chợ giao dịch và settlement thật chưa hoàn tất.",
      "implemented": "Có mã triển khai tại src/lib/marketplace/checklist.ts. Bản listing/checklist/lợi nhuận; chợ giao dịch và settlement thật chưa hoàn tất.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/marketplace/checklist.ts"
      ],
      "location": "/app/books",
      "tool": "marketplace"
    },
    {
      "id": "cap-marketplace-2",
      "group": "Capability",
      "phase": "F12, F14",
      "phase_ids": [
        12,
        14
      ],
      "steps": {
        "12": [
          1,
          2,
          4,
          5
        ],
        "14": [
          5
        ]
      },
      "step": "",
      "feature": "Gói blueprint để bán/cấp phép",
      "status": "Đang làm",
      "purpose": "Gói blueprint để bán/cấp phép. Chuẩn bị listing và điều kiện bán/cấp quyền.",
      "how": "Rà mô tả, quyền, route và giao nhận tại F12; checkout, settlement và giao hàng thật của marketplace chưa hoàn tất.",
      "input": "Listing, blueprint, checklist quyền và đơn hàng.",
      "output": "Bản listing/checklist/lợi nhuận; chợ giao dịch và settlement thật chưa hoàn tất.",
      "implemented": "Có mã triển khai tại src/lib/marketplace/blueprint.ts. Bản listing/checklist/lợi nhuận; chợ giao dịch và settlement thật chưa hoàn tất.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/marketplace/blueprint.ts"
      ],
      "location": "/app/books",
      "tool": "marketplace"
    },
    {
      "id": "cap-marketplace-3",
      "group": "Capability",
      "phase": "F12, F14",
      "phase_ids": [
        12,
        14
      ],
      "steps": {
        "12": [
          1,
          2,
          4,
          5
        ],
        "14": [
          5
        ]
      },
      "step": "",
      "feature": "Dự toán lợi nhuận listing",
      "status": "Đang làm",
      "purpose": "Dự toán lợi nhuận listing. Chuẩn bị listing và điều kiện bán/cấp quyền.",
      "how": "Rà mô tả, quyền, route và giao nhận tại F12; checkout, settlement và giao hàng thật của marketplace chưa hoàn tất.",
      "input": "Listing, blueprint, checklist quyền và đơn hàng.",
      "output": "Bản listing/checklist/lợi nhuận; chợ giao dịch và settlement thật chưa hoàn tất.",
      "implemented": "Có mã triển khai tại src/lib/marketplace/profit.ts. Bản listing/checklist/lợi nhuận; chợ giao dịch và settlement thật chưa hoàn tất.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/marketplace/profit.ts"
      ],
      "location": "/app/books",
      "tool": "marketplace"
    },
    {
      "id": "cap-debate-1",
      "group": "Capability",
      "phase": "F06, F08",
      "phase_ids": [
        6,
        8
      ],
      "steps": {
        "6": [
          5
        ],
        "8": [
          1,
          3,
          5
        ]
      },
      "step": "",
      "feature": "Quản lý persona người đánh giá",
      "status": "Đang làm",
      "purpose": "Quản lý persona người đánh giá. Rà cấu trúc, câu và vấn đề còn mở.",
      "how": "Chọn chương, đọc nhận xét và sửa; ghi lỗi cùng bằng chứng kiểm lại tại F08.",
      "input": "Persona, bản thảo, tiêu chí, ngân sách và cấu hình phiên review.",
      "output": "Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "implemented": "Có mã triển khai tại src/lib/debate/personas.ts. Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/debate/personas.ts"
      ],
      "location": "/app/books",
      "tool": "review"
    },
    {
      "id": "cap-debate-2",
      "group": "Capability",
      "phase": "F06, F08",
      "phase_ids": [
        6,
        8
      ],
      "steps": {
        "6": [
          5
        ],
        "8": [
          1,
          3,
          5
        ]
      },
      "step": "",
      "feature": "Chạy phiên đánh giá nhiều vai trò",
      "status": "Đang làm",
      "purpose": "Chạy phiên đánh giá nhiều vai trò. Rà cấu trúc, câu và vấn đề còn mở.",
      "how": "Chọn chương, đọc nhận xét và sửa; ghi lỗi cùng bằng chứng kiểm lại tại F08.",
      "input": "Persona, bản thảo, tiêu chí, ngân sách và cấu hình phiên review.",
      "output": "Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "implemented": "Có mã triển khai tại src/lib/debate/session-runner.ts. Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/debate/session-runner.ts"
      ],
      "location": "/app/books",
      "tool": "review"
    },
    {
      "id": "cap-debate-3",
      "group": "Capability",
      "phase": "F06, F08",
      "phase_ids": [
        6,
        8
      ],
      "steps": {
        "6": [
          5
        ],
        "8": [
          1,
          3,
          5
        ]
      },
      "step": "",
      "feature": "Tổng hợp đánh giá và điểm bất đồng",
      "status": "Đang làm",
      "purpose": "Tổng hợp đánh giá và điểm bất đồng. Rà cấu trúc, câu và vấn đề còn mở.",
      "how": "Chọn chương, đọc nhận xét và sửa; ghi lỗi cùng bằng chứng kiểm lại tại F08.",
      "input": "Persona, bản thảo, tiêu chí, ngân sách và cấu hình phiên review.",
      "output": "Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "implemented": "Có mã triển khai tại src/lib/debate/synthesize.ts. Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/debate/synthesize.ts"
      ],
      "location": "/app/books",
      "tool": "review"
    },
    {
      "id": "cap-debate-4",
      "group": "Capability",
      "phase": "F06, F08",
      "phase_ids": [
        6,
        8
      ],
      "steps": {
        "6": [
          5
        ],
        "8": [
          1,
          3,
          5
        ]
      },
      "step": "",
      "feature": "Consensus và điều kiện dừng",
      "status": "Đang làm",
      "purpose": "Consensus và điều kiện dừng. Rà cấu trúc, câu và vấn đề còn mở.",
      "how": "Chọn chương, đọc nhận xét và sửa; ghi lỗi cùng bằng chứng kiểm lại tại F08.",
      "input": "Persona, bản thảo, tiêu chí, ngân sách và cấu hình phiên review.",
      "output": "Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "implemented": "Có mã triển khai tại src/lib/debate/consensus.ts. Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/debate/consensus.ts"
      ],
      "location": "/app/books",
      "tool": "review"
    },
    {
      "id": "cap-debate-5",
      "group": "Capability",
      "phase": "F06, F08",
      "phase_ids": [
        6,
        8
      ],
      "steps": {
        "6": [
          5
        ],
        "8": [
          1,
          3,
          5
        ]
      },
      "step": "",
      "feature": "So A/B trong phiên review",
      "status": "Đang làm",
      "purpose": "So A/B trong phiên review. Rà cấu trúc, câu và vấn đề còn mở.",
      "how": "Chọn chương, đọc nhận xét và sửa; ghi lỗi cùng bằng chứng kiểm lại tại F08.",
      "input": "Persona, bản thảo, tiêu chí, ngân sách và cấu hình phiên review.",
      "output": "Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "implemented": "Có mã triển khai tại src/lib/debate/session-ab.ts. Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/debate/session-ab.ts"
      ],
      "location": "/app/books",
      "tool": "review"
    },
    {
      "id": "cap-debate-6",
      "group": "Capability",
      "phase": "F06, F08",
      "phase_ids": [
        6,
        8
      ],
      "steps": {
        "6": [
          5
        ],
        "8": [
          1,
          3,
          5
        ]
      },
      "step": "",
      "feature": "Ước tính chi phí review",
      "status": "Đang làm",
      "purpose": "Ước tính chi phí review. Rà cấu trúc, câu và vấn đề còn mở.",
      "how": "Chọn chương, đọc nhận xét và sửa; ghi lỗi cùng bằng chứng kiểm lại tại F08.",
      "input": "Persona, bản thảo, tiêu chí, ngân sách và cấu hình phiên review.",
      "output": "Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "implemented": "Có mã triển khai tại src/lib/debate/estimate.ts. Nhận xét nhiều vai trò, consensus, diff và đề xuất tổng hợp.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/debate/estimate.ts"
      ],
      "location": "/app/books",
      "tool": "review"
    },
    {
      "id": "cap-plan-1",
      "group": "Capability",
      "phase": "F01, F02, F04, F14",
      "phase_ids": [
        1,
        2,
        4,
        14
      ],
      "steps": {
        "1": [
          1,
          5,
          6
        ],
        "2": [
          7
        ],
        "4": [
          4,
          6
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Phỏng vấn tạo kế hoạch",
      "status": "Đang làm",
      "purpose": "Phỏng vấn tạo kế hoạch. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/plans; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Mục tiêu kinh doanh, interview, nguồn khả thi, ngân sách và dates.",
      "output": "Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "implemented": "Có mã triển khai tại src/lib/plan/interview.ts. Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/plan/interview.ts"
      ],
      "location": "/app/plans",
      "tool": "plans"
    },
    {
      "id": "cap-plan-2",
      "group": "Capability",
      "phase": "F01, F02, F04, F14",
      "phase_ids": [
        1,
        2,
        4,
        14
      ],
      "steps": {
        "1": [
          1,
          5,
          6
        ],
        "2": [
          7
        ],
        "4": [
          4,
          6
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Đánh giá khả thi có căn cứ",
      "status": "Đang làm",
      "purpose": "Đánh giá khả thi có căn cứ. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/plans; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Mục tiêu kinh doanh, interview, nguồn khả thi, ngân sách và dates.",
      "output": "Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "implemented": "Có mã triển khai tại src/lib/plan/feasibility.ts. Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/plan/feasibility.ts"
      ],
      "location": "/app/plans",
      "tool": "plans"
    },
    {
      "id": "cap-plan-3",
      "group": "Capability",
      "phase": "F01, F02, F04, F14",
      "phase_ids": [
        1,
        2,
        4,
        14
      ],
      "steps": {
        "1": [
          1,
          5,
          6
        ],
        "2": [
          7
        ],
        "4": [
          4,
          6
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Chiến lược theo mục tiêu",
      "status": "Đang làm",
      "purpose": "Chiến lược theo mục tiêu. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/plans; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Mục tiêu kinh doanh, interview, nguồn khả thi, ngân sách và dates.",
      "output": "Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "implemented": "Có mã triển khai tại src/lib/plan/strategy.ts. Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/plan/strategy.ts"
      ],
      "location": "/app/plans",
      "tool": "plans"
    },
    {
      "id": "cap-plan-4",
      "group": "Capability",
      "phase": "F01, F02, F04, F14",
      "phase_ids": [
        1,
        2,
        4,
        14
      ],
      "steps": {
        "1": [
          1,
          5,
          6
        ],
        "2": [
          7
        ],
        "4": [
          4,
          6
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Kế hoạch vận hành",
      "status": "Đang làm",
      "purpose": "Kế hoạch vận hành. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/plans; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Mục tiêu kinh doanh, interview, nguồn khả thi, ngân sách và dates.",
      "output": "Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "implemented": "Có mã triển khai tại src/lib/plan/operations.ts. Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/plan/operations.ts"
      ],
      "location": "/app/plans",
      "tool": "plans"
    },
    {
      "id": "cap-plan-5",
      "group": "Capability",
      "phase": "F01, F02, F04, F14",
      "phase_ids": [
        1,
        2,
        4,
        14
      ],
      "steps": {
        "1": [
          1,
          5,
          6
        ],
        "2": [
          7
        ],
        "4": [
          4,
          6
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Phân rã tác vụ và xuất kế hoạch",
      "status": "Đang làm",
      "purpose": "Phân rã tác vụ và xuất kế hoạch. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/plans; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Mục tiêu kinh doanh, interview, nguồn khả thi, ngân sách và dates.",
      "output": "Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "implemented": "Có mã triển khai tại src/lib/plan/tasks.ts. Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/plan/tasks.ts"
      ],
      "location": "/app/plans",
      "tool": "plans"
    },
    {
      "id": "cap-plan-6",
      "group": "Capability",
      "phase": "F01, F02, F04, F14",
      "phase_ids": [
        1,
        2,
        4,
        14
      ],
      "steps": {
        "1": [
          1,
          5,
          6
        ],
        "2": [
          7
        ],
        "4": [
          4,
          6
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Theo dõi mục tiêu và replan",
      "status": "Đang làm",
      "purpose": "Theo dõi mục tiêu và replan. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/plans; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Mục tiêu kinh doanh, interview, nguồn khả thi, ngân sách và dates.",
      "output": "Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "implemented": "Có mã triển khai tại src/lib/plan/monitor.ts. Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/plan/monitor.ts"
      ],
      "location": "/app/plans",
      "tool": "plans"
    },
    {
      "id": "cap-plan-7",
      "group": "Capability",
      "phase": "F01, F02, F04, F14",
      "phase_ids": [
        1,
        2,
        4,
        14
      ],
      "steps": {
        "1": [
          1,
          5,
          6
        ],
        "2": [
          7
        ],
        "4": [
          4,
          6
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Kiểm logic các phần kế hoạch",
      "status": "Đang làm",
      "purpose": "Kiểm logic các phần kế hoạch. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/plans; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Mục tiêu kinh doanh, interview, nguồn khả thi, ngân sách và dates.",
      "output": "Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "implemented": "Có mã triển khai tại src/lib/plan/logic-validator.ts. Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/plan/logic-validator.ts"
      ],
      "location": "/app/plans",
      "tool": "plans"
    },
    {
      "id": "cap-plan-8",
      "group": "Capability",
      "phase": "F01, F02, F04, F14",
      "phase_ids": [
        1,
        2,
        4,
        14
      ],
      "steps": {
        "1": [
          1,
          5,
          6
        ],
        "2": [
          7
        ],
        "4": [
          4,
          6
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Tạo artifacts kế hoạch",
      "status": "Đang làm",
      "purpose": "Tạo artifacts kế hoạch. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/plans; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Mục tiêu kinh doanh, interview, nguồn khả thi, ngân sách và dates.",
      "output": "Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "implemented": "Có mã triển khai tại src/lib/plan/artifacts.ts. Kế hoạch chiến lược/vận hành/tác vụ, artifacts, monitoring và replan.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/plan/artifacts.ts"
      ],
      "location": "/app/plans",
      "tool": "plans"
    },
    {
      "id": "cap-batch-1",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          2,
          6
        ],
        "8": [
          1,
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Chuẩn bị nguồn và template cho batch",
      "status": "Đang làm",
      "purpose": "Chuẩn bị nguồn và template cho batch. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/batch; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Danh sách nguồn, template, dàn ý, model và ngân sách cho lô.",
      "output": "Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "implemented": "Có mã triển khai tại src/lib/batch/dsl.ts. Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/batch/dsl.ts"
      ],
      "location": "/app/batch",
      "tool": "batch"
    },
    {
      "id": "cap-batch-2",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          2,
          6
        ],
        "8": [
          1,
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Điều phối run nhiều sách",
      "status": "Đang làm",
      "purpose": "Điều phối run nhiều sách. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/batch; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Danh sách nguồn, template, dàn ý, model và ngân sách cho lô.",
      "output": "Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "implemented": "Có mã triển khai tại src/lib/batch/run.ts. Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/batch/run.ts"
      ],
      "location": "/app/batch",
      "tool": "batch"
    },
    {
      "id": "cap-batch-3",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          2,
          6
        ],
        "8": [
          1,
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Preview trước chạy lô",
      "status": "Đang làm",
      "purpose": "Preview trước chạy lô. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/batch; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Danh sách nguồn, template, dàn ý, model và ngân sách cho lô.",
      "output": "Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "implemented": "Có mã triển khai tại src/lib/batch/sampling.ts. Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/batch/sampling.ts"
      ],
      "location": "/app/batch",
      "tool": "batch"
    },
    {
      "id": "cap-batch-4",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          2,
          6
        ],
        "8": [
          1,
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Nguồn dữ liệu theo lô",
      "status": "Đang làm",
      "purpose": "Nguồn dữ liệu theo lô. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/batch; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Danh sách nguồn, template, dàn ý, model và ngân sách cho lô.",
      "output": "Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "implemented": "Có mã triển khai tại src/lib/batch/sources.ts. Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/batch/sources.ts"
      ],
      "location": "/app/batch",
      "tool": "batch"
    },
    {
      "id": "cap-batch-5",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          2,
          6
        ],
        "8": [
          1,
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Lưới biến thể batch",
      "status": "Đang làm",
      "purpose": "Lưới biến thể batch. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/batch; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Danh sách nguồn, template, dàn ý, model và ngân sách cho lô.",
      "output": "Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "implemented": "Có mã triển khai tại src/lib/batch/matrix.ts. Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/batch/matrix.ts"
      ],
      "location": "/app/batch",
      "tool": "batch"
    },
    {
      "id": "cap-batch-6",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          2,
          6
        ],
        "8": [
          1,
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Giữ hạn mức ngân sách lô",
      "status": "Đang làm",
      "purpose": "Giữ hạn mức ngân sách lô. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/batch; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Danh sách nguồn, template, dàn ý, model và ngân sách cho lô.",
      "output": "Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "implemented": "Có mã triển khai tại src/lib/batch/budget.ts. Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/batch/budget.ts"
      ],
      "location": "/app/batch",
      "tool": "batch"
    },
    {
      "id": "cap-batch-7",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          2,
          6
        ],
        "8": [
          1,
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Quản lý versions lô",
      "status": "Đang làm",
      "purpose": "Quản lý versions lô. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/batch; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Danh sách nguồn, template, dàn ý, model và ngân sách cho lô.",
      "output": "Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "implemented": "Có mã triển khai tại src/lib/batch/versions.ts. Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/batch/versions.ts"
      ],
      "location": "/app/batch",
      "tool": "batch"
    },
    {
      "id": "cap-batch-8",
      "group": "Capability",
      "phase": "F06, F07, F08, F14",
      "phase_ids": [
        6,
        7,
        8,
        14
      ],
      "steps": {
        "6": [
          4,
          5
        ],
        "7": [
          2,
          6
        ],
        "8": [
          1,
          3
        ],
        "14": [
          6
        ]
      },
      "step": "",
      "feature": "Recipes tác vụ lô",
      "status": "Đang làm",
      "purpose": "Recipes tác vụ lô. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/batch; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Danh sách nguồn, template, dàn ý, model và ngân sách cho lô.",
      "output": "Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "implemented": "Có mã triển khai tại src/lib/batch/recipes.ts. Preview và runs theo lô, checkpoint, versions và manifest tác vụ.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/batch/recipes.ts"
      ],
      "location": "/app/batch",
      "tool": "batch"
    },
    {
      "id": "cap-integrations-1",
      "group": "Capability",
      "phase": "F05, F13, F14",
      "phase_ids": [
        5,
        13,
        14
      ],
      "steps": {
        "5": [
          5
        ],
        "13": [
          1,
          3
        ],
        "14": [
          3,
          6
        ]
      },
      "step": "",
      "feature": "Adapter Google Calendar",
      "status": "Đang làm",
      "purpose": "Adapter Google Calendar. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Quyền integration, webhook signing, lịch và tác vụ được phép.",
      "output": "Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "implemented": "Có mã triển khai tại src/lib/integrations/google-calendar.ts. Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/integrations/google-calendar.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-integrations-2",
      "group": "Capability",
      "phase": "F05, F13, F14",
      "phase_ids": [
        5,
        13,
        14
      ],
      "steps": {
        "5": [
          5
        ],
        "13": [
          1,
          3
        ],
        "14": [
          3,
          6
        ]
      },
      "step": "",
      "feature": "Adapter Notion",
      "status": "Đang làm",
      "purpose": "Adapter Notion. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Quyền integration, webhook signing, lịch và tác vụ được phép.",
      "output": "Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "implemented": "Có mã triển khai tại src/lib/integrations/notion.ts. Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/integrations/notion.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-integrations-3",
      "group": "Capability",
      "phase": "F05, F13, F14",
      "phase_ids": [
        5,
        13,
        14
      ],
      "steps": {
        "5": [
          5
        ],
        "13": [
          1,
          3
        ],
        "14": [
          3,
          6
        ]
      },
      "step": "",
      "feature": "Adapter Asana",
      "status": "Đang làm",
      "purpose": "Adapter Asana. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Quyền integration, webhook signing, lịch và tác vụ được phép.",
      "output": "Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "implemented": "Có mã triển khai tại src/lib/integrations/asana.ts. Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/integrations/asana.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-integrations-4",
      "group": "Capability",
      "phase": "F05, F13, F14",
      "phase_ids": [
        5,
        13,
        14
      ],
      "steps": {
        "5": [
          5
        ],
        "13": [
          1,
          3
        ],
        "14": [
          3,
          6
        ]
      },
      "step": "",
      "feature": "Adapter Linear",
      "status": "Đang làm",
      "purpose": "Adapter Linear. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Quyền integration, webhook signing, lịch và tác vụ được phép.",
      "output": "Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "implemented": "Có mã triển khai tại src/lib/integrations/linear.ts. Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/integrations/linear.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-integrations-5",
      "group": "Capability",
      "phase": "F05, F13, F14",
      "phase_ids": [
        5,
        13,
        14
      ],
      "steps": {
        "5": [
          5
        ],
        "13": [
          1,
          3
        ],
        "14": [
          3,
          6
        ]
      },
      "step": "",
      "feature": "Xác minh chữ ký webhook",
      "status": "Đang làm",
      "purpose": "Xác minh chữ ký webhook. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Quyền integration, webhook signing, lịch và tác vụ được phép.",
      "output": "Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "implemented": "Có mã triển khai tại src/lib/integrations/signing.ts. Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/integrations/signing.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-integrations-6",
      "group": "Capability",
      "phase": "F05, F13, F14",
      "phase_ids": [
        5,
        13,
        14
      ],
      "steps": {
        "5": [
          5
        ],
        "13": [
          1,
          3
        ],
        "14": [
          3,
          6
        ]
      },
      "step": "",
      "feature": "Điều phối webhook integrations",
      "status": "Đang làm",
      "purpose": "Điều phối webhook integrations. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Quyền integration, webhook signing, lịch và tác vụ được phép.",
      "output": "Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "implemented": "Có mã triển khai tại src/lib/integrations/webhook.ts. Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/integrations/webhook.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-integrations-7",
      "group": "Capability",
      "phase": "F05, F13, F14",
      "phase_ids": [
        5,
        13,
        14
      ],
      "steps": {
        "5": [
          5
        ],
        "13": [
          1,
          3
        ],
        "14": [
          3,
          6
        ]
      },
      "step": "",
      "feature": "Lịch cron và check-in",
      "status": "Đang làm",
      "purpose": "Lịch cron và check-in. Theo dõi sự cố và nghĩa vụ cập nhật.",
      "how": "Ghi sự cố, người xử lý và tác động; cập nhật sổ thay đổi/danh mục F14.",
      "input": "Quyền integration, webhook signing, lịch và tác vụ được phép.",
      "output": "Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "implemented": "Có mã triển khai tại src/lib/integrations/cron.ts. Payload/kết quả connector; tự động gửi cần cấu hình và xác minh riêng.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/integrations/cron.ts"
      ],
      "location": "/app/books",
      "tool": "ops"
    },
    {
      "id": "cap-billing-1",
      "group": "Capability",
      "phase": "F01, F04, F05, F14",
      "phase_ids": [
        1,
        4,
        5,
        14
      ],
      "steps": {
        "1": [
          5
        ],
        "4": [
          6
        ],
        "5": [
          5
        ],
        "14": [
          1
        ]
      },
      "step": "",
      "feature": "Gói dịch vụ và giới hạn tính năng",
      "status": "Đang làm",
      "purpose": "Gói dịch vụ và giới hạn tính năng. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/billing; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, plan, Stripe Sandbox/live, credits, BYOK và quyền tài khoản.",
      "output": "Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "implemented": "Có mã triển khai tại src/lib/billing/plans.ts. Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/billing/plans.ts"
      ],
      "location": "/app/billing",
      "tool": "billing"
    },
    {
      "id": "cap-billing-2",
      "group": "Capability",
      "phase": "F01, F04, F05, F14",
      "phase_ids": [
        1,
        4,
        5,
        14
      ],
      "steps": {
        "1": [
          5
        ],
        "4": [
          6
        ],
        "5": [
          5
        ],
        "14": [
          1
        ]
      },
      "step": "",
      "feature": "Kiểm entitlement theo tổ chức",
      "status": "Đang làm",
      "purpose": "Kiểm entitlement theo tổ chức. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/billing; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, plan, Stripe Sandbox/live, credits, BYOK và quyền tài khoản.",
      "output": "Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "implemented": "Có mã triển khai tại src/lib/billing/entitlements.ts. Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/billing/entitlements.ts"
      ],
      "location": "/app/billing",
      "tool": "billing"
    },
    {
      "id": "cap-billing-3",
      "group": "Capability",
      "phase": "F01, F04, F05, F14",
      "phase_ids": [
        1,
        4,
        5,
        14
      ],
      "steps": {
        "1": [
          5
        ],
        "4": [
          6
        ],
        "5": [
          5
        ],
        "14": [
          1
        ]
      },
      "step": "",
      "feature": "Giữ/trừ/hoàn credits cho tác vụ",
      "status": "Đang làm",
      "purpose": "Giữ/trừ/hoàn credits cho tác vụ. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/billing; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, plan, Stripe Sandbox/live, credits, BYOK và quyền tài khoản.",
      "output": "Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "implemented": "Có mã triển khai tại src/lib/billing/credits.ts. Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/billing/credits.ts"
      ],
      "location": "/app/billing",
      "tool": "billing"
    },
    {
      "id": "cap-billing-4",
      "group": "Capability",
      "phase": "F01, F04, F05, F14",
      "phase_ids": [
        1,
        4,
        5,
        14
      ],
      "steps": {
        "1": [
          5
        ],
        "4": [
          6
        ],
        "5": [
          5
        ],
        "14": [
          1
        ]
      },
      "step": "",
      "feature": "Stripe Checkout/Portal/Webhook cho dịch vụ app",
      "status": "Đang làm",
      "purpose": "Stripe Checkout/Portal/Webhook cho dịch vụ app. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/billing; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, plan, Stripe Sandbox/live, credits, BYOK và quyền tài khoản.",
      "output": "Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "implemented": "Có mã triển khai tại src/lib/billing/stripe.ts. Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/billing/stripe.ts"
      ],
      "location": "/app/billing",
      "tool": "billing"
    },
    {
      "id": "cap-billing-5",
      "group": "Capability",
      "phase": "F01, F04, F05, F14",
      "phase_ids": [
        1,
        4,
        5,
        14
      ],
      "steps": {
        "1": [
          5
        ],
        "4": [
          6
        ],
        "5": [
          5
        ],
        "14": [
          1
        ]
      },
      "step": "",
      "feature": "API keys có scope và thu hồi",
      "status": "Đang làm",
      "purpose": "API keys có scope và thu hồi. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/billing; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, plan, Stripe Sandbox/live, credits, BYOK và quyền tài khoản.",
      "output": "Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "implemented": "Có mã triển khai tại src/lib/billing/api-keys.ts. Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/billing/api-keys.ts"
      ],
      "location": "/app/billing",
      "tool": "billing"
    },
    {
      "id": "cap-billing-6",
      "group": "Capability",
      "phase": "F01, F04, F05, F14",
      "phase_ids": [
        1,
        4,
        5,
        14
      ],
      "steps": {
        "1": [
          5
        ],
        "4": [
          6
        ],
        "5": [
          5
        ],
        "14": [
          1
        ]
      },
      "step": "",
      "feature": "Hoàn giữ credits khi tác vụ thất bại",
      "status": "Đang làm",
      "purpose": "Hoàn giữ credits khi tác vụ thất bại. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/billing; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Tổ chức, plan, Stripe Sandbox/live, credits, BYOK và quyền tài khoản.",
      "output": "Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "implemented": "Có mã triển khai tại src/lib/billing/unwind.ts. Entitlements, số dư/usage, giao dịch billing và API keys có scope.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/billing/unwind.ts"
      ],
      "location": "/app/billing",
      "tool": "billing"
    },
    {
      "id": "cap-api-auth-1",
      "group": "Capability",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          5
        ]
      },
      "step": "",
      "feature": "Xác thực phiên đăng nhập",
      "status": "Đang làm",
      "purpose": "Xác thực phiên đăng nhập. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/account; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Phiên đăng nhập/API key, tổ chức, scope và hạn mức.",
      "output": "Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "implemented": "Có mã triển khai tại src/lib/api-auth/session.ts. Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/api-auth/session.ts"
      ],
      "location": "/app/account",
      "tool": "account"
    },
    {
      "id": "cap-api-auth-2",
      "group": "Capability",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          5
        ]
      },
      "step": "",
      "feature": "Xác thực public API key",
      "status": "Đang làm",
      "purpose": "Xác thực public API key. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/account; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Phiên đăng nhập/API key, tổ chức, scope và hạn mức.",
      "output": "Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "implemented": "Có mã triển khai tại src/lib/api-auth/auth.ts. Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/api-auth/auth.ts"
      ],
      "location": "/app/account",
      "tool": "account"
    },
    {
      "id": "cap-api-auth-3",
      "group": "Capability",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          5
        ]
      },
      "step": "",
      "feature": "Chọn và kiểm quyền tổ chức",
      "status": "Đang làm",
      "purpose": "Chọn và kiểm quyền tổ chức. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/account; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Phiên đăng nhập/API key, tổ chức, scope và hạn mức.",
      "output": "Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "implemented": "Có mã triển khai tại src/lib/api-auth/org.ts. Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/api-auth/org.ts"
      ],
      "location": "/app/account",
      "tool": "account"
    },
    {
      "id": "cap-api-auth-4",
      "group": "Capability",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          5
        ]
      },
      "step": "",
      "feature": "Rate limit API",
      "status": "Đang làm",
      "purpose": "Rate limit API. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/account; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Phiên đăng nhập/API key, tổ chức, scope và hạn mức.",
      "output": "Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "implemented": "Có mã triển khai tại src/lib/api-auth/rate-limit.ts. Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/api-auth/rate-limit.ts"
      ],
      "location": "/app/account",
      "tool": "account"
    },
    {
      "id": "cap-api-auth-5",
      "group": "Capability",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          5
        ]
      },
      "step": "",
      "feature": "Tài liệu OpenAPI v1",
      "status": "Đang làm",
      "purpose": "Tài liệu OpenAPI v1. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/account; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Phiên đăng nhập/API key, tổ chức, scope và hạn mức.",
      "output": "Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "implemented": "Có mã triển khai tại src/lib/api-auth/openapi.ts. Quyền được kiểm server-side, lỗi chuẩn và OpenAPI.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/api-auth/openapi.ts"
      ],
      "location": "/app/account",
      "tool": "account"
    },
    {
      "id": "cap-setup-1",
      "group": "Capability",
      "phase": "F01, F05, F12",
      "phase_ids": [
        1,
        5,
        12
      ],
      "steps": {
        "1": [
          5
        ],
        "5": [
          4,
          5
        ],
        "12": [
          4,
          5
        ]
      },
      "step": "",
      "feature": "Kiểm hiện diện và loại cấu hình an toàn",
      "status": "Đang làm",
      "purpose": "Kiểm hiện diện và loại cấu hình an toàn. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/setup; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Cấu hình server hiện có, phiên owner/admin và tổ chức đã chọn.",
      "output": "Bảng thiếu/có/chưa kiểm, hướng dẫn việc thủ công và bản tải kết quả không chứa secrets.",
      "implemented": "Có mã triển khai tại src/lib/setup/config.ts. Bảng thiếu/có/chưa kiểm, hướng dẫn việc thủ công và bản tải kết quả không chứa secrets.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/setup/config.ts"
      ],
      "location": "/app/setup",
      "tool": "setup"
    },
    {
      "id": "cap-setup-2",
      "group": "Capability",
      "phase": "F01, F05, F12",
      "phase_ids": [
        1,
        5,
        12
      ],
      "steps": {
        "1": [
          5
        ],
        "5": [
          4,
          5
        ],
        "12": [
          4,
          5
        ]
      },
      "step": "",
      "feature": "Danh sách việc thủ công theo phase và tiêu chí hoàn tất",
      "status": "Đang làm",
      "purpose": "Danh sách việc thủ công theo phase và tiêu chí hoàn tất. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/setup; chọn tổ chức hoặc dự án, nhập cấu hình cần thiết, lưu và kiểm kết quả.",
      "input": "Cấu hình server hiện có, phiên owner/admin và tổ chức đã chọn.",
      "output": "Bảng thiếu/có/chưa kiểm, hướng dẫn việc thủ công và bản tải kết quả không chứa secrets.",
      "implemented": "Có mã triển khai tại src/lib/setup/tasks.ts. Bảng thiếu/có/chưa kiểm, hướng dẫn việc thủ công và bản tải kết quả không chứa secrets.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/setup/tasks.ts"
      ],
      "location": "/app/setup",
      "tool": "setup"
    },
    {
      "id": "cap-knowledge-1",
      "group": "Capability",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {
        "6": [
          3
        ],
        "7": [
          4
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Lưu và truy xuất tri thức phục vụ bản thảo",
      "status": "Đang làm",
      "purpose": "Lưu và truy xuất tri thức phục vụ bản thảo. Giữ giọng, glossary và canon nhất quán.",
      "how": "Ghi thuật ngữ/quy tắc và đối chiếu khi viết hoặc sửa chương.",
      "input": "Nguồn tri thức, entity/quan hệ và context chương.",
      "output": "Tri thức truy xuất hỗ trợ context; cần đối chiếu độ phủ thực tế.",
      "implemented": "Có mã triển khai tại src/lib/knowledge/index.ts. Tri thức truy xuất hỗ trợ context; cần đối chiếu độ phủ thực tế.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/knowledge/index.ts"
      ],
      "location": "/app/books",
      "tool": "bible"
    },
    {
      "id": "cap-authz-1",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1
        ],
        "8": [
          6
        ]
      },
      "step": "",
      "feature": "Ma trận quyền vai trò/tài nguyên",
      "status": "Đang làm",
      "purpose": "Ma trận quyền vai trò/tài nguyên. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Vai trò, hành động, tài nguyên và người tham gia.",
      "output": "Kết quả cho phép/từ chối theo ma trận quyền.",
      "implemented": "Có mã triển khai tại src/lib/authz/matrix.ts. Kết quả cho phép/từ chối theo ma trận quyền.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/authz/matrix.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "cap-authz-2",
      "group": "Capability",
      "phase": "F05, F07, F08",
      "phase_ids": [
        5,
        7,
        8
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          1
        ],
        "8": [
          6
        ]
      },
      "step": "",
      "feature": "Engine quyết định quyền",
      "status": "Đang làm",
      "purpose": "Engine quyết định quyền. Chuẩn bị quyền, phân công và nhu cầu của tổ chức.",
      "how": "Rà vai trò và phạm vi theo tổ chức; đối chiếu quyền F05 và nghĩa vụ F14. Quản trị doanh nghiệp đầy đủ chưa hoàn tất.",
      "input": "Vai trò, hành động, tài nguyên và người tham gia.",
      "output": "Kết quả cho phép/từ chối theo ma trận quyền.",
      "implemented": "Có mã triển khai tại src/lib/authz/engine.ts. Kết quả cho phép/từ chối theo ma trận quyền.",
      "remaining": "Cần xác minh thao tác với dữ liệu dự án thật và integration phù hợp; các màn hình demo/ports mô phỏng chưa chứng minh provider chạy.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đối chiếu file nguồn. Chưa chạy lại toàn bộ từng provider trong đợt lập danh mục.",
      "evidence": [
        "src/lib/authz/engine.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise"
    },
    {
      "id": "core-1-gen-canonical-ts",
      "group": "Capability",
      "phase": "F07, F08, F10",
      "phase_ids": [
        7,
        8,
        10
      ],
      "steps": {
        "7": [
          6
        ],
        "8": [
          1
        ],
        "10": [
          3
        ]
      },
      "step": "",
      "feature": "Bàn giao ba chiều Draft → Workspace, giữ chỉnh sửa và xung đột",
      "status": "Đã xong",
      "purpose": "Bàn giao ba chiều Draft → Workspace, giữ chỉnh sửa và xung đột",
      "how": "Mở sách hoặc Workspace → F07/F08/F10 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/gen/canonical.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/gen/canonical.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-2-gen-canonical-store-ts",
      "group": "Capability",
      "phase": "F07, F08, F10",
      "phase_ids": [
        7,
        8,
        10
      ],
      "steps": {
        "7": [
          6
        ],
        "8": [
          6
        ],
        "10": [
          5
        ]
      },
      "step": "",
      "feature": "Lưu bản nguồn với kiểm revision và CAS",
      "status": "Đã xong",
      "purpose": "Lưu bản nguồn với kiểm revision và CAS",
      "how": "Mở sách hoặc Workspace → F07/F08/F10 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/gen/canonical-store.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/gen/canonical-store.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-3-parse-docx-ts",
      "group": "Capability",
      "phase": "F06, F07",
      "phase_ids": [
        6,
        7
      ],
      "steps": {
        "6": [
          3
        ],
        "7": [
          2
        ]
      },
      "step": "",
      "feature": "Nhập bản thảo DOCX và báo các phần không hỗ trợ",
      "status": "Đã xong",
      "purpose": "Nhập bản thảo DOCX và báo các phần không hỗ trợ",
      "how": "Mở sách hoặc Workspace → F06/F07 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/parse-docx.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/parse-docx.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-4-find-replace-ts",
      "group": "Capability",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {
        "7": [
          2
        ],
        "8": [
          3
        ]
      },
      "step": "",
      "feature": "Tìm và thay thế trong bản thảo",
      "status": "Đã xong",
      "purpose": "Tìm và thay thế trong bản thảo",
      "how": "Mở sách hoặc Workspace → F07/F08 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/find-replace.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/find-replace.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-5-snapshots-ts",
      "group": "Capability",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {
        "7": [
          6
        ],
        "8": [
          5
        ]
      },
      "step": "",
      "feature": "Chụp và khôi phục snapshots bản thảo",
      "status": "Đã xong",
      "purpose": "Chụp và khôi phục snapshots bản thảo",
      "how": "Mở sách hoặc Workspace → F07/F08 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/snapshots.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/snapshots.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-6-claims-ledger-ts",
      "group": "Capability",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {
        "7": [
          3
        ],
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Sổ claim, kể cả claim đang ẩn",
      "status": "Đã xong",
      "purpose": "Sổ claim, kể cả claim đang ẩn",
      "how": "Mở sách hoặc Workspace → F07/F08 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/claims-ledger.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/claims-ledger.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-7-editions-ts",
      "group": "Capability",
      "phase": "F09, F14",
      "phase_ids": [
        9,
        14
      ],
      "steps": {
        "9": [
          5
        ],
        "14": [
          4
        ]
      },
      "step": "",
      "feature": "Edition, bản dịch và báo nội dung nguồn thay đổi",
      "status": "Đã xong",
      "purpose": "Edition, bản dịch và báo nội dung nguồn thay đổi",
      "how": "Mở sách hoặc Workspace → F09/F14 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/editions.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/editions.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-8-epub-ts",
      "group": "Capability",
      "phase": "F10, F12",
      "phase_ids": [
        10,
        12
      ],
      "steps": {
        "10": [
          3
        ],
        "12": [
          5
        ]
      },
      "step": "",
      "feature": "Xuất EPUB reflowable từ bản nguồn",
      "status": "Đã xong",
      "purpose": "Xuất EPUB reflowable từ bản nguồn",
      "how": "Mở sách hoặc Workspace → F10/F12 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/epub.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/epub.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-9-epub-ts",
      "group": "Capability",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {
        "10": [
          3
        ]
      },
      "step": "",
      "feature": "Nhúng ảnh thật vào EPUB với manifest",
      "status": "Đã xong",
      "purpose": "Nhúng ảnh thật vào EPUB với manifest",
      "how": "Mở sách hoặc Workspace → F10 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/epub.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/epub.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-10-course-ts",
      "group": "Capability",
      "phase": "F11",
      "phase_ids": [
        11
      ],
      "steps": {
        "11": [
          2
        ]
      },
      "step": "",
      "feature": "Cấu trúc khóa học chuyển từ nội dung sách",
      "status": "Đã xong",
      "purpose": "Cấu trúc khóa học chuyển từ nội dung sách",
      "how": "Mở sách hoặc Workspace → F11 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/course.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/course.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-11-channel-kdp-ts",
      "group": "Capability",
      "phase": "F10, F12",
      "phase_ids": [
        10,
        12
      ],
      "steps": {
        "10": [
          3
        ],
        "12": [
          2
        ]
      },
      "step": "",
      "feature": "Kiểm hồ sơ kênh KDP trước xuất/phát hành",
      "status": "Đã xong",
      "purpose": "Kiểm hồ sơ kênh KDP trước xuất/phát hành",
      "how": "Mở sách hoặc Workspace → F10/F12 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/channel-kdp.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/channel-kdp.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-12-readiness-ts",
      "group": "Capability",
      "phase": "F08, F10",
      "phase_ids": [
        8,
        10
      ],
      "steps": {
        "8": [
          6
        ],
        "10": [
          5
        ]
      },
      "step": "",
      "feature": "Pre-flight và mức sẵn sàng bản thảo",
      "status": "Đã xong",
      "purpose": "Pre-flight và mức sẵn sàng bản thảo",
      "how": "Mở sách hoặc Workspace → F08/F10 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/readiness.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/readiness.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-13-audit-ts",
      "group": "Capability",
      "phase": "F08",
      "phase_ids": [
        8
      ],
      "steps": {
        "8": [
          2
        ]
      },
      "step": "",
      "feature": "Báo cáo kiểm bản thảo",
      "status": "Đã xong",
      "purpose": "Báo cáo kiểm bản thảo",
      "how": "Mở sách hoặc Workspace → F08 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/audit.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/audit.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-14-style-normalize-ts",
      "group": "Capability",
      "phase": "F08, F10",
      "phase_ids": [
        8,
        10
      ],
      "steps": {
        "8": [
          3
        ],
        "10": [
          2
        ]
      },
      "step": "",
      "feature": "Chuẩn hóa style bản thảo",
      "status": "Đã xong",
      "purpose": "Chuẩn hóa style bản thảo",
      "how": "Mở sách hoặc Workspace → F08/F10 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/style-normalize.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/style-normalize.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-15-cloud-sync-ts",
      "group": "Capability",
      "phase": "F05, F07",
      "phase_ids": [
        5,
        7
      ],
      "steps": {
        "5": [
          5
        ],
        "7": [
          6
        ]
      },
      "step": "",
      "feature": "Đồng bộ bản thảo và cảnh báo revision",
      "status": "Đang làm",
      "purpose": "Đồng bộ bản thảo và cảnh báo revision",
      "how": "Mở sách hoặc Workspace → F05/F07 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/cloud-sync.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/cloud-sync.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-16-sop-cloud-ts",
      "group": "Capability",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          5
        ]
      },
      "step": "",
      "feature": "Chọn tổ chức, lưu/đọc/lịch sử hồ sơ cloud",
      "status": "Đã xong",
      "purpose": "Chọn tổ chức, lưu/đọc/lịch sử hồ sơ cloud",
      "how": "Mở sách hoặc Workspace → F05 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/cloud.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Hồ sơ TODO E1 ghi 14/14 kiểm cloud; không đồng nghĩa dossier sản xuất F01–F06 đã qua gate.",
      "evidence": [
        "src/lib/sop/cloud.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-17-sop-comparison-ts",
      "group": "Capability",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {
        "5": [
          5
        ]
      },
      "step": "",
      "feature": "So sánh hồ sơ cloud và phiên bản trước",
      "status": "Đã xong",
      "purpose": "So sánh hồ sơ cloud và phiên bản trước",
      "how": "Mở sách hoặc Workspace → F05 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/comparison.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/comparison.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-18-sop-research-clusters-ts",
      "group": "Capability",
      "phase": "F02",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          4
        ]
      },
      "step": "",
      "feature": "Phân nhóm review/phỏng vấn tại máy, duyệt trước lưu nhu cầu",
      "status": "Đã xong",
      "purpose": "Phân nhóm review/phỏng vấn tại máy, duyệt trước lưu nhu cầu",
      "how": "Mở sách hoặc Workspace → F02 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/research-clusters.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/research-clusters.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-19-sop-research-summary-ts",
      "group": "Capability",
      "phase": "F02",
      "phase_ids": [
        2
      ],
      "steps": {
        "2": [
          5
        ]
      },
      "step": "",
      "feature": "Tổng hợp nghiên cứu và độ đầy đủ bằng chứng",
      "status": "Đã xong",
      "purpose": "Tổng hợp nghiên cứu và độ đầy đủ bằng chứng",
      "how": "Mở sách hoặc Workspace → F02 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/research-summary.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/research-summary.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-20-sop-promise-coverage-ts",
      "group": "Capability",
      "phase": "F03, F06, F08",
      "phase_ids": [
        3,
        6,
        8
      ],
      "steps": {
        "3": [
          3
        ],
        "6": [
          1
        ],
        "8": [
          6
        ]
      },
      "step": "",
      "feature": "Liên kết lời hứa → nhu cầu → content IDs và nghiệm thu",
      "status": "Đã xong",
      "purpose": "Liên kết lời hứa → nhu cầu → content IDs và nghiệm thu",
      "how": "Mở sách hoặc Workspace → F03/F06/F08 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/promise-coverage.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/promise-coverage.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-21-sop-monthly-forecast-ts",
      "group": "Capability",
      "phase": "F04",
      "phase_ids": [
        4
      ],
      "steps": {
        "4": [
          4
        ]
      },
      "step": "",
      "feature": "Dự toán 12 tháng, actual-vs-forecast và sensitivity",
      "status": "Đã xong",
      "purpose": "Dự toán 12 tháng, actual-vs-forecast và sensitivity",
      "how": "Mở sách hoặc Workspace → F04 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/monthly-forecast.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/monthly-forecast.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-22-sop-cohort-ts",
      "group": "Capability",
      "phase": "F04, F14",
      "phase_ids": [
        4,
        14
      ],
      "steps": {
        "4": [
          4
        ],
        "14": [
          2
        ]
      },
      "step": "",
      "feature": "CAC/LTV và kịch bản cohort có giả định",
      "status": "Đã xong",
      "purpose": "CAC/LTV và kịch bản cohort có giả định",
      "how": "Mở sách hoặc Workspace → F04/F14 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/cohort.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/cohort.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-23-sop-financial-events-ts",
      "group": "Capability",
      "phase": "F14",
      "phase_ids": [
        14
      ],
      "steps": {
        "14": [
          1
        ]
      },
      "step": "",
      "feature": "Đối soát sự kiện tiền, chống CSV trùng và giữ loại tiền",
      "status": "Đã xong",
      "purpose": "Đối soát sự kiện tiền, chống CSV trùng và giữ loại tiền",
      "how": "Mở sách hoặc Workspace → F14 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/financial-events.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/financial-events.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-24-sop-generation-gate-ts",
      "group": "Capability",
      "phase": "F06, F07",
      "phase_ids": [
        6,
        7
      ],
      "steps": {
        "6": [
          5
        ],
        "7": [
          2
        ]
      },
      "step": "",
      "feature": "Chặn sản xuất toàn bộ trước duyệt đầu tư/chương mẫu",
      "status": "Đã xong",
      "purpose": "Chặn sản xuất toàn bộ trước duyệt đầu tư/chương mẫu",
      "how": "Mở sách hoặc Workspace → F06/F07 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/generation-gate.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/generation-gate.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "core-25-sop-engine-ts",
      "group": "Capability",
      "phase": "F01, F02, F03, F04, F05, F06, F07, F08, F09, F10, F11, F12, F13, F14",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {
        "1": [],
        "2": [],
        "3": [],
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": [],
        "9": [],
        "10": [],
        "11": [],
        "12": [],
        "13": [],
        "14": []
      },
      "step": "",
      "feature": "Duyệt/sửa/hoãn/dừng, fingerprints và yêu cầu duyệt lại",
      "status": "Đã xong",
      "purpose": "Duyệt/sửa/hoãn/dừng, fingerprints và yêu cầu duyệt lại",
      "how": "Mở sách hoặc Workspace → F01/F02/F03/F04/F05/F06/F07/F08/F09/F10/F11/F12/F13/F14 → công cụ liên quan; kiểm nguồn/phiên bản rồi lưu hoặc xuất kết quả.",
      "input": "Bản nguồn, hồ sơ phase hoặc dữ liệu có ID/nguồn/phiên bản; trường bắt buộc được kiểm trước lưu.",
      "output": "Kết quả tính/đối chiếu hoặc artifact theo đúng phạm vi tính năng; không tự duyệt nội dung.",
      "implemented": "Có implementation tại src/lib/sop/engine.ts.",
      "remaining": "“Đã xong” chỉ xác nhận phạm vi chức năng này; nghiệm thu người thật, thiết bị, kênh và luồng live toàn bộ vẫn cần riêng.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có",
      "verification": "Đối chiếu implementation; chưa chạy nghiệm thu toàn bộ trong đợt danh mục.",
      "evidence": [
        "src/lib/sop/engine.ts",
        "docs/TODO.md"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-1",
      "group": "Platform",
      "phase": "F01, F03, F06",
      "phase_ids": [
        1,
        3,
        6
      ],
      "steps": {},
      "step": "",
      "feature": "Tạo sách bằng phỏng vấn và chọn blueprint",
      "status": "Đã xong",
      "purpose": "Tạo sách bằng phỏng vấn và chọn blueprint",
      "how": "Mở /app/books/new; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Brief, độc giả, ngôn ngữ, loại sách và mục tiêu",
      "output": "Sách mới có ID, Brief và dàn ý; kiểm mẫu trước sản xuất",
      "implemented": "Màn hình/luồng tại src/app/app/books/new/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/books/new/page.tsx"
      ],
      "location": "/app/books/new"
    },
    {
      "id": "platform-2",
      "group": "Platform",
      "phase": "F01, F14",
      "phase_ids": [
        1,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Danh sách, tìm kiếm và mở sách",
      "status": "Đã xong",
      "purpose": "Danh sách, tìm kiếm và mở sách",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Tên sách và dữ liệu đã lưu trên trình duyệt",
      "output": "Danh sách sách và liên kết tới phase/công cụ",
      "implemented": "Màn hình/luồng tại src/app/app/books/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/books/page.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-3",
      "group": "Platform",
      "phase": "F06, F07, F08",
      "phase_ids": [
        6,
        7,
        8
      ],
      "steps": {},
      "step": "",
      "feature": "Lưu sách và các bản nháp trong IndexedDB",
      "status": "Đã xong",
      "purpose": "Lưu sách và các bản nháp trong IndexedDB",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Book ID, draft/version và extras",
      "output": "Sách và phiên bản được lưu tại máy; cloud được kiểm riêng",
      "implemented": "Màn hình/luồng tại src/lib/books-store.ts.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/lib/books-store.ts"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-4",
      "group": "Platform",
      "phase": "F01, F14",
      "phase_ids": [
        1,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Dashboard điều hướng sách/dự án/kế hoạch",
      "status": "Đã xong",
      "purpose": "Dashboard điều hướng sách/dự án/kế hoạch",
      "how": "Mở /app; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Các sách/dự án/kế hoạch hiện có",
      "output": "Lối vào công việc và thống kê theo dữ liệu lưu",
      "implemented": "Màn hình/luồng tại src/app/app/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/page.tsx"
      ],
      "location": "/app"
    },
    {
      "id": "platform-5",
      "group": "Platform",
      "phase": "F01, F02, F03, F04, F05, F06, F07, F08, F09, F10, F11, F12, F13, F14",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Điều hướng ngang 14 phase và deep link theo sách",
      "status": "Đã xong",
      "purpose": "Điều hướng ngang 14 phase và deep link theo sách",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Book/Project ID và phase hiện tại",
      "output": "Mở đúng phase và giữ phạm vi sách/dự án",
      "implemented": "Màn hình/luồng tại src/components/shell/phase-navigation.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/components/shell/phase-navigation.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-6",
      "group": "Platform",
      "phase": "F01, F02, F03, F04, F05, F06, F07, F08, F09, F10, F11, F12, F13, F14",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Hướng dẫn từng step và chuyển đúng biểu mẫu",
      "status": "Đã xong",
      "purpose": "Hướng dẫn từng step và chuyển đúng biểu mẫu",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Phase và step chọn",
      "output": "Chỉ dẫn cách làm và biểu mẫu/công cụ phù hợp",
      "implemented": "Màn hình/luồng tại src/components/sop/step-guide.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/components/sop/step-guide.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-7",
      "group": "Platform",
      "phase": "F02, F03, F04, F05, F06, F07, F08, F09, F10, F11, F12, F13, F14",
      "phase_ids": [
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Nhập/xuất CSV biểu mẫu, kiểm lỗi và giữ bản chưa lưu",
      "status": "Đã xong",
      "purpose": "Nhập/xuất CSV biểu mẫu, kiểm lỗi và giữ bản chưa lưu",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "CSV theo mẫu, source và record IDs",
      "output": "Preview lỗi trước nhập; dữ liệu có nguồn và cảnh báo xung đột",
      "implemented": "Màn hình/luồng tại src/components/sop/record-editor.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/components/sop/record-editor.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-8",
      "group": "Platform",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Báo cáo và sao lưu hồ sơ SOP",
      "status": "Đã xong",
      "purpose": "Báo cáo và sao lưu hồ sơ SOP",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Hồ sơ local/cloud, tổ chức và revision",
      "output": "Bản sao trước pull/restore và đối chiếu phiên bản",
      "implemented": "Màn hình/luồng tại src/components/sop/cloud-controls.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/components/sop/cloud-controls.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-9",
      "group": "Platform",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {},
      "step": "",
      "feature": "Biên tập bản thảo Workspace theo blocks",
      "status": "Đã xong",
      "purpose": "Biên tập bản thảo Workspace theo blocks",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Project, chapter/block IDs và nội dung bản nguồn",
      "output": "Bản thảo biên tập với revision; không tự thay bằng draft",
      "implemented": "Màn hình/luồng tại src/components/workspace/manuscript-tab.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/components/workspace/manuscript-tab.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-10",
      "group": "Platform",
      "phase": "F06, F07",
      "phase_ids": [
        6,
        7
      ],
      "steps": {},
      "step": "",
      "feature": "Nhập bản thảo và xem báo cáo parser",
      "status": "Đã xong",
      "purpose": "Nhập bản thảo và xem báo cáo parser",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "DOCX và cấu trúc nhận diện được",
      "output": "Báo cáo hỗ trợ/không hỗ trợ và cảnh báo parser",
      "implemented": "Màn hình/luồng tại src/components/workspace/report-tab.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/components/workspace/report-tab.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-11",
      "group": "Platform",
      "phase": "F10, F12",
      "phase_ids": [
        10,
        12
      ],
      "steps": {},
      "step": "",
      "feature": "Metadata bản nguồn và hồ sơ kênh",
      "status": "Đã xong",
      "purpose": "Metadata bản nguồn và hồ sơ kênh",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Tiêu đề/tác giả/ngôn ngữ/ISBN và profile",
      "output": "Metadata chung cho xuất file và kiểm kênh",
      "implemented": "Màn hình/luồng tại src/components/workspace/metadata-tab.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/components/workspace/metadata-tab.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-12",
      "group": "Platform",
      "phase": "F07, F08",
      "phase_ids": [
        7,
        8
      ],
      "steps": {},
      "step": "",
      "feature": "Sổ bằng chứng và kiểm claim trong Workspace",
      "status": "Đã xong",
      "purpose": "Sổ bằng chứng và kiểm claim trong Workspace",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Nguồn, claim, phiên bản và người kiểm",
      "output": "Bằng chứng gắn bản nguồn và kết quả kiểm",
      "implemented": "Màn hình/luồng tại src/components/workspace/evidence-tab.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/components/workspace/evidence-tab.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-13",
      "group": "Platform",
      "phase": "F06, F07, F08, F10",
      "phase_ids": [
        6,
        7,
        8,
        10
      ],
      "steps": {},
      "step": "",
      "feature": "Dự án Workspace và lưu cục bộ",
      "status": "Đã xong",
      "purpose": "Dự án Workspace và lưu cục bộ",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Project, blocks, chapters, metadata và revisions",
      "output": "Project bền vững trên trình duyệt; đồng bộ cloud có bước riêng",
      "implemented": "Màn hình/luồng tại src/lib/store.ts.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/lib/store.ts"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-14",
      "group": "Platform",
      "phase": "F01, F04, F14",
      "phase_ids": [
        1,
        4,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Danh sách và wizard tạo kế hoạch kinh doanh",
      "status": "Đã xong",
      "purpose": "Danh sách và wizard tạo kế hoạch kinh doanh",
      "how": "Mở /app/plans/new; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Mục tiêu, interview và kỳ kế hoạch",
      "output": "Kế hoạch có ID, chiến lược và phần theo dõi",
      "implemented": "Màn hình/luồng tại src/app/app/plans/new/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/plans/new/page.tsx"
      ],
      "location": "/app/plans/new"
    },
    {
      "id": "platform-15",
      "group": "Platform",
      "phase": "F06, F07, F14",
      "phase_ids": [
        6,
        7,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Wizard thiết lập lô sản xuất",
      "status": "Đã xong",
      "purpose": "Wizard thiết lập lô sản xuất",
      "how": "Mở /app/batch/new; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Nguồn, template, matrix và ngân sách",
      "output": "Batch preview rồi mới run; kiểm gate/quota trước gọi provider",
      "implemented": "Màn hình/luồng tại src/app/app/batch/new/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/batch/new/page.tsx"
      ],
      "location": "/app/batch/new"
    },
    {
      "id": "platform-16",
      "group": "Platform",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {},
      "step": "",
      "feature": "Đăng nhập magic link/mật khẩu",
      "status": "Đã xong",
      "purpose": "Đăng nhập magic link/mật khẩu",
      "how": "Mở /login; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Email/tài khoản và cấu hình redirect Supabase",
      "output": "Phiên đăng nhập; cần URL redirect đúng môi trường",
      "implemented": "Màn hình/luồng tại src/app/login/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/login/page.tsx"
      ],
      "location": "/login"
    },
    {
      "id": "platform-17",
      "group": "Platform",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {},
      "step": "",
      "feature": "Tài khoản và đăng xuất",
      "status": "Đã xong",
      "purpose": "Tài khoản và đăng xuất",
      "how": "Mở /app/account; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Phiên người dùng và thông tin tài khoản",
      "output": "Hồ sơ tài khoản; thay tài khoản cần xóa phạm vi tổ chức cũ",
      "implemented": "Màn hình/luồng tại src/app/app/account/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/account/page.tsx"
      ],
      "location": "/app/account"
    },
    {
      "id": "platform-18",
      "group": "Platform",
      "phase": "F01, F04, F05, F14",
      "phase_ids": [
        1,
        4,
        5,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Trang Billing, credits, plan và khóa BYOK",
      "status": "Đã xong",
      "purpose": "Trang Billing, credits, plan và khóa BYOK",
      "how": "Mở /app/billing; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Tổ chức có quyền owner/admin, plan và khóa provider",
      "output": "Thông tin usage/credits và cấu hình thanh toán của app",
      "implemented": "Màn hình/luồng tại src/app/app/billing/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/billing/page.tsx"
      ],
      "location": "/app/billing"
    },
    {
      "id": "platform-19",
      "group": "Platform",
      "phase": "F05, F14",
      "phase_ids": [
        5,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Trang quản trị ứng dụng",
      "status": "Đã xong",
      "purpose": "Trang quản trị ứng dụng",
      "how": "Mở /app/admin; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Tài khoản đủ quyền và dữ liệu tổ chức",
      "output": "Màn hình quản trị; quyền server/live phải kiểm riêng",
      "implemented": "Màn hình/luồng tại src/app/app/admin/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/admin/page.tsx"
      ],
      "location": "/app/admin"
    },
    {
      "id": "platform-20",
      "group": "Platform",
      "phase": "F01, F02, F06, F07, F08, F09, F13",
      "phase_ids": [
        1,
        2,
        6,
        7,
        8,
        9,
        13
      ],
      "steps": {},
      "step": "",
      "feature": "Trang chọn model theo tác vụ",
      "status": "Đã xong",
      "purpose": "Trang chọn model theo tác vụ",
      "how": "Mở /app/models; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Tổ chức, vai trò AI và model đủ điều kiện",
      "output": "Override model chính và bảng fallback/giá tham chiếu",
      "implemented": "Màn hình/luồng tại src/app/app/models/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/models/page.tsx"
      ],
      "location": "/app/models"
    },
    {
      "id": "platform-21",
      "group": "Platform",
      "phase": "F01, F05, F12",
      "phase_ids": [
        1,
        5,
        12
      ],
      "steps": {},
      "step": "",
      "feature": "Trang thiết lập và danh sách việc cần làm tay",
      "status": "Đã xong",
      "purpose": "Trang thiết lập và danh sách việc cần làm tay",
      "how": "Mở /app/setup; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Tổ chức, cấu hình server và tự xác nhận việc thủ công",
      "output": "Báo cáo không hiển thị secret; ghi nhận tay không tự chứng minh kiểm kỹ thuật",
      "implemented": "Màn hình/luồng tại src/app/app/setup/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/setup/page.tsx"
      ],
      "location": "/app/setup"
    },
    {
      "id": "platform-22",
      "group": "Platform",
      "phase": "F01, F02, F03, F04, F05, F06, F07, F08, F09, F10, F11, F12, F13, F14",
      "phase_ids": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14
      ],
      "steps": {},
      "step": "",
      "feature": "Trang danh mục tính năng công khai, tìm/lọc và tải bảng",
      "status": "Đã xong",
      "purpose": "Trang danh mục tính năng công khai, tìm/lọc và tải bảng",
      "how": "Mở /features; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Từ khóa, phase, nhóm và trạng thái",
      "output": "Bảng feature theo phase/step và file CSV/Markdown/JSON",
      "implemented": "Màn hình/luồng tại src/app/features/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/features/page.tsx"
      ],
      "location": "/features"
    },
    {
      "id": "platform-23",
      "group": "Platform",
      "phase": "F01, F12",
      "phase_ids": [
        1,
        12
      ],
      "steps": {},
      "step": "",
      "feature": "Trang marketing Book80 và liên kết vào app",
      "status": "Đã xong",
      "purpose": "Trang marketing Book80 và liên kết vào app",
      "how": "Mở /; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Khách truy cập và nội dung giới thiệu",
      "output": "Trang giới thiệu; không chứng minh các integration đã nghiệm thu",
      "implemented": "Màn hình/luồng tại src/app/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/page.tsx"
      ],
      "location": "/"
    },
    {
      "id": "platform-24",
      "group": "Platform",
      "phase": "F10",
      "phase_ids": [
        10
      ],
      "steps": {},
      "step": "",
      "feature": "Trang xem/in bản thảo đã phân trang",
      "status": "Đã xong",
      "purpose": "Trang xem/in bản thảo đã phân trang",
      "how": "Mở /app/books; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Project, trim/font và layout đo được",
      "output": "Bản in preview và số trang; proof trên thiết bị/nhà in vẫn làm riêng",
      "implemented": "Màn hình/luồng tại src/app/app/projects/[id]/print/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/app/projects/[id]/print/page.tsx"
      ],
      "location": "/app/books"
    },
    {
      "id": "platform-25",
      "group": "Platform",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {},
      "step": "",
      "feature": "Yêu cầu email khôi phục mật khẩu",
      "status": "Đã xong",
      "purpose": "Yêu cầu email khôi phục mật khẩu",
      "how": "Mở /forgot-password; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Email tài khoản và redirect đúng môi trường",
      "output": "Email khôi phục từ Supabase, không tiết lộ tài khoản tồn tại",
      "implemented": "Màn hình/luồng tại src/app/forgot-password/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/forgot-password/page.tsx"
      ],
      "location": "/forgot-password"
    },
    {
      "id": "platform-26",
      "group": "Platform",
      "phase": "F05",
      "phase_ids": [
        5
      ],
      "steps": {},
      "step": "",
      "feature": "Đặt lại mật khẩu trong phiên khôi phục",
      "status": "Đã xong",
      "purpose": "Đặt lại mật khẩu trong phiên khôi phục",
      "how": "Mở /reset-password; chọn tài khoản/tổ chức/sách nếu công cụ yêu cầu, nhập dữ liệu, kiểm kết quả và lưu.",
      "input": "Phiên khôi phục hợp lệ và mật khẩu người dùng nhập",
      "output": "Mật khẩu cập nhật và kết thúc phiên khôi phục",
      "implemented": "Màn hình/luồng tại src/app/reset-password/page.tsx.",
      "remaining": "Phạm vi hoàn thành là màn hình/luồng hiện có; provider, quyền và nghiệm thu đầy đủ xem các chức năng chi tiết liên quan.",
      "scope": "Màn hình và luồng cơ sở; không xác nhận toàn bộ dịch vụ live",
      "verification": "Đối chiếu entry point trong mã nguồn; trạng thái live và thao tác trên dữ liệu thật không suy từ việc có trang.",
      "evidence": [
        "src/app/reset-password/page.tsx"
      ],
      "location": "/reset-password"
    },
    {
      "id": "blueprint-zero_to_hero_howto",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Zero to Hero How-To (Complete edition)",
      "purpose": "For-Dummies-style step-by-step guide for absolute beginners: First Win in 45 minutes, Minimum Viable Knowledge, 10–16 Missions each ending in an artifact, 4–6 Real-World Projects, Battle Testing fix matrix, Hero Status self-check and three Hero's Tens. 7.375×9.25 in, 320–440 pages.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. chapter_summary, key_takeaways, action_steps, tip_box, warning_box, worked_example, checklist",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/zero_to_hero_howto.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-workbook",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Workbook",
      "purpose": "Write-in companion of 10–20 sessions; each session is 30–60 minutes of guided exercises with a filled-in worked example, a checklist and reflection prompts. Teach ≤35%, Do ≥50%, Reflect ≤15%.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. exercise, worked_example, checklist, reflection_prompt, key_takeaways, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/workbook.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-study_guide",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Study Guide",
      "purpose": "Exam or course companion mapped to the official domains: diagnostic test and study calendar up front, one chapter per domain (objectives → content with worked examples → traps → practice set with explanations → quick review), two full practice tests and a last-48-hours cheat sheet.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. quiz, worked_example, key_takeaways, glossary_terms, chapter_summary, warning_box",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/study_guide.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-business_playbook",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Business Playbook",
      "purpose": "Operator's manual in three parts: the operating model and scorecard, one repeatable Play per chapter (trigger, owner, steps, templates, definition of done, metric), and the cadence/rollout/fix-it chapters. Every chapter has a case study, checklist, action steps and the expensive-mistake warning.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. action_steps, case_study, checklist, warning_box, key_takeaways, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/business_playbook.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-self_help",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Self-Help",
      "purpose": "Behaviour-change book in three movements (See it / Change it / Keep it). One idea per chapter, each with an opening scene, a model, a this-week practice, a worked example, reflection prompts and three takeaways. Non-clinical, evidence-honest.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. reflection_prompt, action_steps, worked_example, key_takeaways, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/self_help.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-cookbook",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Cookbook",
      "purpose": "Technique-first cookbook: pantry and equipment chapter, then chapters of 4–8 recipe cards sharing a technique or occasion (lesson → cards with metric/US, allergens, fix-it, variations → shopping-list checklist), closing with menus built only from the book.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. recipe_card, tip_box, warning_box, checklist, key_takeaways, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/cookbook.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-lead_magnet",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Lead Magnet",
      "purpose": "Short giveaway ebook (3k–12k words): one promise, one quick win in step-by-step chapters each with a fill-in template/checklist, worked example and tip, a common-mistakes chapter and a soft 'your next step' close. Designed to be read in one sitting on a phone.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. action_steps, checklist, tip_box, worked_example, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/lead_magnet.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-case_study_book",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Case Study Book",
      "purpose": "A thesis argued through 8–16 cases analysed with one fixed lens (situation → decision → outcome → analysis → transferable lesson → action steps), with synthesis chapters comparing cases and a closing 'your own case' template.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. case_study, worked_example, action_steps, warning_box, key_takeaways, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/case_study_book.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-checklist_book",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Checklist Book",
      "purpose": "Reference of 1–4 checklists per chapter, organised by phase or situation: trigger, time, owner, ☐/◇/○ items that are atomic and verifiable, the three most-skipped items flagged, a tip, the costliest-omission warning, a filled worked example and takeaways.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. checklist, tip_box, warning_box, worked_example, key_takeaways, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/checklist_book.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-thirty_day_challenge",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: 30-Day Challenge",
      "purpose": "Day 0 setup plus thirty daily chapters (500–1,500 words) each with one timed task, a tip, a tracker line, a reflection question and a short summary; weekly review days on 7/14/21/28 and a Day 30 finale that re-runs the baseline.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. action_steps, tip_box, reflection_prompt, checklist, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/thirty_day_challenge.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-faq_book",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: FAQ Book",
      "purpose": "Reference of 8–20 theme chapters, each answering 8–20 real reader questions (short answer → full answer → it-depends branches → do this next) with the question nobody asks, the costliest wrong answer, glossary terms and takeaways; question index for dipping in.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. faq, tip_box, warning_box, glossary_terms, key_takeaways, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/faq_book.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-interview_book",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Interview Book",
      "purpose": "Curated, edited conversations (8–20) with a shared question set and a through-line: introduction → themed Q&A from real transcripts → editor's reflection → takeaways, try-this steps and a reflection prompt; synthesis chapters compare answers; no fabricated quotes.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. case_study, key_takeaways, action_steps, reflection_prompt, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/interview_book.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-health_wellness",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Health & Wellness",
      "purpose": "Evidence-led everyday health book in six parts (baselines, nutrition, movement, sleep, mind, integration). Every chapter grades its evidence, states its measurement units and limits, ships a checklist and exercise, and carries a warning box of stop signs plus a 'when to see a clinician' boundary — no diagnosis, no prescribing, no outcome promises, every clinical number tagged [VERIFY].",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. chapter_summary, key_takeaways, checklist, warning_box, tip_box, exercise",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/health_wellness.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-finance_money",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Finance & Money",
      "purpose": "Personal finance book in seven parts (money literacy, budgeting, saving, debt, income, investing, a 90-day plan). Every chapter separates revenue from profit from cash from balance, works examples a reader can redo with a calculator, marks illustrative figures [illustrative], ships a checklist, steps and a warning box, and states which situations the advice is wrong for.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. chapter_summary, key_takeaways, checklist, worked_example, warning_box, action_steps",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/finance_money.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-travel_guide",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Travel Guide",
      "purpose": "Itinerary-shaped travel guide: a before-you-go section, one chapter per leg of a real day-by-day route with hour-by-hour days, food guidance, tiered budget tables with stated assumptions, a bad-weather fallback, a what-to-skip list and an on-the-ground FAQ, closing with a reprintable route card. Every volatile fact is sourced with a checked date or marked [VERIFY]; nothing is invented.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. action_steps, checklist, warning_box, tip_box, faq, key_takeaways, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/travel_guide.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-devotional",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Devotional",
      "purpose": "Day-by-day devotional (7–366 days): one short reading, 2–4 reflection questions and one concrete practice per day, planned as a run with a real arc instead of unrelated days. Works for faith traditions and secular practices (contemplative, Stoic, twelve-step, nature).",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. reflection_prompt, checklist, tip_box, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/devotional.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-memoir",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Memoir",
      "purpose": "First-person memoir built on a verified Story Bible: chronological or thematic chapters, each with a timeline block, a confirmed/uncertain ledger, at least one confirmed ordinary detail, a turning point that separates what the author believed then from what they believe now, a reflection prompt and a glossary of names and terms — closing on an unresolved, open ending.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. chapter_summary, key_takeaways, reflection_prompt, glossary_terms",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/memoir.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-technical_guide",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Technical Guide",
      "purpose": "Engineering handbook / SOP / runbook (6k–90k words): each chapter is one runnable procedure with prerequisites, exact commands, a verification step, a rollback note and a warning about the mistake that bites people. Includes reference and troubleshooting chapters.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. action_steps, checklist, warning_box, worked_example, tip_box, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/technical_guide.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-fiction",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Fiction & Storytelling",
      "purpose": "Novel, novella or short-story collection planned on a real beat sheet: a logline, a protagonist who wants one thing and needs another, an antagonist applying steady pressure, a per-chapter POV plan (one head per chapter, tense fixed), a resolved timeline and a research list — with mystery clues planted before the reveal, speculative rules anchored to the real world, and chapters that end on a question instead of a summary.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. scene_beats, dialogue_excerpt, continuity_note, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/fiction.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-romance",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Romance",
      "purpose": "A romance novel planned on the real arc — the meet, escalating attraction with costs, the midpoint commitment, a black moment caused by the protagonists' own choices, the separate reckoning and an explicitly negotiated HEA — with dual-POV alternation, explicit on-page consent, a contracted heat level, and period or power rules fixed before drafting.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. scene_beats, dialogue_excerpt, continuity_note, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/romance.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-kids_story",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Kids Story",
      "purpose": "A gentle children's story locked to one age band (read-aloud 3–5, early reader 5–7, or chapter book 7–9): short chapters inside a sentence cap and a vocabulary ceiling, a planned repetition map a child can join in on, one small trouble per chapter that the child protagonist decides and acts on, every frightening moment resolved within the chapter or the one after it, a glossary for every word above the ceiling, and a last line that is an image rather than a moral.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. scene_beats, dialogue_excerpt, glossary_terms, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/kids_story.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-fanfiction",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Fanfiction",
      "purpose": "Fan-inspired or alternate-universe fiction planned under a transformative-use boundary: a canon ledger (relied on / changed / added) with numbered divergences printed at the front, every chapter written to add new plot rather than re-enact canon, canon text and canon dialogue never reproduced, a per-chapter continuity note so the divergent universe cannot silently contradict itself, and a stated canon prerequisite or a cold-start-readable text.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. continuity_note, dialogue_excerpt, scene_beats, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/fanfiction.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-comedy",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Comedy",
      "purpose": "A funny, absurd or slapstick story built as one escalating arc on a single stated rule: every beat is a consequence of the one before it, plotted as a visible escalation ladder from setup to consequence with dignity as the only thing lost. No joke explained afterwards, no character laughing at the joke, no ending pun — and no humour built from harassment, slurs, disability, protected-group jokes or real tragedies.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. scene_beats, dialogue_excerpt, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/comedy.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-true_crime",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: True Crime",
      "purpose": "Real cases written from the public record — solved, cold and never solved — each planned as a timeline spine (first report → investigation → key evidentiary moment → what is still open), with the evidence actually used, the competing hypotheses including 'no longer solvable', and the contemporary view of what the reader could not know at the time. Every claim carries its source or is tagged [VERIFY]; unresolved cases stay unresolved.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. chapter_summary, key_takeaways, glossary_terms, faq",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/true_crime.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-poetry",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Poetry",
      "purpose": "Verse collections and prose poems built on the author's own voice: every poem's form (free verse, sonnet, villanelle, prose poem, found) and governing image is stated in the plan, line breaks and enjambment are treated as meaning, and the collection carries a stated arc and ordering rationale rather than a random pile. Poems are never written, paraphrased or explained by the manuscript, and no poem narrates another real person's trauma or attacks a named person.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. chapter_summary, key_takeaways, reflection_prompt",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/poetry.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-picture_book",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Picture Book",
      "purpose": "Illustrated storybook of 8–24 spreads with exactly one planned picture per spread, 40–120 words of text on the facing page, a registered cast in the Visual Bible so the same characters repeat, and a hard child-safety floor (no unresolved threat, no weapons or gore, no brands or real places).",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. image_placement, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/picture_book.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-coloring_book",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Coloring Book",
      "purpose": "Printable line-art book of 20–60 pages on one theme: closed outlines only, large enclosed areas, no shading or grey fill, thick uniform strokes and real margins, with a how-to-use page at the front, a theme index at the back and a printing note for the adult.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. image_placement, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/coloring_book.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-abc_counting",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: ABC & Counting Book",
      "purpose": "One letter or one number per page: 26 A–Z spreads, 1–20 counting spreads, or both. Each page carries one dominant visual, minimal page text, the letterform set in page type, and a hard counting rule that the printed number always equals the number of objects drawn.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. image_placement, chapter_summary",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/abc_counting.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    },
    {
      "id": "blueprint-journal_mixed",
      "group": "Blueprint",
      "phase": "F01, F03, F06, F07",
      "phase_ids": [
        1,
        3,
        6,
        7
      ],
      "steps": {
        "1": [
          1,
          3
        ],
        "3": [
          4
        ],
        "6": [
          2,
          4
        ],
        "7": [
          1,
          2
        ]
      },
      "step": "",
      "feature": "Loại sách: Journal, Planner & Mixed-Media",
      "purpose": "A mixed layout toolkit rather than a single genre: the interview picks a layout family (daily journal, gratitude and reflection, project planner, reading log, travel journal, growth workbook or unstructured free journal) and every chapter is one repeatable spread carrying a prompt, blank fields, deliberate space and a stated variation from the last spread. No invented entries — prompts and space, with at most one [example]-marked worked example — plus a 'how to skip a day' note, because real journals get abandoned.",
      "how": "Mở Sách → Tạo sách → chọn loại sách này → trả lời phỏng vấn → kiểm Brief → tạo/duyệt dàn ý → thử chương mẫu.",
      "input": "Độc giả, chủ đề, lời hứa, ngôn ngữ, quy mô, quyền và nguồn. exercise, checklist, reflection_prompt, worked_example",
      "output": "Brief/dàn ý và required elements theo blueprint; chất lượng generation cần kiểm mẫu.",
      "implemented": "Có blueprint, schema và interview trong catalogue.",
      "remaining": "Chưa chứng minh mọi loại sách đã sinh và nghiệm thu đầu-cuối. Loại có hình còn cần provider ảnh và kiểm file.",
      "status": "Đang làm",
      "scope": "Blueprint đã có; generation theo từng thể loại chưa nghiệm thu hết",
      "verification": "Kiểm định nghĩa nguồn và danh mục; không gọi AI trả phí.",
      "evidence": [
        "src/lib/blueprints/journal_mixed.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief"
    }
  ]
}
