Bàn giao để agent triển khai đúng.
88 HTML và 88 JSON thiết kế riêng. Bản thiết kế hoàn chỉnh trong project mới; API, native, store và AI thật chưa được triển khai ở đây.
Đọc theo thứ tự này
- screen-manifest.json: 88 IDs, HTML/spec và proposed native route.
- tokens.json: primitive → semantic → component, sáng/tối; sRGB có hex portable trong extension.
- components.json và flows.json: reusable components, exact targets, critical journeys.
- Đọc screen.json cạnh từng HTML: layout, props, tokens, accessibility, fields/validation, states, actions, data shape/example và integration notes.
- ai-agent-contract.json: giao diện đề xuất tương lai, tách khỏi API authority.
- verification.json: kết quả thực chạy và giới hạn bằng chứng.
Quyền không phải là persona
| Actor/capability | Được làm | Guard không được bỏ qua |
|---|---|---|
| E · người lớn active | Sửa và chia việc cùng hộ | Không ghi completion thay người khác |
| O · chủ nhà | Invitations, membership, chuyển owner | Không mặc nhiên là guardian |
| G · guardian đúng trẻ | Pair/device/approve/reject/task eligibility | Relation active và latest child cycle/version |
| C · child device | Own chores/history, submit own completion | Active credential/device + G; không contacts/billing/invites |
| E+Pro | Preview/apply schedule, stats, templates | Verified feature grants từ server |
| B · buyer | Rebind gói đã xác minh | Đúng một household binding |
Hợp đồng dữ liệu phải giữ nguyên
- Success dùng CommandEnvelope:
{data, version, household_revision, replayed}. Room/task trả nested DTO; schedule/history/entitlement theo contracts/phase2.ts. - Lặp theo ngày được chấp nhận, không timestamp client. Due/effort của occurrence là snapshot bất biến; sửa template áp dụng kỳ sau.
- Snooze không đổi anchor. Pending approval không reassign. Undo điều chỉnh ledger/anchor và không đảo successor đã dùng.
- Budget theo weekday của household, không budget theo persona. Forecast deterministic; giữ việc cố định/chờ duyệt.
- Stable Idempotency-Key theo actor/command/household; cùng key nhưng khác body là conflict. Server quyết points, performer và accepted time.
- GET schedule tối đa14 ngày/request. Lịch tháng tải nhiều bounded windows, merge occurrence IDs, không giả forecast thay published data.
Luồng tương tác local đã có
- Tạo việc → interval/weekday → fixed/rotation → save → own completion → history/undo.
- Danh sách ↔ Lịch tháng ↔ chi tiết ngày: dùng chung date/member/status/space filters và occurrences.
- Nhờ AI → chọn ví dụ hoặc nhập đúng câu mẫu → đề xuất sửa được → explicit confirm → kết quả từng lệnh. Câu khác hỏi làm rõ/nhập tay, không giả model success.
- Giọng nói dựng sẵn → dừng → tiến trình chép → sửa transcript → gửi. Không xin quyền/thu âm thật.
- Actor mẫu Bông → submit → An duyệt/nhắn redo → child points. Minh không có quyền guardian. Actor/offline/revoke/reset chỉ trong vùng đánh giá ngoài sản phẩm.
Từ local sang native/API
domain.js là executable reference cho tests, không phải auth server. app.js điều khiển bản thử riêng; screen-behavior.js nối local drafts/screen controls. Native agent phải thay local command dispatch bằng API authority và SecureStore/outbox đúng source, không sao chép việc đổi actor mẫu làm authorization.
| Ranh giới | Việc agent cần nối |
|---|---|
| Auth/OTP | Better Auth plugin đã pin, expiry/replay/rate limit. Không có endpoint tự chế. |
| Pair/child rotation | Redeem → SecureStore → activate; recovery-safe token; stop queue và scoped cache khi revoke. |
| Permissions | Rationale trong app; OS-owned mic/push/camera prompt; denied recovery. Không fake OS success. |
| Pro | Localized store offering, SDK checkout/restore, server reconcile/grant. Chưa giá/trial/quota; Free/child safety không khóa. |
| Deletion/export | Policy fail-closed, reauth/dependencies, durable intent trước revoke; status capability chỉ SecureStore, không URL/log. |
| AI/STT | Provider chưa chọn. Typed allowlist, scope/minimization, versions/idempotency, explicit exact-draft confirm. |
Gap cần giữ minh bạch
- Native routes
/design/<id>là mapping đề xuất, không khai source navigator đã có. - Invite review và display-name write cần đối chiếu/hoàn thiện API source; spec đã ghi gap, không tự tạo endpoints.
- Per-type notification controls là UI đề xuất. Wire hiện chỉ có enabled/locale/quiet_start_local/quiet_end_local; không gửi khóa lạ. Avatar preset native dùng star/cat/rabbit/fox/rocket.
- Giá/trial/quota, AI/STT provider, chính sách pháp lý, store acceptance và OS permission callbacks chưa có bằng chứng thật.
- Static controls giữ draft hoặc demo mutation nếu được hỗ trợ; controls phụ thuộc remote chỉ giải thích ranh giới, không báo thành công.
- Browser/capture/native QA do controller thực hiện: 360/390/430px, dark, font lớn, keyboard, reduced motion, VoiceOver/TalkBack, iOS+Android.
Rebuild và kiểm tra
Source xuất ra chạy trực tiếp bằng static HTML/CSS/JS. Chỉ authoring dùng Python; không runtime compilation hoặc dependencies. Chạy python3 scripts/build-design.py, python3 scripts/build-handoff.py, python3 scripts/verify-design.py và node scripts/behavior-tests.mjs. Dùng Node của host nếu máy không có node. scripts/verify-modules.mjs kiểm syntax ES-module rõ ràng. Không start services/deploy trong nhiệm vụ này.
Tham chiếu đã quan sát
Chỉ dùng cấu trúc luồng, không copy hình/logo hoặc ngôn ngữ thương hiệu của sản phẩm tham chiếu. Tám JPG đã xem local, không xuất bản.
- Structured · onboarding: Progress and skip; short benefits. Retain original home artwork, not its pastel collage.
- Todoist · calendar: Month grid above selected-day agenda; same task items as list mode.
- Perplexity · ai-chat: Suggested continuation actions and pinned text/microphone composer; conversational structure only.
- Manus · ai-voice: Explicit transcribing state with cancel and send; do not copy credits/provider branding.
- Klima · settings: Grouped account/app/privacy rows; climate domain structure only.
- Canva · productivity-login: One labeled code field, clear continue action and resend timer; design platform structure only.
- Jira Cloud · productivity-settings: Per-type notification toggles plus device-settings recovery; enterprise task domain structure only.
- Structured · ai-confirmation: Concrete scheduled task card and edit/undo/show actions. Unlike its already-created state, our writes must remain proposals until confirmation.
Source authority snapshot
docs/product-brief.md· MobileApps read-onlyplans/261013-1409-sweepy-vietnam-mobile/mobile-flows.md· MobileApps read-onlyplans/261013-1409-sweepy-vietnam-mobile/api-contracts.md· MobileApps read-onlypackages/domain/src/contracts/phase2.ts· MobileApps read-onlypackages/domain/src/index.ts· MobileApps read-onlypackages/domain/src/contracts/phase3.ts· MobileApps read-onlypackages/domain/src/contracts/billing.ts· MobileApps read-onlyapps/mobile/src/lib/api.ts· MobileApps read-onlyplans/261014-1209-complete-mobile-design/design-brief.md· MobileApps read-onlyplans/261014-1209-complete-mobile-design/required-screens.json· MobileApps read-onlyplans/261014-1209-complete-mobile-design/screen.schema.json· MobileApps read-only
New task brief overrides old persona navigation. Ownership: only this new OpenDesign project. No deployments, services, secrets or old/native source edits.