learning_ai_notes/docs/NEXT_SPRINT_ROADMAP.md
saravanakumardb1 c75ed3dc25 docs(sprint-a): record build restoration and refreshed sprint plan
- Commit previously untracked docs/NEXT_SPRINT_ROADMAP.md with refreshed
  May 22 status; mark Sprint 1 (backend build) and Sprint 2 (lint) as
  resolved by Sprint A workspace-path fix
- Add post-Sprint-A re-verification section to
  docs/PRODUCTION_READINESS_HANDOFF_ROADMAP.md documenting the
  workspace-path regression and the re-verified gates
- Update README quick-start to reference the canonical common-platform
  checkout path with BYTELYST_COMMON_PLAT_ROOT override note
2026-05-22 15:08:42 -07:00

210 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NoteLett — Next Sprint Roadmap
> **Date:** May 22, 2026 (refreshed)
> **Last verified commit:** Sprint A workspace-path fix (pending) — `pnpm run verify` passes end-to-end (backend 373/373, web 96/96, mobile 97/97).
> **Context:** Core product (Phases 04) is complete. UI/UX migration (UI0UI4) is done. Sprint A restored the green build after the May 12 Docker/UI regression. Remaining work is UI5UI8 migration plus production-hardening.
---
## Current State
### Product Phases
| Phase | Status | Summary |
|-------|--------|---------|
| **Phase 0** | ✅ Complete | Foundations, identity, repo structure |
| **Phase 1** | ✅ Complete | Core skeleton — web, backend, mobile auth + CRUD |
| **Phase 2** | ✅ Complete | Notes MVP — relationships, tasks, artifacts, agent actions |
| **Phase 3** | ✅ Complete | Agentic layer — 8 MCP tools, approval/audit, extraction |
| **Phase 4** | ✅ Complete | Search + knowledge — saved views, Palace, RAG scoping |
| **Phase 5** | ✅ Re-verified | Production readiness — `pnpm run verify` green after Sprint A workspace-path repair |
### UI/UX Migration
| Phase | Status | Summary |
|-------|--------|---------|
| **UI0** | ✅ Complete | Baseline audit + rules |
| **UI1** | ✅ Complete | Common-platform core UI hardened |
| **UI2** | ✅ Complete | NoteLett UI adapter expanded |
| **UI3** | ✅ Complete | Review UX migrated to platform primitives |
| **UI4** | ✅ Complete | App shell + navigation migrated |
| **UI5** | ❌ Not started | Forms, modals, settings |
| **UI6** | ❌ Not started | Search, workspaces, dashboard |
| **UI7** | ❌ Not started | Notes, Smart Actions, Palace |
| **UI8** | ❌ Not started | Remove legacy globals |
### Production Readiness (refreshed May 22, 2026 after Sprint A)
| Check | Status |
|-------|--------|
| Backend typecheck | ✅ Pass |
| Backend build | ✅ Pass |
| Backend tests | ✅ 373/373 pass (54 files) |
| Backend lint | ✅ 0 errors, 14 warnings |
| Web typecheck | ✅ Pass |
| Web build | ✅ Pass |
| Web tests | ✅ 96/96 pass (22 files) |
| Web lint | ✅ 0 errors, 23 warnings (React-compiler advisories) |
| Mobile typecheck | ✅ Pass |
| Mobile tests | ✅ 97/97 pass (25 files) |
| Mobile lint | ✅ 0 errors, 30 warnings |
| Release-guard audit | ✅ Secret scan + color/token audit pass |
| Docker compose smoke | ⏸ Deferred — no Docker runtime on this host |
| Shared-service live smoke | ⏸ Deferred — needs running platform-service/extraction-service/mcp-server + Cosmos creds |
### Sprint A (May 22, 2026) — Build Restoration
Sprint A resolved the May 12 regression. Root cause: `pnpm-workspace.yaml` referenced a sibling path (`../learning_ai/learning_ai_common_plat/...`) that did not exist on dev/CI hosts. `.pnpmfile.cjs` fell back to `../learning_ai_common_plat` for some packages but missed others, so `@bytelyst/ui` came from a stale Gitea 0.1.0 tarball with no exports (breaking web typecheck + 26 tests) and `@bytelyst/monitoring` failed to install entirely (breaking backend typecheck + 2 test suites).
Fix:
- `pnpm-workspace.yaml` now references `../learning_ai_common_plat/packages/*` directly.
- `.pnpmfile.cjs` swaps `DEFAULT_COMMON_PLAT_ROOT` and `LEGACY_COMMON_PLAT_ROOT` so the canonical path is the default and the older nested path is the fallback.
- Clean reinstall regenerated `pnpm-lock.yaml` with `@bytelyst/ui@0.1.9` and `@bytelyst/monitoring@0.1.5` linked to the local checkout.
Verification: `pnpm run verify` end-to-end, plus backend/web/mobile lint and `pnpm run audit:release-guards`.
---
## Sprint 1 — Fix Backend Build ✅ Resolved by Sprint A
Original failure was misattributed to Palace/LLM API drift. Actual cause was workspace-path drift causing `@bytelyst/monitoring` to be missing from `backend/node_modules`. Once the workspace path was corrected, backend typecheck, build, lint, and all 373 tests pass without code changes to the Palace/LLM modules.
---
## Sprint 2 — Fix Web + Mobile Lint ✅ Resolved by Sprint A
Web lint now exits 0 (23 advisory warnings retained). Mobile lint exits 0 (30 advisory warnings retained). `@bytelyst/billing-client` resolves correctly once the workspace path is canonical. Driving remaining advisory warnings to zero is tracked under Sprint 6 / Q1 tech-debt.
---
## Sprint 3 — UI5: Forms, Modals, Settings (~2 days)
> **Why next:** Highest-value remaining UI migration. Auth/settings flows are user-facing and currently use raw HTML elements.
### 3.1 — Auth Forms
- [ ] Migrate login/register/forgot-password to common `Input`, `Label`, `Button`, `Card`
- [ ] Ensure accessibility labels on all form elements
### 3.2 — Settings Forms
- [ ] Migrate settings forms to `Field`, `Input`, `Textarea`, `Select`, `Switch`, `ConfirmDialog`
- [ ] Use common-platform form primitives from `@bytelyst/ui`
### 3.3 — Create/Link/Share Modals
- [ ] Migrate `CreateNoteModal`, `LinkNoteModal`, `ShareDialog` to common `Modal` + form primitives
- [ ] Action bars and button groups via platform components
### Exit Criteria
- [ ] All auth/settings/modal screens use platform UI primitives
- [ ] No raw `<button>`, `<input>`, `<textarea>`, `<select>` in migrated screens
- [ ] Playwright release-flow specs pass
- [ ] Web typecheck + tests pass
---
## Sprint 4 — UI6: Search, Workspaces, Dashboard (~2 days)
### 4.1 — Search Page
- [ ] Replace saved-search/result cards with `Panel`, `DataList`, `Badge`, `EmptyState`
- [ ] Replace filter chips with `StatusBadge` or `FilterChip`
### 4.2 — Workspaces Page
- [ ] Workspace cards → `Panel` + `Badge` + `StatCard`
- [ ] Filter bar → common filter components
### 4.3 — Dashboard
- [ ] Metric cards → `StatCard`, recent notes → `DataList`
- [ ] Two-column layout → reusable adapter primitive
### Exit Criteria
- [ ] Dashboard, search, workspaces all use platform primitives
- [ ] Responsive visual checks pass (desktop + mobile widths)
- [ ] All tests pass
---
## Sprint 5 — UI7 + UI8: Notes, Smart Actions, Legacy Cleanup (~2.5 days)
### 5.1 — Note Detail Shell
- [ ] Keep rich editor local, replace shell/toolbar/popover with common primitives
- [ ] Migrate Smart Actions cards/buttons/result panels
### 5.2 — Palace Panels
- [ ] Migrate Palace panels to common panel/list/form primitives
- [ ] Keep domain rendering local
### 5.3 — Remove Legacy Globals (UI8)
- [ ] Remove `.surface-card`, `.surface-muted`, `.badge`, `.input-shell` globals
- [ ] Add CI guard: `pnpm run audit:ui:strict`
- [ ] Verify full E2E + visual smoke
### Exit Criteria
- [ ] `pnpm run audit:ui:strict` passes (no raw controls, no legacy globals, no hardcoded colors)
- [ ] Full web test/typecheck/lint/E2E pass
---
## Sprint 6 (Future) — Production Hardening
> **After UI migration is complete.**
- [ ] Backend config: fail-closed in production (no dev defaults)
- [ ] Backend logging: replace any remaining `process.stdout/stderr` with `app.log`
- [ ] CI: add mobile tests, web E2E, Docker build check
- [ ] Shared service smoke: platform-service, extraction-service, mcp-server
- [ ] Docker compose smoke on Docker-capable host
- [ ] Stale doc cleanup (reconcile AGENTS.md, README, older gap docs)
---
## Total Estimated Effort
| Sprint | Effort | Focus |
|--------|--------|-------|
| Sprint 1 | ~2 days | Fix backend build (Palace/LLM drift) |
| Sprint 2 | ~1 day | Fix all lint (backend/web/mobile) |
| Sprint 3 | ~2 days | UI5 — forms, modals, settings |
| Sprint 4 | ~2 days | UI6 — search, workspaces, dashboard |
| Sprint 5 | ~2.5 days | UI7 + UI8 — notes, Smart Actions, legacy cleanup |
| Sprint 6 | ~2 days | Production hardening (future) |
| **Total** | **~11.5 days** | |
---
## Verification Commands
```bash
# Full verification
pnpm run verify
# Per-workspace
pnpm --filter @notelett/backend run typecheck
pnpm --filter @notelett/backend run build
pnpm --filter @notelett/backend run test
pnpm --filter @notelett/backend run lint
pnpm --filter @notelett/web run typecheck
pnpm --filter @notelett/web run build
pnpm --filter @notelett/web run test
pnpm --filter @notelett/web run lint
pnpm --filter @notelett/mobile run typecheck
pnpm --filter @notelett/mobile run lint
# UI audit
pnpm run audit:ui
pnpm run audit:ui:strict # after UI8
# E2E
pnpm --filter @notelett/web exec playwright test e2e/release-flows.spec.ts --reporter=list --workers=1
```