{
  "schemaVersion": "1.0",
  "canvas": {
    "width": 390,
    "height": 844
  },
  "screenCount": 88,
  "entry": "index.html",
  "preview": "app.html",
  "screens": [
    {
      "id": "splash",
      "title": "Chia Việc",
      "group": "launch-onboarding",
      "roles": [
        "public"
      ],
      "html": "screens/splash/index.html",
      "spec": "screens/splash/screen.json",
      "purpose": "Mở ứng dụng với dấu hiệu thương hiệu trong lúc đọc phiên an toàn.",
      "nativeRoute": "/design/splash",
      "status": "designed",
      "sha256": "4e0cef6f86f9598c4239449d0cd9c8f90182298f451ec4c829378c3b3f86f337"
    },
    {
      "id": "session-restore",
      "title": "Đang mở ứng dụng",
      "group": "launch-onboarding",
      "roles": [
        "public"
      ],
      "html": "screens/session-restore/index.html",
      "spec": "screens/session-restore/screen.json",
      "purpose": "Xác minh actor và phạm vi dữ liệu trước khi vào nội dung.",
      "nativeRoute": "/design/session-restore",
      "status": "designed",
      "sha256": "7ff0d28e1b14b3aa829804a3f87917d4f85cb4a2257d51119c811c252026f310"
    },
    {
      "id": "welcome",
      "title": "Cùng chia việc nhà",
      "group": "launch-onboarding",
      "roles": [
        "public"
      ],
      "html": "screens/welcome/index.html",
      "spec": "screens/welcome/screen.json",
      "purpose": "Chào đón mọi người sống chung bằng ngôn ngữ trung tính.",
      "nativeRoute": "/design/welcome",
      "status": "designed",
      "sha256": "12ac6e6693d33efa507cd3fde064ff827698c3463b77c6ce093a4dccfeb55436"
    },
    {
      "id": "onboarding-chores",
      "title": "Việc cần làm",
      "group": "launch-onboarding",
      "roles": [
        "public"
      ],
      "html": "screens/onboarding-chores/index.html",
      "spec": "screens/onboarding-chores/screen.json",
      "purpose": "Giới thiệu việc lặp và mức công sức.",
      "nativeRoute": "/design/onboarding-chores",
      "status": "designed",
      "sha256": "b110b24782f57cd8b8b10bd5e06558df838a8b7aca06705b235303aeb31d701a"
    },
    {
      "id": "onboarding-sharing",
      "title": "Chia việc cùng nhau",
      "group": "launch-onboarding",
      "roles": [
        "public"
      ],
      "html": "screens/onboarding-sharing/index.html",
      "spec": "screens/onboarding-sharing/screen.json",
      "purpose": "Giới thiệu phân công chung theo capability.",
      "nativeRoute": "/design/onboarding-sharing",
      "status": "designed",
      "sha256": "d37bfd5b47ac04fb57ea077b365e53a4e2e5c1137bb872ba83658dca0f3d022b"
    },
    {
      "id": "onboarding-ai",
      "title": "Gõ hoặc nói",
      "group": "launch-onboarding",
      "roles": [
        "public"
      ],
      "html": "screens/onboarding-ai/index.html",
      "spec": "screens/onboarding-ai/screen.json",
      "purpose": "Giới thiệu trợ lý nhưng giữ người dùng kiểm soát mutation.",
      "nativeRoute": "/design/onboarding-ai",
      "status": "designed",
      "sha256": "cc02a9f5dc6f1b081c9454219a6647c0fba8c5354c5d4c41adba131f46826d39"
    },
    {
      "id": "entry-mode",
      "title": "Bắt đầu",
      "group": "launch-onboarding",
      "roles": [
        "public"
      ],
      "html": "screens/entry-mode/index.html",
      "spec": "screens/entry-mode/screen.json",
      "purpose": "Chọn cách xác thực người lớn hoặc ghép thiết bị trẻ, không chọn persona.",
      "nativeRoute": "/design/entry-mode",
      "status": "designed",
      "sha256": "c83153527cfdc1bb0bf53bd87d75bd336c57cd71bed25fc15ad7e74369891f94"
    },
    {
      "id": "login-email",
      "title": "Đăng nhập",
      "group": "authentication-home-setup",
      "roles": [
        "public"
      ],
      "html": "screens/login-email/index.html",
      "spec": "screens/login-email/screen.json",
      "purpose": "Nhập email người lớn trước bước OTP.",
      "nativeRoute": "/design/login-email",
      "status": "designed",
      "sha256": "8cc26a0172244c6a810eea02a87944e1d621915bc5cd28d0ef97ef45acd789ea"
    },
    {
      "id": "verify-otp",
      "title": "Nhập mã đăng nhập",
      "group": "authentication-home-setup",
      "roles": [
        "public"
      ],
      "html": "screens/verify-otp/index.html",
      "spec": "screens/verify-otp/screen.json",
      "purpose": "Nhập mã một trường, đếm ngược gửi lại và xử lý OTP sai/hết hạn.",
      "nativeRoute": "/design/verify-otp",
      "status": "designed",
      "sha256": "d0f9999ffd49028b4fb87c724f4e05ae2c2b92f4a95420013bc04cd8eb5511f8"
    },
    {
      "id": "otp-expired",
      "title": "Mã đã hết hạn",
      "group": "authentication-home-setup",
      "roles": [
        "public"
      ],
      "html": "screens/otp-expired/index.html",
      "spec": "screens/otp-expired/screen.json",
      "purpose": "Phục hồi OTP hết hạn mà không mất email.",
      "nativeRoute": "/design/otp-expired",
      "status": "designed",
      "sha256": "b6b3eb58b36e8e9fe9f25aeea617bb71b91b899c854fdc3e6783b14f0230054f"
    },
    {
      "id": "household-start",
      "title": "Bạn muốn bắt đầu thế nào?",
      "group": "authentication-home-setup",
      "roles": [
        "adult"
      ],
      "html": "screens/household-start/index.html",
      "spec": "screens/household-start/screen.json",
      "purpose": "Tạo nhà mới hoặc dùng lời mời, không tự rời nhà hiện tại.",
      "nativeRoute": "/design/household-start",
      "status": "designed",
      "sha256": "6de65a26a2324cd368ada80bf6055fe7ca28a67e5f18027659fa1033de02e93c"
    },
    {
      "id": "create-household",
      "title": "Đặt tên nhà",
      "group": "authentication-home-setup",
      "roles": [
        "adult"
      ],
      "html": "screens/create-household/index.html",
      "spec": "screens/create-household/screen.json",
      "purpose": "Tạo household và xác nhận múi giờ với owner membership nguyên tử.",
      "nativeRoute": "/design/create-household",
      "status": "designed",
      "sha256": "f46502113646581d04c4bd32eb7be5225a26116e54fc208f441d94f20ec95cf1"
    },
    {
      "id": "join-household",
      "title": "Nhập mã mời",
      "group": "authentication-home-setup",
      "roles": [
        "adult"
      ],
      "html": "screens/join-household/index.html",
      "spec": "screens/join-household/screen.json",
      "purpose": "Kiểm tra lời mời một lần trước khi chấp nhận.",
      "nativeRoute": "/design/join-household",
      "status": "designed",
      "sha256": "df4608f46851cd1379db7011c8accea7ffe718204532244ea02a7f30d118479c"
    },
    {
      "id": "invite-review",
      "title": "Bạn được mời tới Nhà Lá",
      "group": "authentication-home-setup",
      "roles": [
        "adult"
      ],
      "html": "screens/invite-review/index.html",
      "spec": "screens/invite-review/screen.json",
      "purpose": "Xem đích đến và vai trò trước một lần accept.",
      "nativeRoute": "/design/invite-review",
      "status": "designed",
      "sha256": "7306a1dca4ba443c3099e6953a0a816e1d044f785ad331cecf7ce500250ba8b6"
    },
    {
      "id": "setup-spaces",
      "title": "Chọn các phòng",
      "group": "authentication-home-setup",
      "roles": [
        "adult"
      ],
      "html": "screens/setup-spaces/index.html",
      "spec": "screens/setup-spaces/screen.json",
      "purpose": "Chọn rooms khởi đầu rồi tùy chỉnh tên.",
      "nativeRoute": "/design/setup-spaces",
      "status": "designed",
      "sha256": "a63b90c55f4fa9f036c8be3760515bd25940141b460e7faf29ccd1eb0123a1b8"
    },
    {
      "id": "setup-starter-tasks",
      "title": "Thêm vài việc thường làm",
      "group": "authentication-home-setup",
      "roles": [
        "adult"
      ],
      "html": "screens/setup-starter-tasks/index.html",
      "spec": "screens/setup-starter-tasks/screen.json",
      "purpose": "Chọn starter tasks để review lịch và phân công trước tạo.",
      "nativeRoute": "/design/setup-starter-tasks",
      "status": "designed",
      "sha256": "3ec77580f5c698d511ac91c3cc0c45ab457d9b7e2f3ebd91e551587524d488aa"
    },
    {
      "id": "starter-task-review",
      "title": "Xem lại trước khi tạo",
      "group": "authentication-home-setup",
      "roles": [
        "adult"
      ],
      "html": "screens/starter-task-review/index.html",
      "spec": "screens/starter-task-review/screen.json",
      "purpose": "Sửa effort/lặp/first due/người nhận của mẫu trước xác nhận.",
      "nativeRoute": "/design/starter-task-review",
      "status": "designed",
      "sha256": "72dc94fb894b5c3994c017ab69c5a06fa25dd87c779b931cf5cb7da7614da1ff"
    },
    {
      "id": "setup-complete",
      "title": "Sẵn sàng rồi",
      "group": "authentication-home-setup",
      "roles": [
        "adult"
      ],
      "html": "screens/setup-complete/index.html",
      "spec": "screens/setup-complete/screen.json",
      "purpose": "Kết thúc onboarding với tóm tắt rõ các cấu hình mẫu.",
      "nativeRoute": "/design/setup-complete",
      "status": "designed",
      "sha256": "64982efdf2cec6b0bed85ba6d7ae4be8b424cc19685390ba135c708470d3aaaf"
    },
    {
      "id": "today",
      "title": "Hôm nay",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/today/index.html",
      "spec": "screens/today/screen.json",
      "purpose": "Đọc nhóm đến hạn/quá hạn/chờ duyệt và hoàn thành đúng việc của actor.",
      "nativeRoute": "/design/today",
      "status": "designed",
      "sha256": "679c626d37226b99ab3b66d5a911a3a5e3141c0ac67991ec7aae191e77d37eef"
    },
    {
      "id": "today-empty",
      "title": "Chưa có việc hôm nay",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/today-empty/index.html",
      "spec": "screens/today-empty/screen.json",
      "purpose": "Empty agenda giữ đường tạo tay và Nhờ AI.",
      "nativeRoute": "/design/today-empty",
      "status": "designed",
      "sha256": "75c68f7436b65c68cfbf87f42808131d5179c3764214b1c47f3df789d8fe9bde"
    },
    {
      "id": "spaces",
      "title": "Không gian",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/spaces/index.html",
      "spec": "screens/spaces/screen.json",
      "purpose": "Room tiles hiển thị số việc và nhãn trạng thái, không tỷ lệ sạch chưa định nghĩa.",
      "nativeRoute": "/design/spaces",
      "status": "designed",
      "sha256": "ad9dc52dc77733f9bd7f3791dc8aae53364ecaaa248eef669b13ffdf1717c0d8"
    },
    {
      "id": "space-detail",
      "title": "Bếp chung",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/space-detail/index.html",
      "spec": "screens/space-detail/screen.json",
      "purpose": "Room detail dùng cùng task card và đường sửa room.",
      "nativeRoute": "/design/space-detail",
      "status": "designed",
      "sha256": "2d0789478d4ab617cb139471ac4e8cf7c9251835b5c36a957acb6da21f8e1225"
    },
    {
      "id": "space-editor",
      "title": "Sửa không gian",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/space-editor/index.html",
      "spec": "screens/space-editor/screen.json",
      "purpose": "Đổi tên/icon; lưu trữ yêu cầu disposition tasks chưa xong.",
      "nativeRoute": "/design/space-editor",
      "status": "designed",
      "sha256": "1a58ac91ca0cb523255488394fc870da676bfaa637c6e08b16d8b04a1e544c2f"
    },
    {
      "id": "task-create",
      "title": "Thêm việc",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/task-create/index.html",
      "spec": "screens/task-create/screen.json",
      "purpose": "Biểu mẫu việc với room, effort, lặp, due và nhóm phân công hợp lệ.",
      "nativeRoute": "/design/task-create",
      "status": "designed",
      "sha256": "708001e48f96d9de79c729651c9ff28378a0a709d119e14a44892d84a655ba9d"
    },
    {
      "id": "task-edit",
      "title": "Sửa việc",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/task-edit/index.html",
      "spec": "screens/task-edit/screen.json",
      "purpose": "Biểu mẫu việc với room, effort, lặp, due và nhóm phân công hợp lệ.",
      "nativeRoute": "/design/task-edit",
      "status": "designed",
      "sha256": "8b51aa5e9fb45cf5eabb9199aecc9fe53f1834c74b058fdd6537d8f1dbb48ae7"
    },
    {
      "id": "task-detail",
      "title": "Rửa bát sau bữa tối",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/task-detail/index.html",
      "spec": "screens/task-detail/screen.json",
      "purpose": "Chi tiết occurrence snapshot, completion own-only, snooze, sửa và history.",
      "nativeRoute": "/design/task-detail",
      "status": "designed",
      "sha256": "9c421c5aefe64ab4d922f313e1c64cf53dfe3974eaf708a9820dff907d0262ea"
    },
    {
      "id": "task-recurrence",
      "title": "Lặp lại",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/task-recurrence/index.html",
      "spec": "screens/task-recurrence/screen.json",
      "purpose": "Chọn interval hoặc weekday và first due date rõ ràng.",
      "nativeRoute": "/design/task-recurrence",
      "status": "designed",
      "sha256": "dbf203550db8bba5efac67daf9ea11c231ba81d2e5683f39d86a36dcc4dc9a54"
    },
    {
      "id": "task-assignment",
      "title": "Chọn người phụ trách",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/task-assignment/index.html",
      "spec": "screens/task-assignment/screen.json",
      "purpose": "Giao cố định hoặc round_robin cùng-home stable member IDs.",
      "nativeRoute": "/design/task-assignment",
      "status": "designed",
      "sha256": "3a833c8843bfcc5b9a8670d2147a87bf0cd4681bf93122f38455c1ce5de1d30d"
    },
    {
      "id": "task-snooze",
      "title": "Hoãn lần này",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/task-snooze/index.html",
      "spec": "screens/task-snooze/screen.json",
      "purpose": "Snooze một occurrence mà không đổi anchor/lịch lặp.",
      "nativeRoute": "/design/task-snooze",
      "status": "designed",
      "sha256": "b86337ea5f17623d65e6e00404126ba5eace5ae6786ea84e6da2091017a95025"
    },
    {
      "id": "completion-result",
      "title": "Đã hoàn thành",
      "group": "chores-spaces",
      "roles": [
        "adult"
      ],
      "html": "screens/completion-result/index.html",
      "spec": "screens/completion-result/screen.json",
      "purpose": "Kết quả completion mẫu riêng biệt với pending/confirmed và undo.",
      "nativeRoute": "/design/completion-result",
      "status": "designed",
      "sha256": "c5e7f79c2d889cff3e9f02e1a9f4bba1addf81361fe03ad95d901b703937d23c"
    },
    {
      "id": "calendar-list",
      "title": "Lịch chung",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/calendar-list/index.html",
      "spec": "screens/calendar-list/screen.json",
      "purpose": "Agenda nhóm theo ngày cùng nguồn occurrence và bộ lọc với grid.",
      "nativeRoute": "/design/calendar-list",
      "status": "designed",
      "sha256": "a2e613b14e2c9e343bf21d05641b394074abe0d856b1383e2793e05609366f81"
    },
    {
      "id": "calendar-month",
      "title": "Lịch chung",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/calendar-month/index.html",
      "spec": "screens/calendar-month/screen.json",
      "purpose": "Month grid với agenda ngày chọn và điều hướng tháng.",
      "nativeRoute": "/design/calendar-month",
      "status": "designed",
      "sha256": "905ae89d538e66d002426d39c5fdc0c31d9b2b7e05d5421f72b9f1d7fb3bcdf4"
    },
    {
      "id": "calendar-day",
      "title": "Ngày 14 tháng 10",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/calendar-day/index.html",
      "spec": "screens/calendar-day/screen.json",
      "purpose": "Chi tiết ngày đã chọn với status/member/space context giữ nguyên.",
      "nativeRoute": "/design/calendar-day",
      "status": "designed",
      "sha256": "609220df223ef6d675e1a3ead72289592b63b3102a16aa43fd0835e50a099fbe"
    },
    {
      "id": "calendar-filters",
      "title": "Lọc lịch",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/calendar-filters/index.html",
      "spec": "screens/calendar-filters/screen.json",
      "purpose": "Chọn stable member/status/room filters cho cả list và calendar.",
      "nativeRoute": "/design/calendar-filters",
      "status": "designed",
      "sha256": "36f545b611f26a308d5e6d085227224cf90bef7860c53d35a36a4d2a6363e9fc"
    },
    {
      "id": "schedule-preferences",
      "title": "Cài đặt lịch tự động",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/schedule-preferences/index.html",
      "spec": "screens/schedule-preferences/screen.json",
      "purpose": "Weekday household effort budget, không budget từng persona/member.",
      "nativeRoute": "/design/schedule-preferences",
      "status": "designed",
      "sha256": "1f2d8b09c8f2168eb7c910b9d99d9704bdb3eaf924f82bfd6034315639e33e83"
    },
    {
      "id": "schedule-preview",
      "title": "Xem lại lịch",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/schedule-preview/index.html",
      "spec": "screens/schedule-preview/screen.json",
      "purpose": "Review deterministic forecast và locked rows với revision trước apply.",
      "nativeRoute": "/design/schedule-preview",
      "status": "designed",
      "sha256": "2c0e3d20435a3e96bd41792cb84c04dcec8e542c1f98139cbdf23ddcc064e197"
    },
    {
      "id": "schedule-conflicts",
      "title": "Việc cần xem lại",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/schedule-conflicts/index.html",
      "spec": "screens/schedule-conflicts/screen.json",
      "purpose": "Conflict handling không chuyển pending hoặc tự map IDs sai.",
      "nativeRoute": "/design/schedule-conflicts",
      "status": "designed",
      "sha256": "7f556b14be82b8b45b202e0adeecea93353d806c5afc8246c71e13407433f900"
    },
    {
      "id": "schedule-templates",
      "title": "Lịch lưu sẵn",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/schedule-templates/index.html",
      "spec": "screens/schedule-templates/screen.json",
      "purpose": "Saved templates với stale references rõ ràng.",
      "nativeRoute": "/design/schedule-templates",
      "status": "designed",
      "sha256": "04d8f292167d8aca23023c32f98b7c2abed357c49c56f03fea2764b675242ad1"
    },
    {
      "id": "schedule-template-editor",
      "title": "Sửa lịch lưu sẵn",
      "group": "calendar-scheduling",
      "roles": [
        "adult"
      ],
      "html": "screens/schedule-template-editor/index.html",
      "spec": "screens/schedule-template-editor/screen.json",
      "purpose": "Edit reusable household budgets và stable assignments trước lưu.",
      "nativeRoute": "/design/schedule-template-editor",
      "status": "designed",
      "sha256": "37870f2d69515562b087b0fab3600f8469f832596828226877a801affef6203c"
    },
    {
      "id": "members",
      "title": "Thành viên",
      "group": "members-children",
      "roles": [
        "adult"
      ],
      "html": "screens/members/index.html",
      "spec": "screens/members/screen.json",
      "purpose": "Roster chung theo capability, owner quản lý membership và guardian duyệt riêng.",
      "nativeRoute": "/design/members",
      "status": "designed",
      "sha256": "2e40371e2432c80b1476b67cb38e20aaacedf0311db13cca4737a21c861ce2a2"
    },
    {
      "id": "member-detail",
      "title": "Minh",
      "group": "members-children",
      "roles": [
        "adult"
      ],
      "html": "screens/member-detail/index.html",
      "spec": "screens/member-detail/screen.json",
      "purpose": "Xem contributor history và quản lý membership theo owner.",
      "nativeRoute": "/design/member-detail",
      "status": "designed",
      "sha256": "d48143f244fa7c7bc1c26f4ea7da8c145cc6c99e432f92a87801baec3d5961da"
    },
    {
      "id": "member-invite",
      "title": "Mời người cùng nhà",
      "group": "members-children",
      "roles": [
        "owner"
      ],
      "html": "screens/member-invite/index.html",
      "spec": "screens/member-invite/screen.json",
      "purpose": "Tạo/revoke single-use invitation theo owner, không in secret thật.",
      "nativeRoute": "/design/member-invite",
      "status": "designed",
      "sha256": "c0e5153857837f55b1f64c734b7022ac8a357429fa3b7a3a53ae4d328949657d"
    },
    {
      "id": "guardian-request",
      "title": "Quản lý hồ sơ của Bông",
      "group": "members-children",
      "roles": [
        "adult"
      ],
      "html": "screens/guardian-request/index.html",
      "spec": "screens/guardian-request/screen.json",
      "purpose": "Target adult chủ động accept/decline relation, owner không ghi consent thay.",
      "nativeRoute": "/design/guardian-request",
      "status": "designed",
      "sha256": "1d7797466c1a4d7eedd43d491d760bc66b90577682b81ab17ad03c2df04e45b3"
    },
    {
      "id": "child-profile-editor",
      "title": "Hồ sơ của trẻ",
      "group": "members-children",
      "roles": [
        "owner",
        "guardian"
      ],
      "html": "screens/child-profile-editor/index.html",
      "spec": "screens/child-profile-editor/screen.json",
      "purpose": "Create O or edit G child nickname/avatar và guardian, không email/DOB.",
      "nativeRoute": "/design/child-profile-editor",
      "status": "designed",
      "sha256": "a379dae96d752750c9ebc34ef93dd051777e54d9d391383f85e24b957dd18175"
    },
    {
      "id": "child-profile-detail",
      "title": "Bông",
      "group": "members-children",
      "roles": [
        "adult",
        "guardian"
      ],
      "html": "screens/child-profile-detail/index.html",
      "spec": "screens/child-profile-detail/screen.json",
      "purpose": "Guardian-specific profile, pairing và task-scoped eligibility.",
      "nativeRoute": "/design/child-profile-detail",
      "status": "designed",
      "sha256": "259d1c7b18997a3de22a6c6ce656cc50a2b71bc28e209e392542b2ea8a448bc8"
    },
    {
      "id": "child-pairing",
      "title": "Ghép máy của Bông",
      "group": "members-children",
      "roles": [
        "adult",
        "guardian"
      ],
      "html": "screens/child-pairing/index.html",
      "spec": "screens/child-pairing/screen.json",
      "purpose": "Guardian cấp proof một lần và TTL, không giả QR quét được.",
      "nativeRoute": "/design/child-pairing",
      "status": "designed",
      "sha256": "783ecc9da83bdaeef2e24ba5173e9973782375b4cfc038197b8f130d454ce4cd"
    },
    {
      "id": "child-pair-redeem",
      "title": "Nhập mã của phụ huynh",
      "group": "members-children",
      "roles": [
        "public"
      ],
      "html": "screens/child-pair-redeem/index.html",
      "spec": "screens/child-pair-redeem/screen.json",
      "purpose": "Unpaired device redeem, SecureStore rồi activate theo recovery-safe contract.",
      "nativeRoute": "/design/child-pair-redeem",
      "status": "designed",
      "sha256": "ac22ac2a07fc43a106c26ca497bed25216498b49e117b00db2664bed07425921"
    },
    {
      "id": "child-devices",
      "title": "Máy của Bông",
      "group": "members-children",
      "roles": [
        "guardian"
      ],
      "html": "screens/child-devices/index.html",
      "spec": "screens/child-devices/screen.json",
      "purpose": "List/revoke đúng child devices, không raw credentials.",
      "nativeRoute": "/design/child-devices",
      "status": "designed",
      "sha256": "7fc33df1ead1da7d2411d071cf846d546300dd12660266b9785e00855e99d34d"
    },
    {
      "id": "child-today",
      "title": "Việc của con",
      "group": "members-children",
      "roles": [
        "child"
      ],
      "html": "screens/child-today/index.html",
      "spec": "screens/child-today/screen.json",
      "purpose": "Child nhìn own assignments, chưa có điểm cho pending.",
      "nativeRoute": "/design/child-today",
      "status": "designed",
      "sha256": "80b22206880d68a6f4c18be7246134a10160c115dfa741f2e8d212326fc7bb4f"
    },
    {
      "id": "child-task-detail",
      "title": "Gấp chăn, xếp gối",
      "group": "members-children",
      "roles": [
        "child"
      ],
      "html": "screens/child-task-detail/index.html",
      "spec": "screens/child-task-detail/screen.json",
      "purpose": "Own child instructions với submit, không adult completion hay sửa due.",
      "nativeRoute": "/design/child-task-detail",
      "status": "designed",
      "sha256": "2f3af66e3bed070a685e931a9b8a20d8aa14536224fba85be857628d98c30ada"
    },
    {
      "id": "child-achievements",
      "title": "Thành tích của con",
      "group": "members-children",
      "roles": [
        "child"
      ],
      "html": "screens/child-achievements/index.html",
      "spec": "screens/child-achievements/screen.json",
      "purpose": "Own confirmed history/net effort, undo điều chỉnh ledger.",
      "nativeRoute": "/design/child-achievements",
      "status": "designed",
      "sha256": "f73a5494b9b25059052c75469bfb736771eea3672a54912da836319666e12dcb"
    },
    {
      "id": "child-settings",
      "title": "Cài đặt của con",
      "group": "members-children",
      "roles": [
        "child"
      ],
      "html": "screens/child-settings/index.html",
      "spec": "screens/child-settings/screen.json",
      "purpose": "Child-only preferences và re-pair, không adult settings.",
      "nativeRoute": "/design/child-settings",
      "status": "designed",
      "sha256": "74439e8f65eac4958cb4059a5f65b741cadf5f7fecded061d20c72a469d3aa5e"
    },
    {
      "id": "approvals",
      "title": "Việc chờ bạn duyệt",
      "group": "members-children",
      "roles": [
        "guardian"
      ],
      "html": "screens/approvals/index.html",
      "spec": "screens/approvals/screen.json",
      "purpose": "Pending submissions chỉ của child có relation G active.",
      "nativeRoute": "/design/approvals",
      "status": "designed",
      "sha256": "f914551e8f680fff2a21b259247bd57b55349ea90a9f9151ef5f8c5dc92c991a"
    },
    {
      "id": "submission-review",
      "title": "Bông đã tưới cây",
      "group": "members-children",
      "roles": [
        "guardian"
      ],
      "html": "screens/submission-review/index.html",
      "spec": "screens/submission-review/screen.json",
      "purpose": "Review latest submission ID/version trước approve/reject.",
      "nativeRoute": "/design/submission-review",
      "status": "designed",
      "sha256": "5da7e5da7c0f8d2387aa15d6ebaf6effc2b8222ab40fedeee456ef6c98ec6ccc"
    },
    {
      "id": "submission-redo",
      "title": "Nhắn con làm lại",
      "group": "members-children",
      "roles": [
        "guardian"
      ],
      "html": "screens/submission-redo/index.html",
      "spec": "screens/submission-redo/screen.json",
      "purpose": "Reject có lý do cụ thể, không điểm, cho child gửi cycle mới.",
      "nativeRoute": "/design/submission-redo",
      "status": "designed",
      "sha256": "d585e3e50f5097797ae7a6e692731d6983af11865b55caa9785f5d839c1e2580"
    },
    {
      "id": "history",
      "title": "Lịch sử",
      "group": "history-pro",
      "roles": [
        "adult"
      ],
      "html": "screens/history/index.html",
      "spec": "screens/history/screen.json",
      "purpose": "Free chronological history với events/pending/undo rõ ràng.",
      "nativeRoute": "/design/history",
      "status": "designed",
      "sha256": "11c8af754097a88fefaa7614f5e55660df441a6fc8895179efe25c218a25aa47"
    },
    {
      "id": "contribution-statistics",
      "title": "Thống kê công sức",
      "group": "history-pro",
      "roles": [
        "adult"
      ],
      "html": "screens/contribution-statistics/index.html",
      "spec": "screens/contribution-statistics/screen.json",
      "purpose": "Pro aggregate stats có filled encoding và nguồn dữ liệu mẫu rõ.",
      "nativeRoute": "/design/contribution-statistics",
      "status": "designed",
      "sha256": "5f0b339129037a58d35b6f276b9a754df2c281d27e13d59c0fedeb672c2d87ac"
    },
    {
      "id": "pro-benefits",
      "title": "Gói Pro",
      "group": "history-pro",
      "roles": [
        "adult"
      ],
      "html": "screens/pro-benefits/index.html",
      "spec": "screens/pro-benefits/screen.json",
      "purpose": "Pro benefits không giá/trial/quota chưa duyệt.",
      "nativeRoute": "/design/pro-benefits",
      "status": "designed",
      "sha256": "e275cad2d76a0b679232c270caf218e9ecdf65963bb5b6e5fbdb949e8f70a699"
    },
    {
      "id": "pro-offering-unavailable",
      "title": "Chưa tải được gói",
      "group": "history-pro",
      "roles": [
        "adult"
      ],
      "html": "screens/pro-offering-unavailable/index.html",
      "spec": "screens/pro-offering-unavailable/screen.json",
      "purpose": "Unavailable store offering giữ Free core và restore.",
      "nativeRoute": "/design/pro-offering-unavailable",
      "status": "designed",
      "sha256": "6a7491995e5102f5ea3ee3469c8f0f07a648ed31784721be6a60e059c2223083"
    },
    {
      "id": "purchase-verification",
      "title": "Đang xác minh giao dịch",
      "group": "history-pro",
      "roles": [
        "adult"
      ],
      "html": "screens/purchase-verification/index.html",
      "spec": "screens/purchase-verification/screen.json",
      "purpose": "Pending entitlement không báo unlock trước server reconcile.",
      "nativeRoute": "/design/purchase-verification",
      "status": "designed",
      "sha256": "11ad14a56beb8168cf806336189fa14f3e0f061ca93acb2106a5abd7b296fe4e"
    },
    {
      "id": "restore-purchases",
      "title": "Khôi phục gói đã mua",
      "group": "history-pro",
      "roles": [
        "adult"
      ],
      "html": "screens/restore-purchases/index.html",
      "spec": "screens/restore-purchases/screen.json",
      "purpose": "Restore native store rồi server reconcile, không tự rebind household.",
      "nativeRoute": "/design/restore-purchases",
      "status": "designed",
      "sha256": "405501359beace0c592a14e510247b55a326bd58e2ce04be838724b27bb66170"
    },
    {
      "id": "subscription-status",
      "title": "Gói của nhà",
      "group": "history-pro",
      "roles": [
        "adult"
      ],
      "html": "screens/subscription-status/index.html",
      "spec": "screens/subscription-status/screen.json",
      "purpose": "View grant/expiry/buyer binding without child store identifiers.",
      "nativeRoute": "/design/subscription-status",
      "status": "designed",
      "sha256": "0315e852d19e7e5c70a61e128199fc169510bd57b16988e0b3d9eb12dd599036"
    },
    {
      "id": "settings",
      "title": "Cài đặt",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/settings/index.html",
      "spec": "screens/settings/screen.json",
      "purpose": "Account/app/privacy settings grouped; no developer controls inside product.",
      "nativeRoute": "/design/settings",
      "status": "designed",
      "sha256": "54c1858ba85d5b609e3d7c65a8cc08b0de3a24178284e6443350234f76fce220"
    },
    {
      "id": "profile",
      "title": "Hồ sơ của tôi",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/profile/index.html",
      "spec": "screens/profile/screen.json",
      "purpose": "Adult display preferences không mass-assign identity/role.",
      "nativeRoute": "/design/profile",
      "status": "designed",
      "sha256": "8725804005662975fd28c481aac2ad9c2dde74e490efe077fe78f4529f5fcf8f"
    },
    {
      "id": "household-settings",
      "title": "Nhà Lá",
      "group": "settings-privacy",
      "roles": [
        "owner"
      ],
      "html": "screens/household-settings/index.html",
      "spec": "screens/household-settings/screen.json",
      "purpose": "Owner home rename/timezone và các dependencies.",
      "nativeRoute": "/design/household-settings",
      "status": "designed",
      "sha256": "e08c3cbb6eda749779cf75d3fdf7bd0b768e25c4110f827242cfe493fd60b218"
    },
    {
      "id": "notification-settings",
      "title": "Thông báo của bạn",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/notification-settings/index.html",
      "spec": "screens/notification-settings/screen.json",
      "purpose": "Per-type preferences với native permission denied recovery.",
      "nativeRoute": "/design/notification-settings",
      "status": "designed",
      "sha256": "7307a149bc38ed6d15d72ab2e6c820a44a47d40ea941f859a3d78bef95555bb3"
    },
    {
      "id": "notification-permission",
      "title": "Bật nhắc việc",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/notification-permission/index.html",
      "spec": "screens/notification-permission/screen.json",
      "purpose": "App rationale/denied recovery, system prompt belongs to OS.",
      "nativeRoute": "/design/notification-permission",
      "status": "designed",
      "sha256": "bf32b17e057f8368b32058e16a7245b3ef59b34ca689f03187378070b60ab71c"
    },
    {
      "id": "quiet-hours",
      "title": "Giờ yên lặng",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/quiet-hours/index.html",
      "spec": "screens/quiet-hours/screen.json",
      "purpose": "Cross-midnight quiet window by household/member local timezone.",
      "nativeRoute": "/design/quiet-hours",
      "status": "designed",
      "sha256": "4398a7b93f6b5037fb5e55c338e36ce7554501016faea201c441345e4a1f90d9"
    },
    {
      "id": "appearance-language",
      "title": "Giao diện và ngôn ngữ",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/appearance-language/index.html",
      "spec": "screens/appearance-language/screen.json",
      "purpose": "Persistent light/dark/system with complete Vietnamese only.",
      "nativeRoute": "/design/appearance-language",
      "status": "designed",
      "sha256": "4ba6240e65273a857dd2cbf691aa6538f77e2457186c34d593d3a1e4ce22e958"
    },
    {
      "id": "privacy",
      "title": "Dữ liệu của bạn",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/privacy/index.html",
      "spec": "screens/privacy/screen.json",
      "purpose": "Privacy policy gate and accessible safety controls without paywall.",
      "nativeRoute": "/design/privacy",
      "status": "designed",
      "sha256": "d18357b2778d363864d3d2155c2995d968d10d8319fb7740280ecf2a1def8384"
    },
    {
      "id": "data-export",
      "title": "Xuất dữ liệu của tôi",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/data-export/index.html",
      "spec": "screens/data-export/screen.json",
      "purpose": "Scoped export job and private authorized download, no public URL.",
      "nativeRoute": "/design/data-export",
      "status": "designed",
      "sha256": "d82d2b7d0693fba9554f4611f465402e71e28ff1503911b74af0b3169efa2f37"
    },
    {
      "id": "leave-household",
      "title": "Rời Nhà Lá",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/leave-household/index.html",
      "spec": "screens/leave-household/screen.json",
      "purpose": "Dependency review before active membership leave.",
      "nativeRoute": "/design/leave-household",
      "status": "designed",
      "sha256": "794f6e59d71fbfcd86eb04e6e8a7b10eec4363bdc12f075074d3c02270cc72af"
    },
    {
      "id": "transfer-owner",
      "title": "Chọn chủ nhà mới",
      "group": "settings-privacy",
      "roles": [
        "owner"
      ],
      "html": "screens/transfer-owner/index.html",
      "spec": "screens/transfer-owner/screen.json",
      "purpose": "Transfer to one active adult same-home, not guardian grant.",
      "nativeRoute": "/design/transfer-owner",
      "status": "designed",
      "sha256": "33ec6530636d009afefecce3b11525ed3b964de7002f7ad6df52e4c44ec65f86"
    },
    {
      "id": "account-deletion",
      "title": "Xóa tài khoản",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/account-deletion/index.html",
      "spec": "screens/account-deletion/screen.json",
      "purpose": "Deletion policy/reauth/dependencies and explicit irreversible confirmation.",
      "nativeRoute": "/design/account-deletion",
      "status": "designed",
      "sha256": "23e7028a26e9afa6418406b9b409a1a477f7230cf99634f8ee1245b3999bcde7"
    },
    {
      "id": "deletion-progress",
      "title": "Theo dõi yêu cầu xóa",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/deletion-progress/index.html",
      "spec": "screens/deletion-progress/screen.json",
      "purpose": "Restricted status-capability view after sessions revoked without household data.",
      "nativeRoute": "/design/deletion-progress",
      "status": "designed",
      "sha256": "2ffef4e8bc70120bbed3b0cb49bd0da0b52d978ac4bbf05929ea0319695e68ea"
    },
    {
      "id": "help-about",
      "title": "Trợ giúp",
      "group": "settings-privacy",
      "roles": [
        "adult"
      ],
      "html": "screens/help-about/index.html",
      "spec": "screens/help-about/screen.json",
      "purpose": "Support content with common task/AI/child expectations.",
      "nativeRoute": "/design/help-about",
      "status": "designed",
      "sha256": "c9854715605a1521c3e7fcb1849f72dc1ac85656469805f351b6f83e4841ebef"
    },
    {
      "id": "session-revoked",
      "title": "Đăng nhập lại",
      "group": "resilience",
      "roles": [
        "public"
      ],
      "html": "screens/session-revoked/index.html",
      "spec": "screens/session-revoked/screen.json",
      "purpose": "Stop queue/hide scoped data before safe auth route.",
      "nativeRoute": "/design/session-revoked",
      "status": "designed",
      "sha256": "2e2b98a0f51f9e87b020c8cba83aca43317872d5b5fd52c3a2d03754c44189e5"
    },
    {
      "id": "offline-queue",
      "title": "Chờ đồng bộ",
      "group": "resilience",
      "roles": [
        "adult"
      ],
      "html": "screens/offline-queue/index.html",
      "spec": "screens/offline-queue/screen.json",
      "purpose": "Completion outbox has stable actor-scoped command IDs and no early points.",
      "nativeRoute": "/design/offline-queue",
      "status": "designed",
      "sha256": "c942a07240f1886ab4fd5447a034e05bc5931522c728894410416019b249851f"
    },
    {
      "id": "sync-conflict",
      "title": "Việc này đã thay đổi",
      "group": "resilience",
      "roles": [
        "adult"
      ],
      "html": "screens/sync-conflict/index.html",
      "spec": "screens/sync-conflict/screen.json",
      "purpose": "Canonical conflict review with local vs current state and new explicit intent.",
      "nativeRoute": "/design/sync-conflict",
      "status": "designed",
      "sha256": "85816dff719a78f580fba7a4381d0ac8b75d672c25bc3e5d0873e9afb6643db9"
    },
    {
      "id": "ai-chat",
      "title": "Trợ lý",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/ai-chat/index.html",
      "spec": "screens/ai-chat/screen.json",
      "purpose": "Full-screen common assistant with suggested local examples and accessible manual path.",
      "nativeRoute": "/design/ai-chat",
      "status": "designed",
      "sha256": "0a80984ab15ed2d19351ac1ee09f3d2303945150997a2ef618e506b180d27e21"
    },
    {
      "id": "ai-listening",
      "title": "Đang nghe",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/ai-listening/index.html",
      "spec": "screens/ai-listening/screen.json",
      "purpose": "Voice sample has explicit stop/cancel/timer and no actual recording.",
      "nativeRoute": "/design/ai-listening",
      "status": "designed",
      "sha256": "8fcd8e7000627e4ee8439a6aace377b1dd3fe8d5ae1bdac3721290decfee06b4"
    },
    {
      "id": "ai-transcribing",
      "title": "Đang chép lời",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/ai-transcribing/index.html",
      "spec": "screens/ai-transcribing/screen.json",
      "purpose": "Biến thể chép lời đang xử lý, cho hủy và khóa gửi tới khi có bản chép.",
      "nativeRoute": "/design/ai-transcribing",
      "status": "designed",
      "sha256": "73a925d370db907a6d207c34abd52b04e2aee720cfb1d6805f117eebda42c776"
    },
    {
      "id": "ai-transcript",
      "title": "Xem lại lời nói",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/ai-transcript/index.html",
      "spec": "screens/ai-transcript/screen.json",
      "purpose": "Editable transcript before sending to assistant/proposal.",
      "nativeRoute": "/design/ai-transcript",
      "status": "designed",
      "sha256": "841ec155a6532d8de3072d081793d7cbc3a70ffd67ca6a2601c615bc160b2850"
    },
    {
      "id": "ai-clarification",
      "title": "Bạn muốn đổi việc nào?",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/ai-clarification/index.html",
      "spec": "screens/ai-clarification/screen.json",
      "purpose": "Ask one precise ambiguity question before binding same-home IDs.",
      "nativeRoute": "/design/ai-clarification",
      "status": "designed",
      "sha256": "e557cbe225b7169e6b8471d2497311e17ef742ebb12fae4abad5f496d99ce9b3"
    },
    {
      "id": "ai-proposal",
      "title": "Xem lại trước khi lưu",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/ai-proposal/index.html",
      "spec": "screens/ai-proposal/screen.json",
      "purpose": "Exact editable proposal recipient/due/recurrence/effort/conflicts before confirm.",
      "nativeRoute": "/design/ai-proposal",
      "status": "designed",
      "sha256": "c63d2b88c87c4cf1760f415d5c581d0fe2b7ca0055eb783b2ddaf5eb6bcefbf1"
    },
    {
      "id": "ai-action-result",
      "title": "Kết quả",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/ai-action-result/index.html",
      "spec": "screens/ai-action-result/screen.json",
      "purpose": "Multi-action partial result distinguishes confirmed/pending/conflict/retry.",
      "nativeRoute": "/design/ai-action-result",
      "status": "designed",
      "sha256": "660c8f9449336901e64abede6818638889d578b27e0181505dc0186422c5e70f"
    },
    {
      "id": "ai-unavailable",
      "title": "Trợ lý chưa sẵn sàng",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/ai-unavailable/index.html",
      "spec": "screens/ai-unavailable/screen.json",
      "purpose": "Offline/provider-unavailable assistant fallback preserving draft and manual path.",
      "nativeRoute": "/design/ai-unavailable",
      "status": "designed",
      "sha256": "70120f65921382231d9c4cebfb50a0b82ead5d1c52d85ae5095fec44618b3b7f"
    },
    {
      "id": "microphone-permission",
      "title": "Dùng giọng nói",
      "group": "ai-assistant",
      "roles": [
        "adult",
        "child"
      ],
      "html": "screens/microphone-permission/index.html",
      "spec": "screens/microphone-permission/screen.json",
      "purpose": "Microphone app rationale and denied recovery with typed input always available.",
      "nativeRoute": "/design/microphone-permission",
      "status": "designed",
      "sha256": "80e6e8d3503e5a3a858df67ff63becd80fb23133727802d92445ce38f059336a"
    }
  ]
}
