{
  "_v": 2,
  "_compat": "v2 chỉ BỔ SUNG so với v1: mọi trường v1 giữ nguyên (apps vẫn là mảng có id) nên trình đọc v1 vẫn chạy. Trường *_v2 là giá trị mới cho trình đọc v2 (vd name_v2 · stage_v2 của habit). accepts/emits là tên v2 của handoff_in/handoff_out.",
  "_compat_v9": "Bổ sung 10/2026 (BIZ-189): groups · modules · tagline · trường group trong từng app. Không đổi/xoá trường cũ; apps vẫn 7 phần tử, _v vẫn 2.",
  "_compat_v21": "Bổ sung 26.10.2026 (BIZ-307, landing v21): app jske2026 giữ id + scheme cũ, đổi tên hiển thị thành Destini GrandPlan (tên cũ ở name_old) và thêm bundle · scheme_v21 · file_ext · mcp · testflight; thêm module nextmove (hợp đồng Think → Plan, 7 trường) và agenthives; thêm chain (chuỗi Destini, Memory là xương sống) và products (Destini Personal → Destini CEO ⊂ Destini Biz). Không xoá trường nào, _v vẫn 2, 9 app giữ nguyên thứ tự.",
  "_compat_v20": "Bổ sung 26.10.2026 (BIZ-304, landing v20): 7 app cũ giữ nguyên thứ tự và mọi trường, chỉ thêm version · version_date · layer; thêm 2 app ở cuối mảng (tinodrill · memory; url null = chưa có bản web công khai); groups thêm khoá memory; module worldupdate đổi tên hiển thị thành WorldUpdate (id giữ nguyên, tên cũ ở name_old); thêm module wiki; thêm layers (kiến trúc 6 tầng) + loop; objects thêm context · decision. Không xoá trường nào, _v vẫn 2.",
  "apps": [
    {"id":"evovi", "group":"vision",     "name":"Destini EvoVi",      "stage":"vision",   "url":"https://destini-evovi.vercel.app",           "scheme":"destini://evovi",   "handoff_in":["life_path"], "handoff_out":["jmap_tree","next_move"],
                       "layer":"evolve", "version":"v13.2", "version_date":"2026-10-26", "version_note":"tấm báo cáo hệ sinh thái"},
    {"id":"thinkspace", "group":"vision","name":"Destini ThinkSpace",  "stage":"strategy", "url":"https://jske-os-3d.vercel.app",              "scheme":"jmap:",              "handoff_in":["jmap_tree","session_log","habit_log"], "handoff_out":["next_move","alloc","p_chain"],
                       "layer":"think", "version":"v126.337", "version_date":"2026-10-25"},
    {"id":"jske2026", "group":"vision",  "name":"Destini GrandPlan",   "stage":"plan",    "url":"https://jske-application-2026.vercel.app",   "scheme":"destini://plan",    "handoff_in":["next_move","alloc"], "handoff_out":["session_log","calendar"],
                       "layer":"plan", "version":"v36.109", "version_date":"2026-10-26", "name_old":"Jske Application 2026",
                       "bundle":"com.jalong.grandplan", "scheme_v21":"grandplan://", "file_ext":".grandplan", "storage":"iCloud", "mcp":"grandplan",
                       "testflight":{"build":1, "date":"2026-10-26", "status":"building"}, "modules":["visionspace","nextmove","agenthives"]},
    {"id":"focusflow", "group":"action", "name":"Destini FocusFlow",   "stage":"action",   "url":"https://destini-focusflow.vercel.app",       "scheme":"destini://focus",   "handoff_in":["next_move"], "handoff_out":["session_log","energy"],
                       "layer":"do", "version":"0.3.0 (134)", "version_date":"2026-10-26", "version_note":"TestFlight"},
    {"id":"habit", "group":"action",     "name":"Destini (thói quen)", "stage":"repeat",   "url":"https://destini.vn",                          "scheme":"destini://habit",   "handoff_in":["next_move","habit_seed"], "handoff_out":["habit_log","streak"],
                       "name_v2":"Destini Habit", "stage_v2":"loop", "problem":"Thói quen xếp chồng chạy trơn, không đứt vì quên", "accepts":["next_move","session_log"], "emits":["habit_log","score","day_close"],
                       "layer":"do"},
    {"id":"crossai", "group":"vision",   "name":"CrossAI",             "stage":"brain",    "url":"http://127.0.0.1:8765",                       "scheme":"crossai:",          "handoff_in":["question","context"], "handoff_out":["answer","proposal"],
                       "layer":"think", "version":"v2.54", "version_date":"2026-10-25"},
    {"id":"cockpit", "group":"bridge",   "name":"Destini Cockpit",     "stage":"all",      "url":"https://destini-cockpit.vercel.app",          "scheme":"destini://cockpit", "handoff_in":["*"], "handoff_out":["next_move","proposal"],
                       "problem":"Nắm tổng thể một mạch từ Purpose tới Bây giờ", "accepts":["*"], "emits":["next_move","proposal"],
                       "layer":"evolve", "version":"v2.2"},
    {"id":"tinodrill", "group":"vision", "name":"Tino Drill",          "stage":"drill",    "url":null,                                          "scheme":null,                "handoff_in":["question","context"], "handoff_out":["decision","next_move"],
                       "problem":"Khoan một quyết định đang treo: 7 mũi khoan, ⚡ Nhanh 3′ hoặc 🧭 Đầy đủ 10 bước", "platforms":["ios","macos"],
                       "layer":"think", "version":"1.4 (13)", "version_date":"2026-10-25", "version_note":"TestFlight · 1.5 (14) đang dựng: kho context", "status":"testflight"},
    {"id":"memory", "group":"memory",    "name":"Destini Memory",      "stage":"memory",   "url":null,                                          "scheme":null,                "handoff_in":["*"], "handoff_out":["context"],
                       "problem":"Bộ nhớ chung: đọc sổ từng app, trao ngữ cảnh có trích nguồn cho mọi AI; không nghĩ thay, không ghi vào app khác", "accepts":["*"], "emits":["context"],
                       "layer":"memory", "version":"v0.1", "version_date":"2026-10-26", "status":"building"}
  ],
  "groups": {"vision": ["evovi","thinkspace","jske2026","crossai","tinodrill"], "bridge": ["cockpit"], "action": ["habit","focusflow"], "memory": ["memory"]},
  "modules": [
    {"id":"visionspace", "name":"VisionSpace", "app":"jske2026", "group":"vision", "status":"live", "version":"Destini GrandPlan v36.109", "version_old":"Jske 2026 v36.108"},
    {"id":"nextmove", "name":"NextMove", "app":"jske2026", "group":"vision", "status":"building", "layer":"plan",
     "problem":"Hợp đồng từ tầng Think sang tầng Plan: một nước đi đủ 7 trường; người chọn Đưa vào GrandPlan · Để sau · Bỏ, Plan Diff chỉ áp khi người bấm",
     "fields":["goal","why","horizon","domain","value","effort","source"], "source_enum":["evovi","thinkspace","tinodrill","crossai"],
     "actions":["accept","later","drop"], "apply":"plan_diff"},
    {"id":"agenthives", "name":"Agent Hives", "app":"jske2026", "group":"vision", "status":"building", "layer":"plan",
     "problem":"Các agent chia việc theo tổ trong GrandPlan; vẫn chỉ đề xuất, người chốt"},
    {"id":"worldupdate", "name":"WorldUpdate", "name_old":"World Real-Time Update", "group":"vision", "status":"building", "layer":"world",
     "problem":"Lấy tin tức liên tục, cập nhật cho toàn hệ sinh thái, tích hợp vào từng tầng",
     "rule":"Chỉ đưa vào tin chạm một mục tiêu đang mở, tối đa 7 tin/ngày, mỗi tin có dòng «vì sao liên quan»; thu ở cloud, lọc theo mục tiêu trên máy",
     "split_from":["Daily AI News","PowerHabit"]},
    {"id":"wiki", "name":"atom-wiki-JL", "app":"memory", "group":"memory", "status":"live", "layer":"memory", "sources":31,
     "problem":"Tri thức tĩnh từ nguồn ngoài; Destini Memory đọc như một nguồn"}
  ],
  "layers": [
    {"id":"world",  "icon":"🌍", "name":"World",  "verb":"Nghe", "apps":["worldupdate"],                          "rule":"Mang thế giới vào chỉ khi tin chạm một mục tiêu đang mở; không tạo việc, không ra quyết định."},
    {"id":"think",  "icon":"🧠", "name":"Think",  "verb":"Nghĩ", "apps":["thinkspace","crossai","tinodrill","superbrain"], "rule":"Biến câu hỏi thành giả thuyết, bằng chứng và đề xuất; không giữ kho, không xếp lịch."},
    {"id":"memory", "icon":"🗄️", "name":"Memory", "verb":"Nhớ", "apps":["memory","wiki"],                        "rule":"Nhớ đúng, trích nguồn, trao ngữ cảnh; không suy luận thay ai, không ghi vào app khác."},
    {"id":"plan",   "icon":"🗓", "name":"Plan",   "verb":"Xếp", "apps":["jske2026","linear"],                    "rule":"Xếp việc người đã nhận vào tuần, tháng; không quyết thay người."},
    {"id":"do",     "icon":"▶",  "name":"Do",     "verb":"Làm", "apps":["habit","focusflow"],                    "rule":"Làm và ghi bằng chứng thật; không đổi mục tiêu, chỉ báo lệch."},
    {"id":"evolve", "icon":"🌱", "name":"Evolve", "verb":"Lớn", "apps":["evovi","cockpit"],                      "rule":"Cho thấy mình đã thành ai, đề nghị chỉnh hướng; không giấu số xấu."}
  ],
  "loop": ["world","memory","think","plan","do","evolve","memory"],
  "chain": {"steps":[["evovi"],["thinkspace","crossai","tinodrill"],["nextmove"],["jske2026"],["habit"],["focusflow"],["evovi"]], "spine":"memory",
            "note":"eVovi (ONE Thing + 7 vòng tròn · domino ngày → đời · nhân vật lý tưởng) → tư duy có trục → NextMove → Destini GrandPlan (Play ngày/tuần/tháng/năm · Agent Hives · gợi ý thói quen/automation) → DailyTempo → FocusFlow (mỗi phiên thuộc một move) → báo cáo về eVovi"},
  "products": [{"id":"personal", "name":"Destini Personal", "status":"live"},
               {"id":"ceo", "name":"Destini CEO", "status":"building", "within":"biz", "demo":"#ceo"},
               {"id":"biz", "name":"Destini Biz", "status":"planned"}],
  "products_road": "Destini Personal → Destini CEO ⊂ Destini Biz",
  "tagline": "From Vision to Action. Extraordinary focus!",
  "objects": ["next_move","jmap_tree","session_log","habit_log","alloc","p_chain","proposal","context","decision"],
  "north_star": "weekly_loop_completion",
  "automation": {
    "engine": "App Intents + URL scheme (Phím tắt tương thích)",
    "phases": [
      {"n":1,"name":"Điểm ngày · mở app · phiên tập trung","status":"live"},
      {"n":2,"name":"Tự tick khi quay lại · hẹn giờ trong app","status":"live"},
      {"n":3,"name":"Sức khoẻ 0 chạm · chuyển tiếp Phím tắt","status":"live"}],
    "boundary": ["Máy điền sẵn — người bấm bước cuối","Không bấm hộ trong app ngoài","Hoàn tác không đảo phiên đã chạy","Chạm 2 lần không chạy chồng","Dữ liệu ở máy người dùng"],
    "events": ["next_move.changed","session.ended","habit.ticked","day.closed"]
  }
}
