# NoteLett — Master Roadmap Version: 2.0 Date: May 5, 2026 Status: Production-readiness handoff complete with explicit environment deferrals Companion Docs: `docs/PRD.md`, `docs/PRODUCTION_READINESS_HANDOFF_ROADMAP.md` # 1. Purpose This is the **master execution tracker** for the notes platform. Use this document to: - track phase status, - understand sequencing and dependencies, - assign workstreams to coding agents, - link out to smaller roadmap documents with focused execution detail. Detailed implementation plans live under `docs/roadmaps/`. # Status Legend - **Scaffolded** — package/app/module structure exists and boots. - **Mock-backed** — UI/workflow exists but currently runs on mock or fallback data. - **Local-only** — behavior exists in client/local state without real backend persistence. - **Integrated** — wired to the intended backend/platform dependency. - **Verified** — exercised by build, typecheck, tests, or smoke checks. # 2. Confirmed Stack - **Web** - Next.js 16 - React 19 - TypeScript - **Backend** - Fastify 5 - TypeScript ESM - Zod - **Mobile MVP** - React Native + Expo - **Shared Services** - `platform-service` - `extraction-service` - `mcp-server` # 3. Roadmap Document Index - [x] `docs/roadmaps/00_MASTER_EXECUTION_PLAN.md` - [x] `docs/roadmaps/01_FOUNDATIONS_AND_DECISIONS.md` - [x] `docs/roadmaps/02_BACKEND_ROADMAP.md` - [x] `docs/roadmaps/03_WEB_ROADMAP.md` - [x] `docs/roadmaps/04_MOBILE_ROADMAP.md` - [x] `docs/roadmaps/05_MCP_AGENT_ROADMAP.md` - [x] `docs/roadmaps/06_PLATFORM_INTEGRATIONS_ROADMAP.md` - [x] `docs/roadmaps/07_QA_RELEASE_DOCS_ROADMAP.md` - [x] `docs/WEB_AI_FAST_ROADMAP.md` — web product phases (AI-fast velocity, retrieval, copilot, sharing) # 4. Master Phase Tracker ## Phase 0 — Foundations and Decisions ### Goals - finalize product identity and product manifest inputs - choose the single MVP mobile path - define repo structure and ownership boundaries - define initial domain objects and module boundaries - lock reuse strategy against the ByteLyst workspace ### Checklist - [x] product name finalized: NoteLett - [x] `productId` finalized: `notelett` - [x] backend port assigned: `4016` - [x] domain / bundle identifiers assigned: `notelett.app`, `com.bytelyst.notelett`, `com.notelett.app` - [x] token namespace requested through `--nl-*` CSS variables and `NoteLettTheme` - [x] mobile path confirmed as React Native + Expo MVP - [x] repo folder structure finalized across `backend/`, `web/`, `mobile/`, `shared/`, and `docs/` - [x] initial Cosmos container strategy defined for notes, workspaces, relationships, tasks, artifacts, agent actions, saved views, prompts, schedules, webhooks, collaborators, shares, versions, intake, and Palace data - [x] operator vs shared admin boundary defined: NoteLett product logic remains repo-local; auth, flags, telemetry, diagnostics, billing, blob, extraction, MCP, and shared packages come from `learning_ai_common_plat` - [x] PRD and roadmap aligned for product identity and active production-readiness handoff; historical docs are labeled as superseded context where applicable ### Owner Docs - `docs/roadmaps/00_MASTER_EXECUTION_PLAN.md` - `docs/roadmaps/01_FOUNDATIONS_AND_DECISIONS.md` ## Phase 1 — Core Product Skeleton ### Goals - stand up web, backend, and mobile skeletons - complete auth, app shells, and first persistence layer - establish notes/workspaces as end-to-end vertical slices ### Checklist - [x] web app boots with authenticated shell - [x] backend boots with health and first modules - [x] mobile app boots with auth and navigation shell - [x] notes CRUD works end-to-end across backend clients, web note detail/editor, mobile capture/detail/edit, and MCP write paths - [x] workspaces CRUD works end-to-end across backend clients, web workspace surfaces, and mobile workspace store/API - [x] first telemetry events are wired through shared web/mobile platform clients; production smoke verification remains tracked in `docs/PRODUCTION_READINESS_HANDOFF_ROADMAP.md` ### Owner Docs - `docs/roadmaps/02_BACKEND_ROADMAP.md` - `docs/roadmaps/03_WEB_ROADMAP.md` - `docs/roadmaps/04_MOBILE_ROADMAP.md` - `docs/roadmaps/06_PLATFORM_INTEGRATIONS_ROADMAP.md` ## Phase 2 — Notes Product MVP ### Goals - complete human-facing notes product MVP - add relationships, tasks, artifacts, and useful mobile parity - harden auditability for meaningful write paths ### Checklist - [x] note CRUD complete for backend/web/mobile core surfaces - [x] workspace switching and product-scoped permissions are implemented for current MVP surfaces; production membership hardening remains in P3/P5 - [x] note relationships work through backend routes, web link modal/panels, and MCP linking - [x] tasks can be extracted and linked through backend routes, MCP task extraction, and web/mobile review surfaces - [x] artifact upload/download works through shared blob client wrappers and backend artifact records - [x] mobile quick capture and retrieval are functional through backend-backed stores and API clients - [x] audit log exists for agent/MCP write paths and review flows ### Owner Docs - `docs/roadmaps/02_BACKEND_ROADMAP.md` - `docs/roadmaps/03_WEB_ROADMAP.md` - `docs/roadmaps/04_MOBILE_ROADMAP.md` - `docs/roadmaps/06_PLATFORM_INTEGRATIONS_ROADMAP.md` - `docs/roadmaps/07_QA_RELEASE_DOCS_ROADMAP.md` ## Phase 3 — Agentic Layer ### Goals - ship safe MCP tools - add approval and audit workflows - support AI-assisted and AI-mediated knowledge flows ### Checklist - [x] core MCP tools work end-to-end for list, get, search, create draft, update, link notes, extract tasks, and attach artifact - [x] agent write paths support approval/audit where required, including dry-run, idempotency key, and correlation ID behavior - [x] audit and review UX is functional across web and mobile, including batch review and agent timeline - [x] extraction-backed workflows exist for task extraction, summarize/copilot, URL intake, prompts, and related Smart Actions; dependency outage UX remains in P6/P7 - [x] operator workflows are documented in AGENTS/README and historical progress notes; production runbook remains in P9/P10 ### Owner Docs - `docs/roadmaps/05_MCP_AGENT_ROADMAP.md` - `docs/roadmaps/02_BACKEND_ROADMAP.md` - `docs/roadmaps/03_WEB_ROADMAP.md` - `docs/roadmaps/07_QA_RELEASE_DOCS_ROADMAP.md` ## Phase 4 — Search and Knowledge Acceleration ### Goals - make search, retrieval, and context navigation genuinely strong - support scalable knowledge workflows for humans and agents ### Checklist - [x] search is backend-backed with saved views, seeded query params, and debounced web search - [x] linked-note navigation is meaningful through relationship panels, link modal, and note detail hydration - [x] retrieval is scoped by workspace/product for current APIs; Palace and RAG production verification remains blocked by current common-platform API drift - [x] search telemetry is wired at the client/platform layer; production event taxonomy and smoke checks remain in P2/P9 - [x] web UX supports dense knowledge usage through dashboard, search, reviews, note detail, prompts, intake, settings, Palace, and chat surfaces ### Owner Docs - `docs/roadmaps/02_BACKEND_ROADMAP.md` - `docs/roadmaps/03_WEB_ROADMAP.md` - `docs/roadmaps/04_MOBILE_ROADMAP.md` - `docs/roadmaps/05_MCP_AGENT_ROADMAP.md` - `docs/roadmaps/06_PLATFORM_INTEGRATIONS_ROADMAP.md` ## Phase 5 — Production Readiness and Release ### Goals - ensure builds, tests, release flows, and runbooks are stable - prepare the repo for continued multi-agent execution ### Checklist - [x] build/test/release flows are documented in AGENTS, README, CI, Docker files, and `docs/PRODUCTION_READINESS_HANDOFF_ROADMAP.md` - [ ] core smoke tests pass on all chosen surfaces: current May 5 baseline fails backend typecheck/build/tests and lint; see production-readiness P0.5 - [ ] production-readiness checklist passes: active work is tracked in `docs/PRODUCTION_READINESS_HANDOFF_ROADMAP.md` - [x] deferred list documented in this roadmap and production-readiness baseline inventory - [x] roadmap status updated after implementation through May 5 baseline reconciliation ### Owner Docs - `docs/roadmaps/07_QA_RELEASE_DOCS_ROADMAP.md` - all workstream docs # 5. Parallelization Rules ## Safe Parallel Tracks After Phase 0 - **Agent 1** - backend core modules - **Agent 2** - web shell and notes/workspace routes - **Agent 3** - mobile shell and quick capture flows - **Agent 4** - MCP tool schemas and read-only tools - **Agent 5** - platform integrations, telemetry, diagnostics, extraction wiring - **Agent 6** - QA docs, smoke plans, release-readiness docs ## High-Collision Areas - shared product config files - root package/dependency manifests - shared route registration - top-level navigation/layout files - shared token/theme entrypoints - shared auth setup ## Merge Order - [ ] foundations - [ ] backend core modules - [ ] web shell and CRUD flows - [ ] mobile shell and core flows - [ ] MCP core tools - [ ] integrations and enrichments - [ ] QA hardening and release docs # 6. Suggested First Sprint - [x] finalize product identity and mobile path - [x] scaffold `web/`, `mobile/`, and `backend/` - [x] implement backend `notes` and `workspaces` - [x] build web authenticated shell and note list/detail pages - [x] build mobile shell and quick capture - [x] define MCP tool schemas for list/get/search/create-draft - [x] wire telemetry, diagnostics, and extraction clients # 7. Definition of Done - [x] web app supports real end-to-end note workflows - [x] mobile app supports meaningful capture/retrieval for MVP - [ ] backend modules are tested and production-shaped: many tests exist, but May 5 baseline currently fails because Palace/LLM integrations drifted from local common-platform APIs - [x] MCP tools exist for core note workflows - [ ] shared platform integrations are stable: clients and package usage exist, but runtime smoke checks and common-platform API alignment remain active production-readiness work - [ ] roadmap, PRD, and build/test commands are aligned: this roadmap is reconciled; AGENTS, README, and stale historical docs are handled by P1.2-P1.5 - [ ] release readiness is documented and repeatable: active production gate remains P8-P10 # 8. Progress Notes - 2026-03-10 — Web workstream materially advanced: - `learning_ai_notes/web/` was scaffolded from scratch - authenticated shell and core route surfaces now exist - dashboard, workspaces, note detail, search, settings, and error states now mix backend-backed data with a smaller set of still-derived operator/saved-view summaries - the web roadmap is now tracking real implementation state instead of draft-only planning - 2026-03-10 — Backend workstream materially advanced: - `learning_ai_notes/backend/` was scaffolded from scratch - Fastify 5 + TypeScript ESM service bootstrap now exists with shared `@bytelyst/*` package wiring - `/health` and readiness-capable service bootstrap were added via `@bytelyst/fastify-core` - `notes`, `workspaces`, `note-relationships`, `note-tasks`, `note-artifacts`, and `note-agent-actions` modules now exist with schemas, repositories, routes, and starter tests - explicit `/notes/search` support now exists in the backend - product bootstrap identity currently uses provisional values pending final product naming and manifest alignment - 2026-03-10 — Web/backend verification materially advanced: - `web/` dependencies are now installed - `web` `npm run typecheck` passes - `web` `npm run build` passes after fixing the auth `BaseUser` shape and guarding demo session init from server-side `localStorage` - `backend/` dependencies are now installed - `backend` `npm run typecheck` passes after normalizing Fastify type boundaries for `file:` workspace deps - `backend` `npm test` passes after fixing hoisted Vitest mock patterns and stale route registration count assertions, though the current route tests are still mostly registration-focused rather than deep API-behavior coverage - 2026-03-10 — Web operator/search density materially advanced: - saved views are now represented across dashboard, workspaces, and search - search results now expose a denser operational layout with status, owner, and workspace metadata - operator workflow summary surfaces now exist on dashboard and reviews - workspace cards now expose ownership context for denser navigation - `web/` verification passed again after wiring the richer saved-view/search/operator workflow slice (`npm run typecheck`, `npm test`, `npm run build`) - 2026-03-10 — MCP design work materially advanced: - product-side MCP core tool contracts now exist under `backend/src/mcp/` - namespace, role gating, read-only vs mutating classification, workspace scoping, and dry-run/idempotency/correlation expectations are now encoded for the first core tool set - 2026-03-10 — MCP execution and registration materially advanced: - product-side executable note MCP tools now exist for list/get/search/create-draft - the mutating create-draft path now records a `note-agent-actions` audit/proposal document - product-side MCP note tools now export through a registration adapter compatible with the shared `mcp-server` tool model - backend typecheck passes and backend tests pass with MCP execution coverage included - 2026-03-10 — Mobile workstream materially advanced: - `learning_ai_notes/mobile/` was scaffolded from scratch - Expo + TypeScript root config and Expo Router entrypoints now exist - auth shell, tab navigation, home/recent notes, search, quick capture, inbox, and note detail surfaces now exist - shared mobile wiring now exists for auth, platform client, offline queue, token-based theme usage, and first-pass Zustand stores - mobile currently uses provisional product config values, but quick capture and note retrieval/edit flows are now wired to the product backend for the core note/workspace slice - 2026-03-10 — Mobile utility materially advanced: - home/search/capture are workspace-aware, and home exposes a retrieval summary surface - capture exposes offline queue readiness details for the scaffold - note detail supports lightweight backend-backed editing, artifact summary, and first-pass loading polish - inbox supports simple approval/reject flows plus a lightweight activity feed - 2026-03-10 — Real note/workspace vertical slice materially advanced (`5995b6c`): - mobile quick capture now persists notes to the product backend instead of saving local-only drafts - mobile note editing continues to flow through backend note update endpoints for persisted notes - web dashboard, workspaces, search, and reviews now derive their operator/saved-view side panels from live note/workspace/review data instead of static mock fixtures - web note detail now hydrates linked notes from the backend `note-relationships` endpoint with graceful fallback when relationship data is unavailable - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - `mobile` `npm run typecheck` - 2026-03-10 — Mobile approval/activity integration materially advanced (`8f14698`): - mobile inbox approvals now hydrate from backend `note-agent-actions` instead of seeded local Zustand data - mobile approve/reject actions now persist proposal state back through the backend review route - mobile activity feed now derives from real backend agent-action history across workspaces - verification passed for this slice with: - `mobile` `npm run typecheck` - 2026-03-10 — Mobile note detail truthfulness improved (`2a93b5b`): - the mobile note detail screen now reflects persisted note status, workspace, and last-updated state instead of scaffold-era hardcoded metadata - placeholder note-body copy was removed in favor of truthful empty-state messaging for real backend-backed notes - verification passed for this slice with: - `mobile` `npm run typecheck` - 2026-03-10 — Mobile capture workspace selection materially advanced (`8e57799`): - the mobile capture screen now exposes live workspace selection instead of relying on hidden active-workspace state - backend-backed note creation now reflects the workspace chosen directly from the capture surface - verification passed for this slice with: - `mobile` `npm run typecheck` - 2026-03-10 — Mobile all-workspace view materially advanced (`7d23793`): - the mobile home surface now supports returning to an explicit all-workspaces view instead of forcing the first hydrated workspace - mobile capture now requires an explicit workspace selection before save when no workspace is active - verification passed for this slice with: - `mobile` `npm run typecheck` - 2026-03-10 — Mobile review actions hardened (`7a80094`): - mobile approve/reject actions now disable while the backend update is in flight and expose per-item pending labels - the mobile review surface no longer leaves approve/reject open to duplicate taps during async state changes - verification passed for this slice with: - `mobile` `npm run typecheck` - 2026-03-10 — Active surface copy truthfulness improved (`5458090`): - active landing, workspace, note-detail, and 404 surfaces now describe the backend-backed product state instead of stale scaffold/placeholder wording - mobile note save now awaits the persisted update before exiting edit mode - verification passed for this slice with: - `web` `npm run typecheck` - `mobile` `npm run typecheck` - 2026-03-10 — Web review decisions materially advanced (`1bb220b`): - the web review surface now approves and rejects proposals through the backend `note-agent-actions` review route - proposal comparison cards now expose real approve/reject actions instead of read-only before/after scaffolding - the approval queue and timeline now update in-session after a review decision is applied - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Web note editing materially advanced (`cdc03e3`): - the web note detail surface now saves title/body edits through the backend `PATCH /notes/:id` route - the note detail page now refreshes the live note state after save instead of leaving edits local-only in the form - the editor now exposes an explicit save action and saving state instead of passive editable fields - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Web artifact creation materially advanced (`ef82747`): - the web note detail surface now creates artifact records through the backend `note-artifacts` route - artifact creation is no longer display-only; users can add artifact metadata directly from the note detail surface - newly created artifacts refresh into the live note detail state after creation - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Web task creation materially advanced (`c99390e`): - the web note detail surface now creates manual note tasks through the backend `note-tasks` route - task review is no longer labeled as mock extraction; the task panel now supports backend-backed task creation - newly created tasks refresh into the live note detail state after creation - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Web search integration materially advanced (`4748ed3`): - the web search page now queries the backend note search path instead of filtering a preloaded full note list client-side - the search surface now reflects backend lexical matching for title/body search while preserving saved search summaries - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Workspace filtering materially advanced (`ab15950`): - the workspaces page filter input now actively filters workspace cards by workspace fields and note content instead of rendering as passive UI - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Dashboard entrypoints materially advanced (`9f2670c`): - recent note activity cards on the dashboard now link directly into the backend-backed note detail surface instead of rendering as read-only summary cards - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Dashboard saved views materially advanced (`99484a5`): - dashboard saved-view cards now navigate into real destinations instead of rendering as passive summary cards - the search surface now accepts seeded `q` query params so dashboard shortcuts can open directly into backend-backed filtered results - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Sidebar navigation cleanup materially advanced (`4376519`): - the web sidebar no longer points primary navigation at a single hardcoded note record - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Review queue selection materially advanced (`5ce9401`): - the web review surface now lets you choose which queued proposal is featured for review instead of forcing the first queue entry - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Dashboard workflow entrypoints materially advanced (`6222fda`): - dashboard operator workflow cards now route into the corresponding operational surfaces instead of rendering as passive status summaries - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Review workflow entrypoints materially advanced (`99bc7a9`): - review-page operator workflow cards now route into the corresponding operational surface instead of rendering as passive summary cards - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Saved search entrypoints materially advanced (`88c11c2`): - saved search cards on the search page now navigate into real seeded query states instead of rendering as passive summaries - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Workspace saved-view entrypoints materially advanced (`22df6d9`): - workspace saved-view cards now navigate into real filter presets instead of rendering as passive summaries - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Dashboard metrics materially advanced (`2a9f490`): - the top dashboard metric cards now route into their corresponding workspaces, search, and reviews surfaces instead of rendering as passive totals - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Note metadata entrypoints materially advanced (`6d72561`): - note-detail metadata now routes review state and tags into the relevant review and search surfaces instead of rendering only passive text/badges - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Workspace card filters materially advanced (`260428d`): - workspace cards now route visibility, owner, and tag affordances into the live workspace filter instead of rendering as passive text/badges - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Note review-state entrypoint materially advanced (`758d5d4`): - the note-detail header review-state badge now routes into the review surface instead of rendering as passive status text - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Search result filters materially advanced (`fa87efd`): - search result rows now route status, workspace, and tag affordances into seeded search states instead of rendering as passive text/badges - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Dashboard recent-note filters materially advanced (`8a1b79c`): - dashboard recent-note cards now route tag affordances into seeded search states while keeping title and excerpt as valid note-detail entrypoints - verification passed for this slice with: - `web` `npm run typecheck` - `web` `npm test` - 2026-03-10 — Mobile verification materially advanced: - mobile dependencies now install successfully with corrected sibling `@bytelyst/*` package paths - `npm run typecheck`, `npm run lint`, and `npm test` now pass in `learning_ai_notes/mobile/` - token-backed placeholder and border colors replaced the remaining raw hardcoded mobile color fallbacks - 2026-03-10 — Product identity locked as NoteLett (`e1fde25`): - productId: notelett, domain: notelett.app, backend port: 4016 - iOS bundle: com.bytelyst.notelett, Android bundle: com.notelett.app - rippled through all config, docs, source, and test files across backend/web/mobile - registered in learning_ai_common_plat/products/notelett/ - 2026-03-10 — 4 remaining MCP tools implemented (`12058ed`): - notes.notes.update, notes.relationships.link, notes.tasks.extract, notes.artifacts.attach - all 8 MCP tools now have full audit trail, dry-run, idempotency, and correlation support - 2026-03-10 — Platform integrations wired (`8755661`): - feature-flag-client and kill-switch-client added to web surface - telemetry, diagnostics, extraction were already wired - 2026-03-10 — Blob artifact upload/download (`196b210`): - SAS-based upload/download via platform-service blob endpoints - 2026-03-10 — QA / release hardening: - AGENTS.md and README.md created following ecosystem conventions - 2026-03-11 — Mobile direct shared-client integration (`878c644`): - Added @bytelyst/telemetry-client, feature-flag-client, kill-switch-client, blob-client to mobile deps - Created mobile/src/lib/platform.ts — centralized platform init (telemetry, flags, kill-switch, blob) - Refactored web blob-client.ts to use shared @bytelyst/blob-client (DRY) - 2026-03-11 — Backend batch review + saved-views module (`bdbf387`): - POST /note-agent-actions/batch-review for bulk approve/reject (up to 50 items) - PATCH now auto-sets reviewedBy/reviewedAt on approve/reject - New saved-views module: full CRUD (types, repository, routes), Cosmos container saved_views - 2026-03-11 — Web full review UX (`ca3cdba`): - Batch selection mode with Select All / Clear - Batch Approve N / Reject N buttons - Review note textarea shared by single + batch flows - 2026-03-11 — Web saved views, keyboard shortcuts, debounced search (`12d9009`): - saved-views-client.ts: full CRUD client for backend saved-views module - use-keyboard-shortcuts.ts: reusable hook + KeyboardShortcuts component wired into (app) layout - Cmd+K search, Cmd+N workspaces, Cmd+Shift+D dashboard, Cmd+Shift+R reviews, Esc blur - use-debounce.ts: shared hook replacing inline setTimeout in search (250ms) - Search page: saved views loaded from backend with save/delete UI - 2026-03-11 — Mobile review note input (`f8a4c18`): - Review note TextInput on inbox screen, wired to approve/reject handlers - reviewNote parameter flows through store → API client → backend # 9. Current Known Blockers / Deferrals - **Production-readiness local gate complete** — May 5 verification passes `pnpm run verify`, backend/web/mobile lint, web Playwright release flows, release-guard audits, product/API drift scans, and `git diff --check`; exact commands and commit hashes are recorded in `docs/PRODUCTION_READINESS_HANDOFF_ROADMAP.md` Phase P10. - **Environment deferral: Docker compose smoke** — `scripts/compose-smoke.sh` syntax checks, but this host has no Docker-compatible runtime (`docker: command not found`), so live compose build/start/health smoke remains delegated to a Docker-capable runner. - **Environment deferral: shared-service live smoke** — `pnpm run smoke:local` starts NoteLett in memory mode and passes `/health` plus `/api/bootstrap`, but live platform-service/extraction-service/mcp-server checks require those services and Cosmos credentials. Direct common-platform startup failed locally because `COSMOS_ENDPOINT` and `COSMOS_KEY` are not present in the shell env. - **Advisory warnings** — lint exits 0 while retaining backend/web/mobile warning output for follow-up cleanup; tests/builds also retain known non-failing warnings such as mobile `react-test-renderer` deprecation and Next `--localstorage-file`. - ~~**Blocker** — Product identity not finalized~~ **Resolved:** locked as NoteLett (`e1fde25`) - **Deferred** — `@bytelyst/react-native-platform-sdk` adoption is intentionally deferred for release handoff; mobile uses direct shared `@bytelyst/*` clients instead. See `docs/MOBILE_PLATFORM_SDK_DECISION.md`. - **Deferred** — `@bytelyst/sync` adoption is intentionally deferred for release handoff; mobile keeps the narrower `@bytelyst/offline-queue` retry model until backend sync/conflict contracts are explicit. See `docs/MOBILE_SYNC_DECISION.md`. - **Deferred** — `@bytelyst/llm-router` adoption is intentionally deferred for release handoff; backend keeps `@bytelyst/llm` for chat, embeddings, mock provider, Azure/OpenAI settings, and vision prompt compatibility. See `docs/BACKEND_LLM_ROUTER_DECISION.md`. - ~~**Deferred** — Blob-backed artifacts and upload/download flows~~ **Resolved:** SAS-based blob client (`196b210`) - ~~**Deferred** — Fully integrated approval/review/audit UX~~ **Resolved:** batch review, review notes, agent timeline across web + mobile (`ca3cdba`, `f8a4c18`) - ~~**Deferred** — Persisted saved views~~ **Resolved:** backend CRUD + web client + UI (`bdbf387`, `12d9009`) - ~~**Deferred** — Keyboard shortcut expansion~~ **Resolved:** reusable hook + 5 shortcuts wired (`12d9009`) - ~~**Deferred** — Performance hardening~~ **Resolved:** debounced search, memoized lists (`12d9009`)