{
  "date": "2026-10-12",
  "phase_count": 14,
  "step_count": 78,
  "feature_count": 480,
  "legacy_count": 188,
  "capability_count": 237,
  "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",
    "pwa",
    "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/override",
    "/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/brands",
    "/api/v1/byok/[id]",
    "/api/v1/byok",
    "/api/v1/me",
    "/api/v1/models/overrides",
    "/api/v1/openapi.json",
    "/api/v1/runs/[id]",
    "/api/v1/sales/ai-costs",
    "/api/v1/sales/records"
  ],
  "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.",
  "reviewed_individually": 216,
  "reviewed_ids": [
    "cap-pwa-1",
    "cap-ai-3",
    "cap-sales-1",
    "cap-sales-2",
    "cap-sales-3",
    "cap-ai-7",
    "cap-quality-ops-5",
    "cap-integrations-6",
    "cap-integrations-1",
    "cap-integrations-2",
    "cap-integrations-3",
    "cap-integrations-4",
    "legacy-14",
    "legacy-15",
    "legacy-16",
    "legacy-17",
    "legacy-18",
    "legacy-19",
    "legacy-20",
    "legacy-21",
    "legacy-27",
    "legacy-34",
    "legacy-35",
    "legacy-41",
    "legacy-42",
    "legacy-48",
    "legacy-55",
    "legacy-62",
    "legacy-63",
    "legacy-69",
    "legacy-75",
    "legacy-81",
    "legacy-87",
    "legacy-88",
    "legacy-89",
    "legacy-90",
    "legacy-97",
    "legacy-98",
    "legacy-105",
    "legacy-106",
    "legacy-107",
    "legacy-108",
    "legacy-186",
    "legacy-187",
    "legacy-188",
    "core-1-gen-canonical-ts",
    "core-2-gen-canonical-store-ts",
    "core-3-parse-docx-ts",
    "core-4-find-replace-ts",
    "core-5-snapshots-ts",
    "core-6-claims-ledger-ts",
    "core-7-editions-ts",
    "core-8-epub-ts",
    "core-9-epub-ts",
    "core-10-course-ts",
    "core-11-channel-kdp-ts",
    "core-12-readiness-ts",
    "core-13-audit-ts",
    "core-14-style-normalize-ts",
    "core-15-cloud-sync-ts",
    "core-16-sop-cloud-ts",
    "core-17-sop-comparison-ts",
    "core-18-sop-research-clusters-ts",
    "core-19-sop-research-summary-ts",
    "core-20-sop-promise-coverage-ts",
    "core-21-sop-monthly-forecast-ts",
    "core-22-sop-cohort-ts",
    "core-23-sop-financial-events-ts",
    "core-24-sop-generation-gate-ts",
    "core-25-sop-engine-ts",
    "platform-1",
    "platform-2",
    "platform-3",
    "platform-4",
    "platform-5",
    "platform-6",
    "platform-7",
    "platform-8",
    "platform-9",
    "platform-10",
    "platform-11",
    "platform-12",
    "platform-13",
    "platform-14",
    "platform-15",
    "platform-16",
    "platform-17",
    "platform-18",
    "platform-19",
    "platform-20",
    "platform-21",
    "platform-22",
    "platform-23",
    "platform-24",
    "platform-25",
    "platform-26",
    "legacy-71",
    "legacy-1",
    "legacy-2",
    "legacy-3",
    "legacy-4",
    "legacy-5",
    "legacy-6",
    "legacy-7",
    "legacy-8",
    "legacy-9",
    "legacy-10",
    "legacy-11",
    "legacy-12",
    "legacy-13",
    "legacy-22",
    "legacy-23",
    "legacy-24",
    "legacy-25",
    "legacy-26",
    "legacy-28",
    "legacy-29",
    "legacy-30",
    "legacy-31",
    "legacy-32",
    "legacy-33",
    "legacy-36",
    "legacy-37",
    "legacy-38",
    "legacy-39",
    "legacy-40",
    "legacy-43",
    "legacy-44",
    "legacy-45",
    "legacy-46",
    "legacy-47",
    "legacy-49",
    "legacy-50",
    "legacy-51",
    "legacy-52",
    "legacy-53",
    "legacy-54",
    "legacy-56",
    "legacy-57",
    "legacy-58",
    "legacy-59",
    "legacy-60",
    "legacy-61",
    "legacy-64",
    "legacy-65",
    "legacy-66",
    "legacy-67",
    "legacy-68",
    "legacy-70",
    "legacy-72",
    "legacy-73",
    "legacy-74",
    "legacy-76",
    "legacy-77",
    "legacy-78",
    "legacy-79",
    "legacy-80",
    "legacy-82",
    "legacy-83",
    "legacy-84",
    "legacy-85",
    "legacy-86",
    "legacy-91",
    "legacy-92",
    "legacy-93",
    "legacy-94",
    "legacy-95",
    "legacy-96",
    "legacy-99",
    "legacy-100",
    "legacy-101",
    "legacy-102",
    "legacy-103",
    "legacy-104",
    "legacy-109",
    "legacy-110",
    "legacy-111",
    "legacy-112",
    "legacy-113",
    "legacy-114",
    "legacy-115",
    "legacy-116",
    "legacy-117",
    "legacy-118",
    "legacy-119",
    "legacy-120",
    "blueprint-zero_to_hero_howto",
    "blueprint-workbook",
    "blueprint-study_guide",
    "blueprint-business_playbook",
    "blueprint-self_help",
    "blueprint-cookbook",
    "blueprint-lead_magnet",
    "blueprint-case_study_book",
    "blueprint-checklist_book",
    "blueprint-thirty_day_challenge",
    "blueprint-faq_book",
    "blueprint-interview_book",
    "blueprint-health_wellness",
    "blueprint-finance_money",
    "blueprint-travel_guide",
    "blueprint-devotional",
    "blueprint-memoir",
    "blueprint-technical_guide",
    "blueprint-fiction",
    "blueprint-romance",
    "blueprint-kids_story",
    "blueprint-fanfiction",
    "blueprint-comedy",
    "blueprint-true_crime",
    "blueprint-poetry",
    "blueprint-picture_book",
    "blueprint-coloring_book",
    "blueprint-abc_counting",
    "blueprint-journal_mixed",
    "cap-knowledge-1"
  ],
  "status_source": "scripts/features/status-overrides.json",
  "reviewed_on": "2026-10-13",
  "done_reviewed": 209,
  "done_unreviewed": 0,
  "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=1",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=1",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=1",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=1",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=1",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=1",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "2",
      "feature": "So sánh sách và giải pháp thay thế",
      "status": "Đã xong",
      "implemented": "Catalog đối thủ sách/khóa học/tool/service; tìm URL thật qua Tavily",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "3",
      "feature": "Quan sát tìm kiếm / BSR / giá",
      "status": "Đã xong",
      "implemented": "Quan sát giá/search/BSR có nguồn/ngày/cửa sổ; unknown khác zero",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "4",
      "feature": "Phân tích review và phỏng vấn",
      "status": "Đã xong",
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F02",
      "step": "6",
      "feature": "Thử thông điệp, mẫu và nhu cầu mua",
      "status": "Đã xong",
      "implemented": "Registry message/sample/paid/preorder/price/cover/blurb; mẫu số/chi tiêu/attribution",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=3",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=3",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=3",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=3",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=3",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=3",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F04",
      "step": "4",
      "feature": "Lập kịch bản và CAC / LTV",
      "status": "Đã xong",
      "implemented": "Bảng conservative/base/optimistic, CAC/LTV có evidence riêng",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=5",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=5",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=5",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F05",
      "step": "4",
      "feature": "Ghi hồ sơ AI và dịch vụ được phép",
      "status": "Đã xong",
      "implemented": "Hồ sơ AI/data policy, provenance, giới hạn dịch vụ",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=5",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F05",
      "step": "5",
      "feature": "Cấp quyền tối thiểu và kế hoạch sao lưu",
      "status": "Đã xong",
      "implemented": "Authz/RLS nền tảng, backup hồ sơ, CAS và lịch sử",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=5",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=5",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=5",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=6",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=6",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=6",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F06",
      "step": "4",
      "feature": "Tạo chương / công cụ mẫu",
      "status": "Đã xong",
      "implemented": "Sinh một chương mẫu riêng + form chapter/tool/translation/audio sample",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=6",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=6",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=6",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "1",
      "feature": "Giao chapter briefs",
      "status": "Đã xong",
      "implemented": "Chapter brief/dependency/context pack",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=7",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "2",
      "feature": "Viết phần đủ nguồn",
      "status": "Đã xong",
      "implemented": "Generation engine, stream, DAG/Inngest, resume và model router",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=7",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "3",
      "feature": "Lưu nguồn cạnh claim",
      "status": "Đã xong",
      "implemented": "References/citations/claim evidence; source có quyền",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=7",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F07",
      "step": "4",
      "feature": "Cập nhật canon",
      "status": "Đã xong",
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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",
        "src/lib/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=7",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=7",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=7",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=7",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=8",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F08",
      "step": "2",
      "feature": "Kiểm nguồn / công thức / quyền",
      "status": "Đã xong",
      "implemented": "Claims Ledger/citations/rights checks; reviewer và retest",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=8",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F08",
      "step": "3",
      "feature": "Biên tập dòng và câu",
      "status": "Đã xong",
      "implemented": "Smart Editor/line edit/action proposals và provenance",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=8",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=8",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=8",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=8",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=8",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=8",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F09",
      "step": "1",
      "feature": "Nghiên cứu thị trường đích riêng",
      "status": "Đã xong",
      "implemented": "F09 target-market brief và dữ liệu nghiên cứu theo locale",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=9",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=9",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F09",
      "step": "3",
      "feature": "Brief / glossary / mẫu dịch",
      "status": "Đã xong",
      "implemented": "Block translation/remix, sample registry, glossary",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=9",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=9",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F09",
      "step": "5",
      "feature": "Thử bản địa và khóa edition",
      "status": "Đã xong",
      "implemented": "Edition manager/source stale, test bản địa và lock",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=9",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=9",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "1",
      "feature": "Thiết kế bìa theo định vị",
      "status": "Đã xong",
      "implemented": "Cover templates/Visual Bible/spine/bleed math và cover brief",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=10",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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 nhận font thực tế trước phát hành; máy không tự biết mực in đậm nhạt, mép cắt lệch hay bìa bóng.",
      "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",
        "src/lib/pagination/measure.ts",
        "src/app/app/projects/[id]/print/page.tsx",
        "src/lib/pagination/pagination.spec.ts"
      ],
      "location": "/app/books?phase=10",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "3",
      "feature": "Tạo EPUB / PDF theo kênh",
      "status": "Đã xong",
      "implemented": "Export EPUB/DOCX/PDF có nguồn canonical; SCORM/PPT/XLSX helpers",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=10",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "4",
      "feature": "Kiểm tiếp cận tự động và thủ công",
      "status": "Đã xong",
      "implemented": "A11y rules và F10 records EPUBCheck/ACE/screen reader",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=10",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F10",
      "step": "5",
      "feature": "Proofread / proof rồi khóa checksum",
      "status": "Đã xong",
      "implemented": "Checksum/version/proof/manual results được quản lý",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=10",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=10",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=11",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F11",
      "step": "2",
      "feature": "Mẫu / bản trống / reset / hướng dẫn",
      "status": "Đã xong",
      "implemented": "Course/remix/template/tool libraries và registry test/reset/instructions",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuố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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=11",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=11",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F11",
      "step": "4",
      "feature": "Kiểm audio account / voice / route",
      "status": "Đã xong",
      "implemented": "Audio voice/account/route/rights fields và adapter TTS",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=11",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F11",
      "step": "5",
      "feature": "Duyệt mẫu, nghe toàn bộ và QC",
      "status": "Đã xong",
      "implemented": "Audio sample/QC helpers/media worker và nghe duyệt trong hồ sơ",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=11",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=11",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuố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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F12",
      "step": "2",
      "feature": "Metadata / ISBN / giá / disclosure",
      "status": "Đã xong",
      "implemented": "Metadata/pricing/disclosure/ISBN, blueprint validator",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F12",
      "step": "4",
      "feature": "Thử đơn trọn vòng",
      "status": "Đã xong",
      "implemented": "Test-order registry; Stripe Checkout gói/credits app",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F12",
      "step": "5",
      "feature": "Duyệt release candidate và phát hành",
      "status": "Đã xong",
      "implemented": "Release evidence/version/external IDs; publish route/packaging có nền",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuố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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=12",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "1",
      "feature": "Chuẩn bị trước 28 ngày",
      "status": "Đã xong",
      "implemented": "Launch kit/calendar/checklist và cửa sổ prelaunch Campaign được nối vào lịch SOP.",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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",
        "src/lib/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=13",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "2",
      "feature": "ARC tự nguyện và thử giao",
      "status": "Đã xong",
      "implemented": "ARC voluntary, reviewer/task/evidence trong hồ sơ",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=13",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=13",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=13",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F13",
      "step": "5",
      "feature": "Ngày 31–90 đo đóng góp / mua tiếp",
      "status": "Đã xong",
      "implemented": "Sales/portfolio contribution, cohort fields và import primitives",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=13",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuố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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts"
      ],
      "location": "/app/books?phase=13",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=13",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=13",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-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ần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "2",
      "feature": "P&L theo SKU / cash / cohort",
      "status": "Đã xong",
      "implemented": "Tách retail/royalty/refund/cost/cash/currency; thiếu dữ liệu vẫn null",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "3",
      "feature": "Rà hoàn tiền và support",
      "status": "Đã xong",
      "implemented": "Portfolio/refund/support records và phân tích sales",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Phase step",
      "phase": "F14",
      "step": "4",
      "feature": "Cập nhật source / editions / audio / tools",
      "status": "Đã xong",
      "implemented": "Change register/content anchors/edition versions/merge/snapshots",
      "remaining": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "src/lib/sop/csv.ts",
        "src/lib/sop/collections.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước này đã có và được đo. Còn nằm ở phạm vi khác: nghiệm thu người thật, dữ liệu thật của một tài khoản, và các kênh/provider bên ngoài (KDP, audio, D2C) vốn chưa nối đầu-cuối.",
      "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 có đường thực thi trong app và cổng kiểm chặn duyệt giai đoạn",
      "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/sop/guide.ts",
        "src/components/sop/step-guide.tsx",
        "src/components/sop/phase-panel.tsx",
        "src/lib/sop/step-execution.spec.ts",
        "e2e/step-guide-navigation.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=14",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Số lượng ngách là hướng dẫn, không phải cổng cứng. Chưa có registry độ phủ nghiên cứu đầy đủ theo nguồ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": "Biểu mẫu ngách ứng viên có người mua và người sử dụng riêng, kèm nguồn và ngày quan sát",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "SAI LỆCH ĐO ĐƯỢC: claim gốc ghi “Kế hoạch/method/budget/scope”, nhưng hồ sơ F02 chỉ có question, method, reach, conclusion, next_test — không có trường budget hay scope. Ngân sách nghiên cứu là `research_budget` của F01. Thiếu câu hỏi nghiên cứu thì `phaseProblems` chặn, không duyệt được F02.",
      "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": "Hồ sơ F02 có câu hỏi nghiên cứu, phương pháp, tầm với, kết luận và lần thử rẻ nhất kế tiếp",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Đã xong",
      "implemented": "Catalog tay/CSV + Tavily URL; chưa tự extract marketplace",
      "remaining": "Chưa tự trích xuất từ marketplace — vẫn nhập tay hoặc qua CSV. Nguồn tìm kiếm cần khoá Tavily và tính phí theo lượt.",
      "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": "Catalog sản phẩm đối chiếu nhận cả giải pháp ngoài sách, kèm nguồn tìm kiếm có thời điểm quan sát",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts",
        "src/lib/market/research-search.ts",
        "src/lib/market/research-search.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R04",
      "feature": "Quan sát search/BSR/price theo thời gian",
      "status": "Đã xong",
      "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": "Adapter DataForSEO search-volume có mã và test, nhưng CHƯA xác thực live: lượt đo trước đây trả status_code 40100 (thiếu cấu hình). BSR và competition chưa có nguồn nào.",
      "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": "Quan sát có ngày và cửa sổ; thiếu dữ liệu thì ghi “chưa biết” chứ không ghi 0",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts",
        "src/lib/market/dataforseo.ts",
        "src/lib/market/dataforseo.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R05",
      "feature": "Chọn mẫu review tích cực/trung tính/tiêu cực",
      "status": "Đã xong",
      "implemented": "Corpus/rights/theme; summary loại trùng và đếm sắc thái; AI clustering chưa có",
      "remaining": "Chưa có AI clustering chủ đề. Quyền dùng dữ liệu review ghi ở cột rights và do người dùng xác nhận, không tự suy ra.",
      "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": "Tổng hợp review: loại trùng, đếm riêng ba sắc thái, giữ nguyên bằng chứng gốc",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts",
        "src/lib/sop/research-summary.ts",
        "src/lib/sop/research-summary.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R06",
      "feature": "Phỏng vấn khoảng 10–15 người đúng đối tượng",
      "status": "Đã xong",
      "implemented": "Notes/consent/quote; chưa upload transcript→AI coding workflow",
      "remaining": "Chưa có đường nhập transcript và mã hoá người tham gia — consent là khai trong biểu mẫu, không phải cổng ký.",
      "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ỏng vấn bắt buộc có consent; dữ liệu chưa được chấp nhận thì không lọt vào báo cáo",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phản chứng là ô tự do; chưa có kiểm ngược tự động bằng nguồn bên ngoài.",
      "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": "Nhu cầu phải trỏ tới bằng chứng quan sát hợp lệ, kèm ô phản chứng",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R08",
      "feature": "Thiết kế hai thông điệp và trang thử",
      "status": "Đã xong",
      "implemented": "Experiment variants/window/budget; chưa deploy trang và telemetry",
      "remaining": "Không tự đăng trang thử hay chạy quảng cáo. Số liệu phải nhập tay sau khi thử.",
      "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": "Thử nghiệm có giả thuyết, biến thể, cửa sổ đo, hạn mức và yếu tố nhiễu",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Nghiệm thu người thật là việc ngoài phần mềm. AI simulation không thay kết quả này.",
      "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": "Mẫu có phiên bản, nhiệm vụ thử, người kiểm định và kết quả",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "group": "Research",
      "phase": "F02",
      "step": "R10",
      "feature": "Kiểm willingness-to-pay nếu phù hợp",
      "status": "Đã xong",
      "implemented": "Orders/refunds import có nền; chưa payment/delivery cho độc giả",
      "remaining": "Chưa có thanh toán và giao file cho độc giả. Bản nhập là CSV quan sát; chưa tự đối soát với báo cáo nguồ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": "Sổ giao dịch tách bán lẻ / tiền hưởng / hoàn tiền / tiền về; thiếu dữ liệu thì báo chưa biết",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts",
        "src/lib/sop/financial-events.ts",
        "src/lib/sop/financial-events.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "A/B không có nhóm đối chứng thì nhãn nói rõ chưa chứng minh quan hệ nhân quả. Không suy ra doanh số từ BSR.",
      "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": "Tỷ lệ kèm khoảng Wilson; thiếu mẫu thì không bịa số",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts",
        "src/lib/sop/engine.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Quyết định là do người vận hành ghi, không phải chữ ký số hay xác thực danh tính. Dữ liệu hoặc bản thảo đổi thì quyết định cũ mất hiệu lực.",
      "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": "Quyết định F02 lưu người duyệt, lý do, vốn tiếp theo, điều kiện xem lại và lịch sử",
      "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/sop/research-steps.spec.ts",
        "src/lib/sop/engine.ts",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=2",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 15 symbol export; được 6 module thật sự import (src/inngest/functions/generate-book.ts, src/lib/generation/context-pack.spec.ts, src/lib/generation/engine.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/generation/context-pack.ts",
        "src/lib/ai/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 31 symbol export; được 250 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/api/cover/prompts/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/gen/types.ts",
        "src/lib/bible/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: src/lib/quality/ (thư mục: 7 file mã nguồn; chưa đo tới được từng file) | src/lib/quality-ops/ (thư mục: 6 file mã nguồn; chưa đo tới được từng file) | src/lib/debate/ (thư mục: 20 file mã nguồn; chưa đo tới được từng file). Số đo này chỉ nói mã tới được, KHÔNG nói hành vi đúng — mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/quality/",
        "src/lib/quality-ops/",
        "src/lib/debate/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: src/lib/cover/ (thư mục: 8 file mã nguồn; chưa đo tới được từng file). Số đo này chỉ nói mã tới được, KHÔNG nói hành vi đúng — mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/"
      ],
      "location": "/app/books?phase=10",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 18 symbol export; được 13 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/components/studio/export-tab.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/layout-profiles.ts"
      ],
      "location": "/app/books?phase=10",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: src/lib/audio/ (thư mục: 16 file mã nguồn; chưa đo tới được từng file). Số đo này chỉ nói mã tới được, KHÔNG nói hành vi đúng — mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: src/lib/publish/ (thư mục: 8 file mã nguồn; chưa đo tới được từng file) | src/lib/sales/ (thư mục: 12 file mã nguồn; chưa đo tới được từng file). Số đo này chỉ nói mã tới được, KHÔNG nói hành vi đúng — mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/",
        "src/lib/sales/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 17 symbol export; được 8 module thật sự import (src/app/api/publish/metadata/route.ts, src/components/studio/publish-tab.tsx, src/lib/market/author-site.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/metadata-optimizer.ts",
        "src/lib/launch/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: src/lib/blueprints/ (thư mục: 35 file mã nguồn; chưa đo tới được từng file) | src/lib/batch/ (thư mục: 16 file mã nguồn; chưa đo tới được từng file) | src/lib/marketplace/ (thư mục: 6 file mã nguồn; chưa đo tới được từng file). Số đo này chỉ nói mã tới được, KHÔNG nói hành vi đúng — mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/blueprints/",
        "src/lib/batch/",
        "src/lib/marketplace/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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ữ Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 9 symbol export; được 6 module thật sự import (src/components/studio/publish-tab.tsx, src/lib/citations/backtranslate-model.ts, src/lib/citations/glossary.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/translate.ts"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: src/lib/trust/ (thư mục: 6 file mã nguồn; chưa đo tới được từng file) | src/lib/factcheck/ (thư mục: 10 file mã nguồn; chưa đo tới được từng file). Số đo này chỉ nói mã tới được, KHÔNG nói hành vi đúng — mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/trust/",
        "src/lib/factcheck/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 22 symbol export; được 10 module thật sự import (src/app/api/market/sample/route.ts, src/components/studio/market-ports.ts, src/components/studio/real-market-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/niche-score.ts",
        "src/lib/sales/",
        "src/lib/eval/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 9 symbol export; được 6 module thật sự import (src/components/studio/publish-tab.tsx, src/lib/citations/backtranslate-model.ts, src/lib/citations/glossary.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/translate.ts",
        "src/lib/refs/",
        "src/lib/podcast/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 PWA: có manifest.webmanifest, icon PNG 192/512/180 và service worker có phiên bản; điều kiện cài app kiểm bằng src/lib/pwa/install-readiness.ts.",
      "remaining": "Còn thiếu: phiên người dùng thật cho lưu/đọc cloud, CRDT ngoại tuyến và native app. Service worker cố ý KHÔNG cache /api/* — số liệu phải luôn lấy từ mạng. Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phần đã có.",
      "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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phần đã có.",
      "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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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ệ Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phần đã có.",
      "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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 18 symbol export; được 4 module thật sự import (src/components/studio/enterprise-ports.ts, src/lib/enterprise/brand-repo.ts, src/lib/enterprise/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/white-label.ts",
        "src/lib/api-auth/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 19 symbol export; được 16 module thật sự import (src/app/api/audio/sample/route.ts, src/components/studio/audio-tab.tsx, src/components/studio/podcast-ports.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/voices.ts"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 28 symbol export; được 2 module thật sự import (src/components/studio/collab-ports.ts, src/lib/collab/oplog.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/collab/oplog.ts"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 22 symbol export; được 10 module thật sự import (src/app/api/market/sample/route.ts, src/components/studio/market-ports.ts, src/components/studio/real-market-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/niche-score.ts"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 21 symbol export; được 11 module thật sự import (src/components/studio/publish-tab.tsx, src/lib/marketplace/index.ts, src/lib/marketplace/profit.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/pricing.ts",
        "src/lib/sales/price-experiment.ts"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 9 symbol export; được 6 module thật sự import (src/app/api/illustrations/render/route.ts, src/lib/cover/cover.spec.ts, src/lib/cover/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/visual-bible.ts"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 18 symbol export; được 4 module thật sự import (src/components/studio/reader-insight-ports.ts, src/lib/reader-insight/feedback.spec.ts, src/lib/reader-insight/index.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/reader-insight/feedback.ts",
        "src/lib/sales/"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 34 symbol export; được 4 module thật sự import (src/components/studio/launch-ports.spec.ts, src/components/studio/launch-ports.ts, src/lib/launch/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/launch/launch-kit.ts"
      ],
      "location": "/app/books?phase=13",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phần đã có.",
      "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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 3 symbol export; được 2 module thật sự import (src/lib/bible/bible.spec.ts, src/lib/bible/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/bible/series.ts",
        "src/lib/sales/series-planner.ts",
        "src/lib/market/reading-order.ts"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phần đã có.",
      "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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phần đã có.",
      "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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phần đã có.",
      "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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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ó Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phầ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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Khu vực sản phẩm theo PRD; các file nêu trong “Phần đã triển khai” đã đo",
      "verification": "Đo 2026-10-13: 18 symbol export; được 4 module thật sự import (src/components/studio/enterprise-ports.ts, src/lib/enterprise/brand-repo.ts, src/lib/enterprise/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/white-label.ts"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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 đủ Dòng này không nêu file nào; danh mục không gán bằng chứng giả. Xem các mục `cap-*` của khu vực tương ứng để biết phần đã có.",
      "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": "Khu vực sản phẩm theo PRD — chưa có implementation nào được nêu",
      "verification": "Đo 2026-10-13: trường “Phần đã triển khai” không chứa đường dẫn nào tồn tại, nên KHÔNG suy ra được bằng chứng cho khu vực này.",
      "evidence": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": [
        "docs/f2-prd-scope-decision-2026-10-11.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/A",
      "step": "S01",
      "feature": "14-phase model/rail/deep links; registry hiện có",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/A",
      "step": "S02",
      "feature": "Handoffs F01–F14 và quyết định/authorized spend",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/A",
      "step": "S03",
      "feature": "Canonical project, CAS/stale, metadata/export chung",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/A",
      "step": "S04",
      "feature": "Investment Brief buyer/user/budget/loss cap",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=1",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S05",
      "feature": "Research data contracts/provenance/imports",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S06",
      "feature": "Candidate + competitor catalog",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S07",
      "feature": "Review corpus/theme + interview workflows",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S08",
      "feature": "Needs matrix và evidence-linked synthesis",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S09",
      "feature": "Experiment registry/message/sample/payment results",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/B",
      "step": "S10",
      "feature": "F02 evidence adequacy và scanner/bridge correction",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=2",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/B→D",
      "step": "S11",
      "feature": "F06 sample generation/tool và human sample acceptance",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=6",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/C",
      "step": "S12",
      "feature": "Product/SKU/offer và promise coverage",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/C",
      "step": "S13",
      "feature": "Assumptions/unit economics/scenario engine",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=4",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/C",
      "step": "S14",
      "feature": "13-week cashflow, commitments, payouts/reconciliation",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/A→C",
      "step": "S15",
      "feature": "Rights/contracts/data permissions/policy registry",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=5",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/A→C",
      "step": "S16",
      "feature": "Pricing/calendar/link policy discrepancies",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=12",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/D",
      "step": "S17",
      "feature": "Live jobs/storage/credits, retry/hydrate",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=7",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P1/D",
      "step": "S18",
      "feature": "Context/temporal canon + anti-repetition",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=7",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/D",
      "step": "S19",
      "feature": "SOP editorial + reader task testing + source lock",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=8",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P2/D sau core",
      "step": "S20",
      "feature": "Quick Start/chat/Sensory/selection proposals",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P1/E optional",
      "step": "S21",
      "feature": "Translation market case/sample/bilingual review",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=9",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/E",
      "step": "S22",
      "feature": "Interior/page count/bìa/RTL/a11y/proof",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=10",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P1/E",
      "step": "S23",
      "feature": "Tool/course delivery QA, copy/reset/support",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=11",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P1/E optional",
      "step": "S24",
      "feature": "Audio account/voice/route eligibility, sample/jobs/QC",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=11",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/E",
      "step": "S25",
      "feature": "Routes/exclusivity/ISBN/metadata/final release",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=12",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P0/E",
      "step": "S26",
      "feature": "D2C order/delivery/refund/consent/email setup checklist",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=12",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P1/F",
      "step": "S27",
      "feature": "Launch calendar/ARC, tracking/ads import, 30/90 reviews",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=13",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P1/F",
      "step": "S28",
      "feature": "Portfolio close/cohort/changes/licensing pipeline",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books?phase=14",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P2/G",
      "step": "S29",
      "feature": "Provider/trend/ads/email/POD integrations",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "group": "Backlog",
      "phase": "P1–P2/G",
      "step": "S30",
      "feature": "CRDT/offline/chapter permissions, agency production",
      "status": "Đang làm",
      "implemented": "Điều kiện nghiệm thu theo kế hoạch, không phải mã nguồn đang thiếu. Phần mềm dùng để nghiệm thu là các bước phase tương ứng — xem từng bước đã rà ở cùng phase.",
      "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": "Điều kiện nghiệm thu theo kế hoạch — chưa có lượt nghiệm thu người thật",
      "verification": "Đối chiếu tiêu chí với kế hoạch và bằng chứng của các bước phase liên quan. Chưa có lượt nghiệm thu người/dữ liệu thật nên không nâng lên “Đã xong”.",
      "evidence": [
        "docs/plan-comprehensive-prd-gap-analysis-2026-10-10.md"
      ],
      "location": "/app/books",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=3",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn để xác nhận định dạng cột theo từng nền tảng; CSV đã kiểm là giới hạn máy.",
      "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, nhập/xuất CSV và kiểm lỗi tại 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/sop/csv.ts",
        "src/components/sop/record-editor.tsx",
        "src/lib/sop/collections.spec.ts"
      ],
      "location": "/app/books?phase=4",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 3 module thật sự import (src/app/api/v1/models/overrides/route.ts, src/lib/ai/org-overrides.spec.ts, src/lib/gen/wire.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ai/org-overrides.ts"
      ],
      "location": "/app/models",
      "tool": "models",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 13 module thật sự import (src/app/app/models/page.tsx, src/components/studio/model-overrides-panel.tsx, src/lib/ai/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ai/routing.ts"
      ],
      "location": "/app/models",
      "tool": "models",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đã xong",
      "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": "Giá đổi theo thời gian; `npm run config:models` đối chiếu catalog và báo lệch >5%. Còn provider khác ngoài OpenRouter chưa có giá cập nhật tự động.",
      "scope": "Registry là nguồn giá/context duy nhất cho định tuyến",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/ai/registry.ts",
        "scripts/check-model-catalog.mjs",
        "src/lib/ai/sample-tiers.spec.ts"
      ],
      "location": "/app/models",
      "tool": "models",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 4 module thật sự import (src/lib/ai/index.ts, src/lib/ai/openrouter-routing.spec.ts, src/lib/ai/providers.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ai/providers.ts"
      ],
      "location": "/app/models",
      "tool": "models",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 23 symbol export; được 7 module thật sự import (src/app/api/review/session/route.ts, src/lib/ai/index.ts, src/lib/ai/provider-smoke.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ai/router.ts"
      ],
      "location": "/app/models",
      "tool": "models",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 3 module thật sự import (src/app/api/v1/byok/route.ts, src/lib/ai/index.ts, src/lib/ai/router.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ai/byok.ts"
      ],
      "location": "/app/models",
      "tool": "models",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đang làm",
      "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": "Đo bằng probe-capabilities.mjs: 4 symbol của phase-models.ts chỉ xuất hiện trong spec của chính nó, 0 chỗ khác. Bảng đối chiếu không được màn hình nào hiện ra.",
      "scope": "Bảng đối chiếu có code + test; chưa có nơi hiện cho người dùng",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/ai/phase-models.ts",
        "src/lib/ai/phase-models.spec.ts",
        "scripts/features/probe-capabilities.mjs"
      ],
      "location": "/app/models",
      "tool": "models",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Đang làm",
      "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 — có mã, chưa rà riêng",
      "verification": "Đo 2026-10-13: 8 symbol export; được 3 module thật sự import (src/lib/ai/cost.spec.ts, src/lib/ai/index.ts, src/lib/sales/margin.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ai/cost.ts"
      ],
      "location": "/app/models",
      "tool": "models",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 26 module thật sự import (src/app/api/batch/run/route.ts, src/app/api/gen/generate/route.ts, src/app/api/gen/outline/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/blueprints/brief.ts"
      ],
      "location": "/app/books",
      "tool": "brief",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 17 symbol export; được 39 module thật sự import (src/app/api/batch/run/route.ts, src/app/api/gen/generate/route.ts, src/app/api/gen/outline/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/blueprints/schema.ts"
      ],
      "location": "/app/books",
      "tool": "brief",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 24 module thật sự import (src/app/api/batch/run/route.ts, src/app/api/gen/generate/route.ts, src/app/api/gen/outline/route.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/blueprints/fit-brief.ts"
      ],
      "location": "/app/books",
      "tool": "brief",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 4 module thật sự import (src/app/api/market/research/route.spec.ts, src/app/api/market/research/route.ts, src/components/sop/research-search.tsx); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/research-search.ts"
      ],
      "location": "/app/books",
      "tool": "market",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 20 symbol export; được 4 module thật sự import (src/app/api/market/sample/route.spec.ts, src/app/api/market/sample/route.ts, src/lib/market/dataforseo.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/dataforseo.ts"
      ],
      "location": "/app/books",
      "tool": "market",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 22 symbol export; được 10 module thật sự import (src/app/api/market/sample/route.ts, src/components/studio/market-ports.ts, src/components/studio/real-market-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/niche-score.ts"
      ],
      "location": "/app/books",
      "tool": "market",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 5 module thật sự import (src/components/studio/market-ports.ts, src/components/studio/real-market-ports.ts, src/lib/market/feasibility-bridge.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/feasibility-bridge.ts"
      ],
      "location": "/app/books",
      "tool": "market",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 7 module thật sự import (src/components/studio/market-fixtures.ts, src/components/studio/market-ports.ts, src/components/studio/real-market-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/reading-order.ts"
      ],
      "location": "/app/books",
      "tool": "market",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 17 symbol export; được 5 module thật sự import (src/components/studio/market-ports.ts, src/components/studio/real-market-ports.ts, src/lib/market/author-site.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/series-page.ts"
      ],
      "location": "/app/books",
      "tool": "market",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 4 module thật sự import (src/components/studio/market-ports.ts, src/components/studio/real-market-ports.ts, src/lib/market/author-site.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/market/author-site.ts"
      ],
      "location": "/app/books",
      "tool": "market",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 11 symbol export; được 6 module thật sự import (src/app/api/refs/ingest/route.ts, src/inngest/functions/ingest-reference.ts, src/inngest/supabase-refs-repo.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/refs/ingest.ts"
      ],
      "location": "/app/books",
      "tool": "references",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 16 module thật sự import (src/app/api/refs/ingest/route.ts, src/components/studio/real-review-ports.mapping.ts, src/components/studio/real-review-ports.personas.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/refs/sanitize.ts"
      ],
      "location": "/app/books",
      "tool": "references",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 14 symbol export; được 8 module thật sự import (src/components/studio/real-review-ports.mapping.ts, src/components/studio/real-review-ports.personas.ts, src/components/studio/real-review-ports.refs.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/refs/retrieve.ts"
      ],
      "location": "/app/books",
      "tool": "references",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 4 module thật sự import (src/inngest/functions/ingest-reference.ts, src/lib/refs/factsheet.spec.ts, src/lib/refs/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/refs/factsheet.ts"
      ],
      "location": "/app/books",
      "tool": "references",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 6 module thật sự import (src/components/studio/real-review-ports.mapping.ts, src/components/studio/real-review-ports.personas.ts, src/components/studio/real-review-ports.refs.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/refs/gap-report.ts"
      ],
      "location": "/app/books",
      "tool": "references",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 5 module thật sự import (src/inngest/functions/ingest-reference.ts, src/lib/refs/chunk.spec.ts, src/lib/refs/factsheet.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/refs/chunk.ts"
      ],
      "location": "/app/books",
      "tool": "references",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 4 module thật sự import (src/lib/citations/backtranslate.ts, src/lib/fiction/version-compare.ts, src/lib/refs/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/refs/similarity.ts"
      ],
      "location": "/app/books",
      "tool": "references",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 11 symbol export; được 5 module thật sự import (src/inngest/functions/ingest-reference.ts, src/lib/refs/chunk.ts, src/lib/refs/extract.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/refs/extract.ts"
      ],
      "location": "/app/books",
      "tool": "references",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 12 symbol export; được 5 module thật sự import (src/app/api/batch/run/route.ts, src/app/api/gen/outline/route.ts, src/app/api/v1/books/route.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/outline/generate.ts"
      ],
      "location": "/app/books",
      "tool": "outline",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 8 module thật sự import (src/components/studio/blueprint-catalogue.spec.ts, src/components/studio/real-ports.ts, src/lib/outline/generate.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/outline/validate.ts"
      ],
      "location": "/app/books",
      "tool": "outline",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 28 symbol export; được 9 module thật sự import (src/app/api/batch/run/route.ts, src/app/api/v1/books/[id]/approve-outline/route.ts, src/components/studio/real-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/outline/ops.ts"
      ],
      "location": "/app/books",
      "tool": "outline",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 13 symbol export; được 4 module thật sự import (src/app/app/batch/new/sources.tsx, src/components/batch/ports.ts, src/components/batch/real-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/outline/import-xlsx.ts"
      ],
      "location": "/app/books",
      "tool": "outline",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 16 symbol export; được 13 module thật sự import (src/app/api/batch/run/route.ts, src/app/api/gen/generate/route.ts, src/inngest/credits.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/generation/engine.ts"
      ],
      "location": "/app/books",
      "tool": "drafts",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 15 symbol export; được 6 module thật sự import (src/inngest/functions/generate-book.ts, src/lib/generation/context-pack.spec.ts, src/lib/generation/engine.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/generation/context-pack.ts"
      ],
      "location": "/app/books",
      "tool": "drafts",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 19 symbol export; được 2 module thật sự import (src/lib/generation/context-pack.spec.ts, src/lib/generation/context-pack.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/generation/long-horizon.ts"
      ],
      "location": "/app/books",
      "tool": "drafts",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 2 symbol export; được 1 module thật sự import (src/lib/generation/engine.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/generation/engine-continuity.ts"
      ],
      "location": "/app/books",
      "tool": "drafts",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 7 module thật sự import (src/app/api/v1/books/[id]/generate/route.ts, src/components/studio/real-ports.ts, src/inngest/credits.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/generation/estimate.ts"
      ],
      "location": "/app/books",
      "tool": "drafts",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 5 module thật sự import (src/lib/generation/engine.ts, src/lib/generation/index.ts, src/lib/generation/markdown-image.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/generation/markdown-to-blocks.ts"
      ],
      "location": "/app/books",
      "tool": "drafts",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 1 symbol export; được 2 module thật sự import (src/lib/generation/engine-continuity.ts, src/lib/generation/engine.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/generation/engine-emitter.ts"
      ],
      "location": "/app/books",
      "tool": "drafts",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 3 module thật sự import (src/lib/bible/bible.spec.ts, src/lib/bible/index.ts, src/lib/gen/wire.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/bible/extract.ts"
      ],
      "location": "/app/books",
      "tool": "bible",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 4 module thật sự import (src/lib/bible/bible.spec.ts, src/lib/bible/index.ts, src/lib/gen/handoff.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/bible/merge.ts"
      ],
      "location": "/app/books",
      "tool": "bible",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 5 module thật sự import (src/lib/bible/bible.spec.ts, src/lib/bible/drift-judge.ts, src/lib/bible/extract.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/bible/compact.ts"
      ],
      "location": "/app/books",
      "tool": "bible",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 3 module thật sự import (src/components/studio/bible-temporal-panel.tsx, src/lib/bible/bible.spec.ts, src/lib/bible/temporal.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/bible/temporal.ts"
      ],
      "location": "/app/books",
      "tool": "bible",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đang làm",
      "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 — có mã, chưa rà riêng",
      "verification": "Đo 2026-10-13: 1 symbol export; được 2 module thật sự import (src/components/studio/fiction-tab.tsx, src/lib/fiction/book-source.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/fiction/book-source.ts"
      ],
      "location": "/app/books",
      "tool": "fiction",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 37 symbol export; được 4 module thật sự import (src/components/studio/fiction-ports.ts, src/lib/fiction/beat-sheet.spec.ts, src/lib/fiction/book-source.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/fiction/beat-sheet.ts"
      ],
      "location": "/app/books",
      "tool": "fiction",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 2 module thật sự import (src/lib/fiction/beat-sheet-cards.ts, src/lib/fiction/beat-sheet.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/fiction/beat-sheet-pov.ts"
      ],
      "location": "/app/books",
      "tool": "fiction",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 11 symbol export; được 4 module thật sự import (src/components/studio/fiction-ports.ts, src/lib/fiction/book-source.ts, src/lib/fiction/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/fiction/version-compare.ts"
      ],
      "location": "/app/books",
      "tool": "fiction",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đang làm",
      "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 — có mã, chưa rà riêng",
      "verification": "Đo 2026-10-13: 14 symbol export; được 4 module thật sự import (src/components/studio/fiction-ports.ts, src/lib/fiction/index.ts, src/lib/fiction/sprint-store.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/fiction/writing-sprint.ts"
      ],
      "location": "/app/books",
      "tool": "fiction",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đang làm",
      "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. Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Logic/công cụ tại máy — có mã, chưa rà riêng",
      "verification": "Đo 2026-10-13: 3 symbol export; được 1 module thật sự import (src/components/studio/fiction-tab.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/fiction/sprint-store.ts"
      ],
      "location": "/app/books",
      "tool": "fiction",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 19 symbol export; được 3 module thật sự import (src/components/studio/fiction-ports.ts, src/lib/fiction/index.ts, src/lib/fiction/pwa-review.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/fiction/pwa-review.ts"
      ],
      "location": "/app/books",
      "tool": "fiction",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 14 symbol export; được 13 module thật sự import (src/components/studio/real-ports.ts, src/lib/debate/adapters.ts, src/lib/gen/wire.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/quality/score.ts"
      ],
      "location": "/app/books",
      "tool": "quality",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 9 module thật sự import (src/lib/gen/wire.ts, src/lib/quality/index.ts, src/lib/quality/quality-editor-actions.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/quality/editorial.ts"
      ],
      "location": "/app/books",
      "tool": "quality",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 14 symbol export; được 4 module thật sự import (src/components/studio/quality-ops-analysis-cards.tsx, src/components/studio/quality-ops-ports.ts, src/lib/quality-ops/readability-rewrite.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/quality-ops/readability.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 1 module thật sự import (src/lib/quality-ops/readability.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/quality-ops/readability-rewrite.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 14 symbol export; được 3 module thật sự import (src/components/studio/quality-ops-ports.ts, src/components/studio/quality-ops-tab.tsx, src/lib/quality-ops/terminology.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/quality-ops/terminology.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 12 symbol export; được 4 module thật sự import (src/components/studio/quality-ops-ports.ts, src/components/studio/quality-ops-tab.tsx, src/lib/quality-ops/example-injector-ai.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/quality-ops/example-injector.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đo: quality-ops-tab.tsx gọi insertExamples với hằng NO_GROUNDED_EXAMPLES, nên nhánh 'gợi ý ví dụ bằng AI' chưa chạy. Cần quyết định khi nào tự động gợi ý và chấp nhận tốn model.",
      "scope": "groundExamples có code và test; chưa nối vào luồng",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/quality-ops/example-injector-ai.ts",
        "src/components/studio/quality-ops-tab.tsx",
        "scripts/features/probe-capabilities.mjs"
      ],
      "location": "/app/books",
      "tool": "qualityOps",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 21 symbol export; được 3 module thật sự import (src/components/studio/quality-ops-analysis-cards.tsx, src/components/studio/quality-ops-ports.ts, src/lib/quality-ops/exercise-tuner.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/quality-ops/exercise-tuner.ts"
      ],
      "location": "/app/books",
      "tool": "qualityOps",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 31 symbol export; được 6 module thật sự import (src/components/studio/reader-insight-ports.ts, src/lib/reader-insight/index.spec.ts, src/lib/reader-insight/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/reader-insight/simulation.ts"
      ],
      "location": "/app/books",
      "tool": "readerInsight",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 4 module thật sự import (src/lib/reader-insight/index.spec.ts, src/lib/reader-insight/simulation-panel.ts, src/lib/reader-insight/simulation-persona.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/reader-insight/simulation-scoring.ts"
      ],
      "location": "/app/books",
      "tool": "readerInsight",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 18 symbol export; được 6 module thật sự import (src/components/studio/reader-insight-ports.ts, src/lib/reader-insight/index.spec.ts, src/lib/reader-insight/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/reader-insight/sensitivity.ts"
      ],
      "location": "/app/books",
      "tool": "readerInsight",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 18 symbol export; được 4 module thật sự import (src/components/studio/reader-insight-ports.ts, src/lib/reader-insight/feedback.spec.ts, src/lib/reader-insight/index.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/reader-insight/feedback.ts"
      ],
      "location": "/app/books",
      "tool": "readerInsight",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 29 symbol export; được 4 module thật sự import (src/components/studio/citations-ports.spec.ts, src/components/studio/citations-ports.ts, src/lib/citations/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/citations/verify.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 42 symbol export; được 10 module thật sự import (src/components/studio/citations-ports.ts, src/lib/citations/format.fixtures.spec-helpers.ts, src/lib/citations/format.issues.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/citations/format.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 3 module thật sự import (src/lib/citations/verify-batch.ts, src/lib/citations/verify-registries.ts, src/lib/citations/verify.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/citations/verify-link.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 3 module thật sự import (src/lib/citations/verify-batch.ts, src/lib/citations/verify-registries.ts, src/lib/citations/verify.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/citations/verify-isbn.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 3 symbol export; được 6 module thật sự import (src/components/studio/citations-ports.ts, src/lib/citations/format-bibliography.ts, src/lib/citations/format-intext.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/citations/numbering.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 17 symbol export; được 7 module thật sự import (src/components/studio/citations-ports.ts, src/lib/citations/backtranslate-model.spec.ts, src/lib/citations/backtranslate-model.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/citations/glossary.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 16 symbol export; được 4 module thật sự import (src/components/studio/citations-ports.ts, src/lib/citations/backtranslate-model.ts, src/lib/citations/backtranslate.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/citations/backtranslate.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 3 symbol export; được 3 module thật sự import (src/lib/factcheck/extract.spec.ts, src/lib/factcheck/index.ts, src/lib/gen/wire.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/factcheck/extract.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 3 module thật sự import (src/lib/debate/adapters.ts, src/lib/factcheck/index.ts, src/lib/factcheck/verify.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/factcheck/verify.ts"
      ],
      "location": "/app/books",
      "tool": "citations",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 12 symbol export; được 30 module thật sự import (src/app/api/cover/prompts/route.ts, src/app/api/cover/render/route.ts, src/app/api/export/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/brand-kit.ts"
      ],
      "location": "/app/books",
      "tool": "cover",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 20 symbol export; được 8 module thật sự import (src/app/api/cover/prompts/route.ts, src/app/api/cover/render/route.ts, src/components/studio/cover-tab.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/templates.ts"
      ],
      "location": "/app/books",
      "tool": "cover",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 32 symbol export; được 11 module thật sự import (src/app/api/cover/render/route.ts, src/components/studio/cover-preview.tsx, src/components/studio/cover-tab.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/kdp-math.ts"
      ],
      "location": "/app/books",
      "tool": "cover",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 4 module thật sự import (src/app/api/cover/prompts/route.ts, src/components/studio/cover-tab.tsx, src/lib/cover/cover.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/prompts.ts"
      ],
      "location": "/app/books",
      "tool": "cover",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 5 module thật sự import (src/app/api/illustrations/render/route.ts, src/lib/cover/cover.spec.ts, src/lib/cover/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/image-provider.ts"
      ],
      "location": "/app/books",
      "tool": "cover",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 3 module thật sự import (src/app/api/cover/render/route.ts, src/lib/cover/cover.spec.ts, src/lib/cover/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/render.ts"
      ],
      "location": "/app/books",
      "tool": "cover",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 6 module thật sự import (src/app/api/illustrations/render/route.ts, src/lib/cover/cover.spec.ts, src/lib/cover/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/cover/visual-bible.ts"
      ],
      "location": "/app/books",
      "tool": "cover",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đang làm",
      "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. Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Logic/công cụ tại máy — có mã, chưa rà riêng",
      "verification": "Đo 2026-10-13: 13 symbol export; được 6 module thật sự import (src/app/app/projects/[id]/print/page.tsx, src/components/studio/cover-tab.tsx, src/lib/pagination/direction.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/pagination/geometry.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đang làm",
      "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. Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Logic/công cụ tại máy — có mã, chưa rà riêng",
      "verification": "Đo 2026-10-13: 3 symbol export; được 1 module thật sự import (src/app/app/projects/[id]/print/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/pagination/measure.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đang làm",
      "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. Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Logic/công cụ tại máy — có mã, chưa rà riêng",
      "verification": "Đo 2026-10-13: 5 symbol export; được 2 module thật sự import (src/lib/pagination/measure.ts, src/lib/pagination/pagination.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/pagination/flow.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "id": "cap-pwa-1",
      "group": "Capability",
      "phase": "F05, F08, F10",
      "phase_ids": [
        5,
        8,
        10
      ],
      "steps": {
        "5": [
          5
        ],
        "8": [
          6
        ],
        "10": []
      },
      "step": "",
      "feature": "Điều kiện cài app: manifest, icon PNG 192/512 và service worker",
      "status": "Đã xong",
      "purpose": "Điều kiện cài app: manifest, icon PNG 192/512 và service worker. Hỗ trợ vận hành quy trình sách theo tổ chức.",
      "how": "Mở /app/books; 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": "manifest.webmanifest, icon PNG, service worker và trạng thái đăng ký.",
      "output": "Điều kiện cài app (PWA) và trang fallback offline có câu giải thích.",
      "implemented": "Có mã triển khai tại src/lib/pwa/install-readiness.ts. Điều kiện cài app (PWA) và trang fallback offline có câu giải thích.",
      "remaining": "Còn thiếu phiên người dùng thật cho lưu/đọc cloud, CRDT ngoại tuyến và native app. Service worker cố ý KHÔNG cache /api/* — số liệu phải luôn lấy từ mạng.",
      "scope": "PWA cài được và có phần offline; chưa phải native app",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/pwa/install-readiness.ts",
        "src/lib/pwa/pwa-setup-check.ts",
        "src/app/api/setup/status/route.ts",
        "public/manifest.webmanifest",
        "public/sw.js",
        "public/icons/icon-192.png",
        "public/icons/icon-512.png",
        "public/icons/apple-touch-icon.png",
        "src/app/offline/page.tsx"
      ],
      "location": "/app/books",
      "tool": "pwa",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 5 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/lib/formats/formats.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/docx.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 14 symbol export; được 7 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/lib/api-auth/openapi.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/multi-export.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 14 symbol export; được 7 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/lib/api-auth/openapi.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/multi-export.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 6 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/lib/formats/formats.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/slides.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 6 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/lib/formats/formats.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/slides.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 7 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/lib/formats/formats.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/interactive-pdf-html.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 3 symbol export; được 3 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/lib/formats/training.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/training-package.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 18 symbol export; được 13 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/components/studio/export-tab.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/layout-profiles.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 6 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/components/studio/export-tab.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/summary-modes.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 5 module thật sự import (src/app/api/export/route.ts, src/app/api/v1/books/[id]/export/route.ts, src/lib/formats/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/formats/training.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 11 symbol export; được 4 module thật sự import (src/components/workspace/export-checks.tsx, src/lib/epub-images.spec.ts, src/lib/export/epubcheck.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/export/validators.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 2 module thật sự import (src/lib/export/epubcheck.spec.ts, scripts/verify-epubcheck.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/export/epubcheck.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đang làm",
      "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 — có mã, chưa rà riêng",
      "verification": "Đo 2026-10-13: 10 symbol export; được 6 module thật sự import (src/components/workspace/export-checks.tsx, src/components/workspace/export-tab.tsx, src/lib/epub.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/export/integrity.ts"
      ],
      "location": "/app/books",
      "tool": "export",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 11 symbol export; được 3 module thật sự import (src/app/api/illustrations/render/route.ts, src/lib/illustration/index.ts, src/lib/illustration/render.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/illustration/render.ts"
      ],
      "location": "/app/books",
      "tool": "cover",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 1 symbol export; được 3 module thật sự import (src/components/studio/audio-tab.tsx, src/lib/audio/audio.spec.ts, src/lib/audio/book-source.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/book-source.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 19 symbol export; được 16 module thật sự import (src/app/api/audio/sample/route.ts, src/components/studio/audio-tab.tsx, src/components/studio/podcast-ports.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/voices.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 29 symbol export; được 11 module thật sự import (src/components/studio/audio-tab.tsx, src/lib/audio/audio.spec.ts, src/lib/audio/cost.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/script.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 8 module thật sự import (src/components/studio/audio-tab.tsx, src/lib/audio/audio.spec.ts, src/lib/audio/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/cost.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 28 symbol export; được 11 module thật sự import (src/app/api/audio/sample/route.spec.ts, src/app/api/audio/sample/route.ts, src/components/studio/audio-tab.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/providers.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 7 module thật sự import (src/app/api/audio/sample/route.ts, src/components/studio/audio-tab.tsx, src/lib/audio/audio.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/language.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 4 module thật sự import (src/components/studio/audio-tab.tsx, src/lib/audio/audio.spec.ts, src/lib/audio/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/engine.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 21 symbol export; được 3 module thật sự import (src/components/studio/audio-tab.tsx, src/lib/audio/audio.spec.ts, src/lib/audio/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/ffmpeg-plan.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 13 symbol export; được 12 module thật sự import (src/components/studio/audio-tab.tsx, src/components/workspace/audio-qc-panel.tsx, src/components/workspace/export-checks.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/acx.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 4 module thật sự import (src/components/studio/audio-tab.tsx, src/lib/audio/audio.spec.ts, src/lib/audio/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/pipeline.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 7 module thật sự import (src/components/studio/audio-tab.tsx, src/lib/audio/audio.spec.ts, src/lib/audio/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/audio/speech-rate.ts"
      ],
      "location": "/app/books",
      "tool": "audio",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 4 module thật sự import (src/components/studio/voice-ports.ts, src/lib/voice/index.ts, src/lib/voice/interview-map.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/voice/voice-brief.ts"
      ],
      "location": "/app/books",
      "tool": "voice",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 12 symbol export; được 3 module thật sự import (src/components/studio/voice-ports.ts, src/lib/voice/index.ts, src/lib/voice/transcribe.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/voice/transcribe.ts"
      ],
      "location": "/app/books",
      "tool": "voice",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 12 symbol export; được 7 module thật sự import (src/components/studio/voice-ports.ts, src/lib/voice/index.ts, src/lib/voice/interview-map.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/voice/transcript.ts"
      ],
      "location": "/app/books",
      "tool": "voice",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 3 module thật sự import (src/components/studio/voice-ports.ts, src/lib/voice/index.ts, src/lib/voice/notes.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/voice/notes.ts"
      ],
      "location": "/app/books",
      "tool": "voice",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 13 symbol export; được 5 module thật sự import (src/components/studio/voice-ports.ts, src/lib/voice/index.ts, src/lib/voice/interview-map.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/voice/interview-map.ts"
      ],
      "location": "/app/books",
      "tool": "voice",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 3 module thật sự import (src/components/studio/podcast-ports.ts, src/lib/podcast/index.ts, src/lib/podcast/pack.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/podcast/pack.ts"
      ],
      "location": "/app/books",
      "tool": "podcast",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 12 symbol export; được 7 module thật sự import (src/components/studio/podcast-ports.ts, src/lib/podcast/episode-split.spec.ts, src/lib/podcast/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/podcast/episode-split.ts"
      ],
      "location": "/app/books",
      "tool": "podcast",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 5 module thật sự import (src/components/studio/podcast-ports.ts, src/lib/podcast/index.ts, src/lib/podcast/pack.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/podcast/show-notes.ts"
      ],
      "location": "/app/books",
      "tool": "podcast",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 4 module thật sự import (src/components/studio/podcast-ports.ts, src/lib/podcast/index.ts, src/lib/podcast/pack.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/podcast/rss.ts"
      ],
      "location": "/app/books",
      "tool": "podcast",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 11 symbol export; được 7 module thật sự import (src/components/studio/podcast-ports.spec.ts, src/components/studio/podcast-ports.ts, src/lib/podcast/ad-markers.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/podcast/ad-markers.ts"
      ],
      "location": "/app/books",
      "tool": "podcast",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 21 symbol export; được 11 module thật sự import (src/components/studio/publish-tab.tsx, src/lib/marketplace/index.ts, src/lib/marketplace/profit.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/pricing.ts"
      ],
      "location": "/app/books",
      "tool": "publish",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 16 symbol export; được 7 module thật sự import (src/components/studio/publish-tab.tsx, src/inngest/functions/scheduled-recipes.ts, src/lib/publish/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/release-calendar.ts"
      ],
      "location": "/app/books",
      "tool": "publish",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 17 symbol export; được 8 module thật sự import (src/app/api/publish/metadata/route.ts, src/components/studio/publish-tab.tsx, src/lib/market/author-site.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/metadata-optimizer.ts"
      ],
      "location": "/app/books",
      "tool": "publish",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 6 module thật sự import (src/components/studio/publish-tab.tsx, src/lib/citations/backtranslate-model.ts, src/lib/citations/glossary.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/translate.ts"
      ],
      "location": "/app/books",
      "tool": "publish",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 5 module thật sự import (src/app/api/publish/gumroad/route.ts, src/components/studio/publish-storefronts-panel.tsx, src/components/studio/publish-tab.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/gumroad.ts"
      ],
      "location": "/app/books",
      "tool": "publish",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 4 module thật sự import (src/components/studio/publish-tab.tsx, src/lib/publish/gumroad.ts, src/lib/publish/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/shopify.ts"
      ],
      "location": "/app/books",
      "tool": "publish",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 12 symbol export; được 2 module thật sự import (src/components/studio/publish-tab.tsx, src/lib/publish/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/publish/etsy.ts"
      ],
      "location": "/app/books",
      "tool": "publish",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 34 symbol export; được 4 module thật sự import (src/components/studio/launch-ports.spec.ts, src/components/studio/launch-ports.ts, src/lib/launch/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/launch/launch-kit.ts"
      ],
      "location": "/app/books",
      "tool": "launch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 19 symbol export; được 4 module thật sự import (src/components/studio/launch-ports.spec.ts, src/components/studio/launch-ports.ts, src/lib/launch/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/launch/quote-miner.ts"
      ],
      "location": "/app/books",
      "tool": "launch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 24 symbol export; được 5 module thật sự import (src/components/studio/launch-ports.spec.ts, src/components/studio/launch-ports.ts, src/lib/launch/aplus-validate.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/launch/aplus.ts"
      ],
      "location": "/app/books",
      "tool": "launch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 24 symbol export; được 4 module thật sự import (src/components/studio/launch-ports.spec.ts, src/components/studio/launch-ports.ts, src/lib/launch/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/launch/lead-magnet.ts"
      ],
      "location": "/app/books",
      "tool": "launch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 4 module thật sự import (src/components/studio/launch-ports.spec.ts, src/components/studio/launch-ports.ts, src/components/studio/launch-sop-bridge.tsx); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/launch/sop-schedule.ts"
      ],
      "location": "/app/books",
      "tool": "launch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 20 symbol export; được 4 module thật sự import (src/components/studio/launch-ports.spec.ts, src/components/studio/launch-ports.ts, src/lib/launch/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/launch/review-request.ts"
      ],
      "location": "/app/books",
      "tool": "launch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Cần dữ liệu thật của một tài khoản bán hàng để xác nhận định dạng cột của từng nền tảng.",
      "scope": "Nhập CSV và đọc bảng sales_records thật từ cloud",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/sales/import-kdp.ts",
        "src/lib/sales/records-repo.ts",
        "src/app/api/v1/sales/records/route.ts"
      ],
      "location": "/app/books",
      "tool": "sales",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn bán hàng để xác nhận định dạng cột của từng nền tảng.",
      "scope": "Nhập CSV và đọc bảng sales_records thật từ cloud",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/sales/import-gumroad.ts",
        "src/lib/sales/records-repo.ts",
        "src/app/api/v1/sales/records/route.ts"
      ],
      "location": "/app/books",
      "tool": "sales",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Cần dữ liệu thật của một tài khoạn bán hàng để xác nhận định dạng cột của từng nền tảng.",
      "scope": "Nhập CSV và đọc bảng sales_records thật từ cloud",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/sales/import-etsy.ts",
        "src/lib/sales/records-repo.ts",
        "src/app/api/v1/sales/records/route.ts"
      ],
      "location": "/app/books",
      "tool": "sales",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 3 module thật sự import (src/components/studio/real-sales-ports.ts, src/components/studio/sales-ports.ts, src/lib/sales/sales-import.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/sales/sales-import.ts"
      ],
      "location": "/app/books",
      "tool": "sales",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 16 symbol export; được 7 module thật sự import (src/components/studio/real-sales-ports.ts, src/components/studio/sales-fixtures.ts, src/components/studio/sales-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/sales/margin.ts"
      ],
      "location": "/app/books",
      "tool": "sales",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 7 module thật sự import (src/components/studio/marketplace-ports.ts, src/lib/marketplace/checklist.spec.ts, src/lib/marketplace/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/sales/fx.ts"
      ],
      "location": "/app/books",
      "tool": "sales",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 15 symbol export; được 3 module thật sự import (src/components/studio/real-sales-ports.ts, src/components/studio/sales-ports.ts, src/lib/sales/price-experiment.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/sales/price-experiment.ts"
      ],
      "location": "/app/books",
      "tool": "sales",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 4 module thật sự import (src/components/studio/real-sales-ports.ts, src/components/studio/sales-fixtures.ts, src/components/studio/sales-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/sales/series-planner.ts"
      ],
      "location": "/app/books",
      "tool": "sales",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 36 symbol export; được 2 module thật sự import (src/components/studio/collab-ports.ts, src/lib/collab/comments.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/collab/comments.ts"
      ],
      "location": "/app/books",
      "tool": "collab",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 1 module thật sự import (src/lib/collab/comments.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/collab/comments-approval.ts"
      ],
      "location": "/app/books",
      "tool": "collab",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 27 symbol export; được 4 module thật sự import (src/components/studio/collab-ports.ts, src/lib/collab/merge-apply.spec.ts, src/lib/collab/merge.fixtures.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/collab/merge.ts"
      ],
      "location": "/app/books",
      "tool": "collab",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 28 symbol export; được 2 module thật sự import (src/components/studio/collab-ports.ts, src/lib/collab/oplog.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/collab/oplog.ts"
      ],
      "location": "/app/books",
      "tool": "collab",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 2 module thật sự import (src/components/studio/collab-ports.ts, src/lib/collab/yjs-oplog-source.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/collab/yjs-oplog-source.ts"
      ],
      "location": "/app/books",
      "tool": "collab",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 34 symbol export; được 3 module thật sự import (src/lib/collab/yjs-oplog-source.spec.ts, src/lib/collab/yjs-oplog-source.ts, src/lib/collab/yjs-transport.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/collab/yjs-transport.ts"
      ],
      "location": "/app/books",
      "tool": "collab",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 22 symbol export; được 2 module thật sự import (src/components/studio/collab-ports.ts, src/lib/collab/command-palette.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/collab/command-palette.ts"
      ],
      "location": "/app/books",
      "tool": "collab",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 5 module thật sự import (src/components/studio/eval-ports.ts, src/lib/eval/ab.ts, src/lib/eval/benchmark.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/eval/rubric.ts"
      ],
      "location": "/app/books",
      "tool": "eval",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 18 symbol export; được 5 module thật sự import (src/components/studio/eval-ports.ts, src/lib/eval/ab.spec.ts, src/lib/eval/ab.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/eval/prompt-packs.ts"
      ],
      "location": "/app/books",
      "tool": "eval",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 13 symbol export; được 3 module thật sự import (src/components/studio/eval-ports.ts, src/lib/eval/benchmark.spec.ts, src/lib/eval/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/eval/benchmark.ts"
      ],
      "location": "/app/books",
      "tool": "eval",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 17 symbol export; được 6 module thật sự import (src/components/studio/eval-ports.ts, src/lib/eval/ab.spec.ts, src/lib/eval/fixtures.spec-helpers.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/eval/ab.ts"
      ],
      "location": "/app/books",
      "tool": "eval",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 16 symbol export; được 3 module thật sự import (src/components/studio/eval-ports.ts, src/lib/eval/index.ts, src/lib/eval/replay.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/eval/replay.ts"
      ],
      "location": "/app/books",
      "tool": "eval",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 19 symbol export; được 3 module thật sự import (src/components/studio/eval-ports.ts, src/lib/eval/index.ts, src/lib/eval/trends.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/eval/trends.ts"
      ],
      "location": "/app/books",
      "tool": "eval",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 14 symbol export; được 8 module thật sự import (src/components/studio/trust-ports.ts, src/lib/books-store.ts, src/lib/ops/audit-redaction.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/trust/provenance.ts"
      ],
      "location": "/app/books",
      "tool": "trust",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 22 symbol export; được 7 module thật sự import (src/components/studio/trust-ports.ts, src/lib/trust/gate.spec.ts, src/lib/trust/gate.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/trust/policy.ts"
      ],
      "location": "/app/books",
      "tool": "trust",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 16 symbol export; được 6 module thật sự import (src/components/studio/ops-mock-fixtures.ts, src/components/studio/ops-ports-types.ts, src/components/studio/trust-ports.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/trust/backup.ts"
      ],
      "location": "/app/books",
      "tool": "trust",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 29 symbol export; được 4 module thật sự import (src/components/studio/enterprise-ports.ts, src/lib/enterprise/index.ts, src/lib/enterprise/team-roles.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/team-roles.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 18 symbol export; được 4 module thật sự import (src/components/studio/enterprise-ports.ts, src/lib/enterprise/brand-repo.ts, src/lib/enterprise/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/white-label.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 20 symbol export; được 3 module thật sự import (src/components/studio/enterprise-ports.ts, src/lib/enterprise/dfy.spec.ts, src/lib/enterprise/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/dfy.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 25 symbol export; được 3 module thật sự import (src/components/studio/enterprise-ports.ts, src/lib/enterprise/index.ts, src/lib/enterprise/scim.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/scim.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 18 symbol export; được 4 module thật sự import (src/components/studio/enterprise-ports.ts, src/lib/enterprise/budget.spec.ts, src/lib/enterprise/dfy.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/budget.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 20 symbol export; được 1 module thật sự import (src/lib/enterprise/team-roles.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/team-seats.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 24 symbol export; được 3 module thật sự import (src/components/studio/enterprise-ports.ts, src/lib/enterprise/client-portal.spec.ts, src/lib/enterprise/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/enterprise/client-portal.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 28 symbol export; được 6 module thật sự import (src/components/studio/ops-mock-fixtures.ts, src/components/studio/ops-ports-types.ts, src/lib/ops/audit-disclosure.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ops/observability.ts"
      ],
      "location": "/app/books",
      "tool": "ops",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 15 symbol export; được 3 module thật sự import (src/components/studio/ops-mock-fixtures.ts, src/components/studio/ops-ports-types.ts, src/lib/ops/dr-drill.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ops/dr-drill.ts"
      ],
      "location": "/app/books",
      "tool": "ops",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 17 symbol export; được 3 module thật sự import (src/components/studio/ops-mock-fixtures.ts, src/components/studio/ops-ports-types.ts, src/lib/ops/audit-export.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ops/audit-export.ts"
      ],
      "location": "/app/books",
      "tool": "ops",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 20 symbol export; được 3 module thật sự import (src/components/studio/ops-mock-fixtures.ts, src/components/studio/ops-ports-types.ts, src/lib/ops/queue-fairness.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ops/queue-fairness.ts"
      ],
      "location": "/app/books",
      "tool": "ops",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 16 symbol export; được 3 module thật sự import (src/components/studio/ops-mock-fixtures.ts, src/components/studio/ops-ports-types.ts, src/lib/ops/key-health.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/ops/key-health.ts"
      ],
      "location": "/app/books",
      "tool": "ops",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 3 module thật sự import (src/components/studio/marketplace-ports.ts, src/lib/marketplace/checklist.spec.ts, src/lib/marketplace/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/marketplace/checklist.ts"
      ],
      "location": "/app/books",
      "tool": "marketplace",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 10 symbol export; được 6 module thật sự import (src/components/studio/marketplace-ports.ts, src/lib/marketplace/checklist.ts, src/lib/marketplace/index.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/marketplace/blueprint.ts"
      ],
      "location": "/app/books",
      "tool": "marketplace",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 4 module thật sự import (src/components/studio/marketplace-ports.ts, src/lib/marketplace/checklist.ts, src/lib/marketplace/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/marketplace/profit.ts"
      ],
      "location": "/app/books",
      "tool": "marketplace",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 15 symbol export; được 20 module thật sự import (src/app/api/review/session/route.ts, src/components/studio/persona-editor.tsx, src/components/studio/real-review-ports.mapping.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/debate/personas.ts"
      ],
      "location": "/app/books",
      "tool": "review",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 2 symbol export; được 1 module thật sự import (src/lib/debate/session.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/debate/session-runner.ts"
      ],
      "location": "/app/books",
      "tool": "review",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 5 symbol export; được 3 module thật sự import (src/lib/debate/index.ts, src/lib/debate/session-phases.ts, src/lib/debate/synthesize.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/debate/synthesize.ts"
      ],
      "location": "/app/books",
      "tool": "review",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 7 module thật sự import (src/app/api/review/session/route.ts, src/lib/debate/consensus.spec.ts, src/lib/debate/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/debate/consensus.ts"
      ],
      "location": "/app/books",
      "tool": "review",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 2 module thật sự import (src/lib/debate/session-runner.ts, src/lib/debate/session.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/debate/session-ab.ts"
      ],
      "location": "/app/books",
      "tool": "review",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 7 module thật sự import (src/components/studio/real-review-ports.mapping.ts, src/components/studio/real-review-ports.personas.ts, src/components/studio/real-review-ports.refs.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/debate/estimate.ts"
      ],
      "location": "/app/books",
      "tool": "review",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 2 symbol export; được 18 module thật sự import (src/app/api/plan/artifact/route.ts, src/app/api/plan/feasibility/route.ts, src/app/api/plan/operations/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/plan/interview.ts"
      ],
      "location": "/app/plans",
      "tool": "plans",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 20 module thật sự import (src/app/api/plan/artifact/route.ts, src/app/api/plan/feasibility/route.ts, src/app/api/plan/operations/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/plan/feasibility.ts"
      ],
      "location": "/app/plans",
      "tool": "plans",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 20 module thật sự import (src/app/api/plan/artifact/route.ts, src/app/api/plan/feasibility/route.ts, src/app/api/plan/operations/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/plan/strategy.ts"
      ],
      "location": "/app/plans",
      "tool": "plans",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 19 module thật sự import (src/app/api/plan/artifact/route.ts, src/app/api/plan/feasibility/route.ts, src/app/api/plan/operations/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/plan/operations.ts"
      ],
      "location": "/app/plans",
      "tool": "plans",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 19 symbol export; được 23 module thật sự import (src/app/api/plan/artifact/route.ts, src/app/api/plan/feasibility/route.ts, src/app/api/plan/operations/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/plan/tasks.ts"
      ],
      "location": "/app/plans",
      "tool": "plans",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 21 module thật sự import (src/app/api/plan/artifact/route.ts, src/app/api/plan/feasibility/route.ts, src/app/api/plan/operations/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/plan/monitor.ts"
      ],
      "location": "/app/plans",
      "tool": "plans",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 18 module thật sự import (src/app/api/plan/artifact/route.ts, src/app/api/plan/feasibility/route.ts, src/app/api/plan/operations/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/plan/logic-validator.ts"
      ],
      "location": "/app/plans",
      "tool": "plans",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 18 module thật sự import (src/app/api/plan/artifact/route.ts, src/app/api/plan/feasibility/route.ts, src/app/api/plan/operations/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/plan/artifacts.ts"
      ],
      "location": "/app/plans",
      "tool": "plans",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 23 symbol export; được 21 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/app/batch/new/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/batch/dsl.ts"
      ],
      "location": "/app/batch",
      "tool": "batch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 16 symbol export; được 25 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/api/v1/batch/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/batch/run.ts"
      ],
      "location": "/app/batch",
      "tool": "batch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 17 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/app/batch/new/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/batch/sampling.ts"
      ],
      "location": "/app/batch",
      "tool": "batch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 12 symbol export; được 17 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/app/batch/new/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/batch/sources.ts"
      ],
      "location": "/app/batch",
      "tool": "batch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 18 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/app/batch/new/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/batch/matrix.ts"
      ],
      "location": "/app/batch",
      "tool": "batch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 21 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/app/batch/new/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/batch/budget.ts"
      ],
      "location": "/app/batch",
      "tool": "batch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 16 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/app/batch/new/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/batch/versions.ts"
      ],
      "location": "/app/batch",
      "tool": "batch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 21 symbol export; được 22 module thật sự import (src/app/api/batch/preview/route.ts, src/app/api/batch/run/route.ts, src/app/app/batch/new/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/batch/recipes.ts"
      ],
      "location": "/app/batch",
      "tool": "batch",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Adapter có code, KHÔNG có test và không có route/UI nào gọi. Bật thật cần quyết định sản phẩm (dịch vụ nào thực sự dùng) cộng OAuth/credential — không tự dựng vì không có dữ liệu dự án thật để kiểm.",
      "scope": "Adapter có code; chưa có test và chưa có route/UI gọi",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/integrations/google-calendar.ts",
        "scripts/features/probe-capabilities.mjs"
      ],
      "location": "/app/books",
      "tool": "ops",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Adapter có code, KHÔNG có test và không có route/UI nào gọi. Bật thật cần quyết định sản phẩm (dịch vụ nào thực sự dùng) cộng OAuth/credential — không tự dựng vì không có dữ liệu dự án thật để kiểm.",
      "scope": "Adapter có code; chưa có test và chưa có route/UI gọi",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/integrations/notion.ts",
        "scripts/features/probe-capabilities.mjs"
      ],
      "location": "/app/books",
      "tool": "ops",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Adapter có code, KHÔNG có test và không có route/UI nào gọi. Bật thật cần quyết định sản phẩm (dịch vụ nào thực sự dùng) cộng OAuth/credential — không tự dựng vì không có dữ liệu dự án thật để kiểm.",
      "scope": "Adapter có code; chưa có test và chưa có route/UI gọi",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/integrations/asana.ts",
        "scripts/features/probe-capabilities.mjs"
      ],
      "location": "/app/books",
      "tool": "ops",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Adapter có code, KHÔNG có test và không có route/UI nào gọi. Bật thật cần quyết định sản phẩm (dịch vụ nào thực sự dùng) cộng OAuth/credential — không tự dựng vì không có dữ liệu dự án thật để kiểm.",
      "scope": "Adapter có code; chưa có test và chưa có route/UI gọi",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/integrations/linear.ts",
        "scripts/features/probe-capabilities.mjs"
      ],
      "location": "/app/books",
      "tool": "ops",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 6 module thật sự import (src/app/api/integrations/_lib/slack.ts, src/app/api/integrations/_lib/telegram.ts, src/app/api/integrations/routes.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/integrations/signing.ts"
      ],
      "location": "/app/books",
      "tool": "ops",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đo: grep toàn src/ không có import nào của lib/integrations/webhook. Ba route có chữ 'webhook' (Slack, Telegram, Stripe) là webhook RIÊNG, không dùng file này — cần tránh đọc nhầm là đã nối.",
      "scope": "WebhookSink có code; không được import ở bất kỳ đâu",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/integrations/webhook.ts",
        "scripts/features/probe-capabilities.mjs"
      ],
      "location": "/app/books",
      "tool": "ops",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 3 module thật sự import (src/inngest/functions/scheduled-recipes.ts, src/lib/integrations/index.ts, src/lib/integrations/integrations.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/integrations/cron.ts"
      ],
      "location": "/app/books",
      "tool": "ops",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 23 symbol export; được 21 module thật sự import (src/app/api/stripe/_lib/apply.ts, src/app/api/stripe/checkout/route.ts, src/app/api/v1/books/[id]/generate/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/billing/plans.ts"
      ],
      "location": "/app/billing",
      "tool": "billing",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 7 module thật sự import (src/app/api/v1/batch/route.ts, src/app/api/v1/books/[id]/generate/route.ts, src/app/app/billing/page.tsx); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/billing/entitlements.ts"
      ],
      "location": "/app/billing",
      "tool": "billing",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 15 symbol export; được 9 module thật sự import (src/app/api/stripe/_lib/apply.ts, src/app/api/stripe/_lib/db.ts, src/app/api/v1/books/[id]/generate/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/billing/credits.ts"
      ],
      "location": "/app/billing",
      "tool": "billing",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 9 symbol export; được 8 module thật sự import (src/app/api/stripe/_lib/apply.ts, src/app/api/stripe/_lib/per-book-idempotency.spec.ts, src/app/api/stripe/checkout/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/billing/stripe.ts"
      ],
      "location": "/app/billing",
      "tool": "billing",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 13 symbol export; được 7 module thật sự import (src/components/billing/api-keys-section.tsx, src/lib/api-auth/api-auth.spec.ts, src/lib/api-auth/auth.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/billing/api-keys.ts"
      ],
      "location": "/app/billing",
      "tool": "billing",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 3 symbol export; được 2 module thật sự import (src/app/api/v1/books/[id]/generate/route.ts, src/lib/billing/unwind.spec.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/billing/unwind.ts"
      ],
      "location": "/app/billing",
      "tool": "billing",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 7 symbol export; được 8 module thật sự import (src/app/api/stripe/checkout/route.ts, src/app/api/stripe/portal/route.ts, src/app/api/v1/brands/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/api-auth/session.ts"
      ],
      "location": "/app/account",
      "tool": "account",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 6 symbol export; được 6 module thật sự import (src/app/api/sop/orgs/route.ts, src/lib/api-auth/api-auth.spec.ts, src/lib/api-auth/db.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/api-auth/auth.ts"
      ],
      "location": "/app/account",
      "tool": "account",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 8 module thật sự import (src/app/api/stripe/checkout/route.ts, src/app/api/stripe/portal/route.ts, src/app/api/v1/batch/route.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/api-auth/org.ts"
      ],
      "location": "/app/account",
      "tool": "account",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 3 module thật sự import (src/lib/api-auth/api-auth.spec.ts, src/lib/api-auth/index.ts, src/lib/api-auth/request.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/api-auth/rate-limit.ts"
      ],
      "location": "/app/account",
      "tool": "account",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 4 symbol export; được 4 module thật sự import (src/app/api/v1/books/[id]/export/route.ts, src/app/api/v1/openapi.json/route.ts, src/lib/api-auth/index.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/api-auth/openapi.ts"
      ],
      "location": "/app/account",
      "tool": "account",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 1 symbol export; được 2 module thật sự import (src/app/api/setup/status/route.ts, src/lib/setup/setup.spec.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/setup/config.ts"
      ],
      "location": "/app/setup",
      "tool": "setup",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 5 module thật sự import (src/app/api/setup/status/route.ts, src/components/setup/setup-panel.tsx, src/lib/pwa/pwa-setup-check.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/setup/tasks.ts"
      ],
      "location": "/app/setup",
      "tool": "setup",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Đã xong",
      "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ổng feasibility đã thật sự gọi, cả hai chiều. Còn nằm ở phạm vi khác: 3 cổng quyết định sau (plan approval, review merge, batch go/no-go) chưa nối; `generation/engine.ts` vẫn khai `decisionsBrief` mà không chỗ nào điền — đường đọc cho engine vẫn chưa có nguồn.",
      "scope": "Nhật ký quyết định đã nối vào cổng feasibility (đọc quyết định cũ vào prompt, ghi verdict sau khi luật quy tắc chạy)",
      "verification": "Đối chiếu file nguồn. Mục này CHƯA được chạy lại riêng trong đợt lập danh mục — xem ghi chú chung ở cột “Còn thiếu”.",
      "evidence": [
        "src/lib/knowledge/index.ts",
        "src/lib/knowledge/decision-log.ts",
        "src/lib/knowledge/decision-log.spec.ts",
        "src/lib/plan/feasibility-decisions.ts",
        "src/lib/plan/feasibility-decisions.spec.ts",
        "src/lib/plan/feasibility.ts",
        "src/app/api/plan/feasibility/route.ts"
      ],
      "location": "/app/books",
      "tool": "bible",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa có test cạnh file này, nên hành vi chưa được khoá lại bằng phép thử.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 8 symbol export; được 3 module thật sự import (src/app/app/admin/page.tsx, src/lib/authz/engine.ts, scripts/engine-conformance.ts); CHƯA có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/authz/matrix.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "GHI CHÚ CHUNG cho 104 mục có implementation, chưa rà riêng từng mục: cần xác minh 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 không chứng minh provider chạy. Mục này chưa được kiểm riêng.",
      "scope": "Có implementation; mức nối UI/live tùy công cụ",
      "verification": "Đo 2026-10-13: 1 symbol export; được 6 module thật sự import (src/lib/authz/engine-platform.spec.ts, src/lib/authz/engine.spec.ts, src/lib/enterprise/team-roles.ts); có `*.spec.ts` cạnh nó. Số đo này loại trừ \"có file là có\" — nó KHÔNG chứng minh hành vi đúng, và mục này chưa được chạy lại riêng.",
      "evidence": [
        "src/lib/authz/engine.ts"
      ],
      "location": "/app/books",
      "tool": "enterprise",
      "reviewed": false,
      "reviewed_on": null
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Đã xong",
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
        "src/components/workspace/sync-controls.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Chưa nghiệm thu đầu-cuối với dữ liệu thật của một tài khoản; phần cần người vẫn nằm ở các mục capability liên quan.",
      "scope": "Logic cục bộ hoặc luồng cơ sở dữ liệu đã có mã và được gọi",
      "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",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/app/books/page.tsx"
      ],
      "location": "/app/books/new",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/app/books/[id]/page.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/app/app/books/[id]/page.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/app/books/page.tsx"
      ],
      "location": "/app",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/app/app/layout.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/components/sop/phase-panel.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/components/sop/phase-panel.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/components/sop/phase-panel.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/app/app/projects/[id]/page.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/app/app/projects/[id]/page.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/app/app/projects/[id]/page.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/app/app/projects/[id]/page.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở luồng dữ liệu và nơi gọi; xem bằng chứng.",
      "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",
        "src/app/api/audio/sample/route.spec.ts"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/app/page.tsx"
      ],
      "location": "/app/plans/new",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/app/batch/page.tsx"
      ],
      "location": "/app/batch/new",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/app/account/page.tsx"
      ],
      "location": "/login",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/components/auth-menu.tsx"
      ],
      "location": "/app/account",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/api/stripe/checkout/route.ts"
      ],
      "location": "/app/billing",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/components/auth-menu.tsx"
      ],
      "location": "/app/admin",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/components/sop/feature-catalog.tsx"
      ],
      "location": "/app/models",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/features/page.tsx"
      ],
      "location": "/app/setup",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/page.tsx"
      ],
      "location": "/features",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/features/page.tsx"
      ],
      "location": "/",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/components/workspace/export-tab.tsx"
      ],
      "location": "/app/books",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "src/app/app/account/page.tsx"
      ],
      "location": "/forgot-password",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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ần còn thiếu nằm ở dịch vụ ngoài: cấu hình nhà cung cấp, phiên đăng nhập thật và nghiệm thu người dùng — không kiểm bằng HTTP trong repo.",
      "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",
        "scripts/features/platform.json"
      ],
      "location": "/reset-password",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối; loại này cần provider ảnh và kiểm file.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối; loại này cần provider ảnh và kiểm file.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối; loại này cần provider ảnh và kiểm file.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    },
    {
      "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": "Phần mềm cho bước CHỌN loại đã xong và đã đo bằng validator thật. Còn nằm ở phạm vi khác: chưa chứng minh loại này sinh sách và nghiệm thu đầu-cuối.",
      "status": "Đã xong",
      "scope": "Loại sách có trong trình tạo sách; danh mục sinh từ thư viện nên không lệch; định nghĩa hợp lệ theo schema, có phỏng vấn riêng và QA rule đã kiểm",
      "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",
        "src/lib/blueprints/schema.ts",
        "src/lib/blueprints/blueprints.spec.ts",
        "src/lib/blueprints/wizard-reachability.spec.ts",
        "src/components/studio/blueprint-catalogue.ts",
        "src/components/studio/blueprint-catalogue.generated.ts",
        "src/components/studio/blueprint-catalogue.spec.ts",
        "src/components/studio/ports-blueprints.ts",
        "src/app/app/books/new/page.tsx",
        "e2e/blueprint-catalogue.spec.ts"
      ],
      "location": "/app/books/new",
      "tool": "brief",
      "verified_on": "2026-10-13",
      "reviewed": true,
      "reviewed_on": "2026-10-13"
    }
  ]
}
