29 KiB
29 KiB
NoteLett — Master Roadmap
Version: 2.0
Date: May 5, 2026
Status: Production-readiness alignment in progress
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-serviceextraction-servicemcp-server
3. Roadmap Document Index
docs/roadmaps/00_MASTER_EXECUTION_PLAN.mddocs/roadmaps/01_FOUNDATIONS_AND_DECISIONS.mddocs/roadmaps/02_BACKEND_ROADMAP.mddocs/roadmaps/03_WEB_ROADMAP.mddocs/roadmaps/04_MOBILE_ROADMAP.mddocs/roadmaps/05_MCP_AGENT_ROADMAP.mddocs/roadmaps/06_PLATFORM_INTEGRATIONS_ROADMAP.mddocs/roadmaps/07_QA_RELEASE_DOCS_ROADMAP.mddocs/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
- product name finalized: NoteLett
productIdfinalized:notelett- backend port assigned:
4016 - domain / bundle identifiers assigned:
notelett.app,com.bytelyst.notelett,com.notelett.app - token namespace requested through
--nl-*CSS variables andNoteLettTheme - mobile path confirmed as React Native + Expo MVP
- repo folder structure finalized across
backend/,web/,mobile/,shared/, anddocs/ - 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
- 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 - PRD and roadmap aligned for product identity and active production-readiness handoff; older historical docs still need P1.4 reconciliation
Owner Docs
docs/roadmaps/00_MASTER_EXECUTION_PLAN.mddocs/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
- web app boots with authenticated shell
- backend boots with health and first modules
- mobile app boots with auth and navigation shell
- notes CRUD works end-to-end across backend clients, web note detail/editor, mobile capture/detail/edit, and MCP write paths
- workspaces CRUD works end-to-end across backend clients, web workspace surfaces, and mobile workspace store/API
- 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.mddocs/roadmaps/03_WEB_ROADMAP.mddocs/roadmaps/04_MOBILE_ROADMAP.mddocs/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
- note CRUD complete for backend/web/mobile core surfaces
- workspace switching and product-scoped permissions are implemented for current MVP surfaces; production membership hardening remains in P3/P5
- note relationships work through backend routes, web link modal/panels, and MCP linking
- tasks can be extracted and linked through backend routes, MCP task extraction, and web/mobile review surfaces
- artifact upload/download works through shared blob client wrappers and backend artifact records
- mobile quick capture and retrieval are functional through backend-backed stores and API clients
- audit log exists for agent/MCP write paths and review flows
Owner Docs
docs/roadmaps/02_BACKEND_ROADMAP.mddocs/roadmaps/03_WEB_ROADMAP.mddocs/roadmaps/04_MOBILE_ROADMAP.mddocs/roadmaps/06_PLATFORM_INTEGRATIONS_ROADMAP.mddocs/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
- core MCP tools work end-to-end for list, get, search, create draft, update, link notes, extract tasks, and attach artifact
- agent write paths support approval/audit where required, including dry-run, idempotency key, and correlation ID behavior
- audit and review UX is functional across web and mobile, including batch review and agent timeline
- extraction-backed workflows exist for task extraction, summarize/copilot, URL intake, prompts, and related Smart Actions; dependency outage UX remains in P6/P7
- 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.mddocs/roadmaps/02_BACKEND_ROADMAP.mddocs/roadmaps/03_WEB_ROADMAP.mddocs/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
- search is backend-backed with saved views, seeded query params, and debounced web search
- linked-note navigation is meaningful through relationship panels, link modal, and note detail hydration
- retrieval is scoped by workspace/product for current APIs; Palace and RAG production verification remains blocked by current common-platform API drift
- search telemetry is wired at the client/platform layer; production event taxonomy and smoke checks remain in P2/P9
- 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.mddocs/roadmaps/03_WEB_ROADMAP.mddocs/roadmaps/04_MOBILE_ROADMAP.mddocs/roadmaps/05_MCP_AGENT_ROADMAP.mddocs/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
- 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 - deferred list documented in this roadmap and production-readiness baseline inventory
- 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
- finalize product identity and mobile path
- scaffold
web/,mobile/, andbackend/ - implement backend
notesandworkspaces - build web authenticated shell and note list/detail pages
- build mobile shell and quick capture
- define MCP tool schemas for list/get/search/create-draft
- wire telemetry, diagnostics, and extraction clients
7. Definition of Done
- web app supports real end-to-end note workflows
- 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
- 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 /healthand readiness-capable service bootstrap were added via@bytelyst/fastify-corenotes,workspaces,note-relationships,note-tasks,note-artifacts, andnote-agent-actionsmodules now exist with schemas, repositories, routes, and starter tests- explicit
/notes/searchsupport 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 installedwebnpm run typecheckpasseswebnpm run buildpasses after fixing the authBaseUsershape and guarding demo session init from server-sidelocalStoragebackend/dependencies are now installedbackendnpm run typecheckpasses after normalizing Fastify type boundaries forfile:workspace depsbackendnpm testpasses 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
- product-side MCP core tool contracts now exist under
- 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-actionsaudit/proposal document - product-side MCP note tools now export through a registration adapter compatible with the shared
mcp-servertool 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-relationshipsendpoint with graceful fallback when relationship data is unavailable - verification passed for this slice with:
webnpm run typecheckwebnpm testmobilenpm run typecheck
- 2026-03-10 — Mobile approval/activity integration materially advanced (
8f14698):- mobile inbox approvals now hydrate from backend
note-agent-actionsinstead 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:
mobilenpm run typecheck
- mobile inbox approvals now hydrate from backend
- 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:
mobilenpm 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:
mobilenpm 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:
mobilenpm 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:
mobilenpm 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:
webnpm run typecheckmobilenpm 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-actionsreview 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:
webnpm run typecheckwebnpm test
- the web review surface now approves and rejects proposals through the backend
- 2026-03-10 — Web note editing materially advanced (
cdc03e3):- the web note detail surface now saves title/body edits through the backend
PATCH /notes/:idroute - 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:
webnpm run typecheckwebnpm test
- the web note detail surface now saves title/body edits through the backend
- 2026-03-10 — Web artifact creation materially advanced (
ef82747):- the web note detail surface now creates artifact records through the backend
note-artifactsroute - 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:
webnpm run typecheckwebnpm test
- the web note detail surface now creates artifact records through the backend
- 2026-03-10 — Web task creation materially advanced (
c99390e):- the web note detail surface now creates manual note tasks through the backend
note-tasksroute - 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:
webnpm run typecheckwebnpm test
- the web note detail surface now creates manual note tasks through the backend
- 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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
qquery params so dashboard shortcuts can open directly into backend-backed filtered results - verification passed for this slice with:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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:
webnpm run typecheckwebnpm 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, andnpm testnow pass inlearning_ai_notes/mobile/- token-backed placeholder and border colors replaced the remaining raw hardcoded mobile color fallbacks
- mobile dependencies now install successfully with corrected sibling
- 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
- Active production-readiness blocker — May 5 baseline verification fails backend typecheck/build/tests because NoteLett Palace/embedding/prompt code is out of sync with the local
learning_ai_common_plat@bytelyst/palaceand@bytelyst/llmAPIs. Tracked bydocs/PRODUCTION_READINESS_HANDOFF_ROADMAP.mdP0.5, P2.7, and P5.4. - Active lint blocker — backend lint is missing
@eslint/js, web lint has React compiler rule violations, and mobile lint has one unresolved shared billing-client import. Tracked by production-readiness P0.5, P4.3, P7.4, P8.1, and P8.5. - Active runtime smoke gap — platform-service, extraction-service, mcp-server, blob, telemetry, diagnostics, flags, kill switch, and NoteLett backend health need documented and automated smoke checks. Tracked by production-readiness P2.2-P2.4 and P8.4.
Blocker — Product identity not finalizedResolved: locked as NoteLett (e1fde25)- Deferred —
@bytelyst/react-native-platform-sdkadoption is intentionally deferred for release handoff; mobile uses direct shared@bytelyst/*clients instead. Seedocs/MOBILE_PLATFORM_SDK_DECISION.md. Deferred — Blob-backed artifacts and upload/download flowsResolved: SAS-based blob client (196b210)Deferred — Fully integrated approval/review/audit UXResolved: batch review, review notes, agent timeline across web + mobile (ca3cdba,f8a4c18)Deferred — Persisted saved viewsResolved: backend CRUD + web client + UI (bdbf387,12d9009)Deferred — Keyboard shortcut expansionResolved: reusable hook + 5 shortcuts wired (12d9009)Deferred — Performance hardeningResolved: debounced search, memoized lists (12d9009)