learning_ai_notes/docs/NEXT_SPRINT_ROADMAP.md
saravanakumardb1 82ce90f91d docs(roadmap): mark sprints 3-6 complete; record post-Sprint-B UI migration
Sprint 3 (UI5), Sprint 4 (UI6), Sprint 5 (UI7+UI8), Sprint 6 (production
hardening) are all now substantially complete as of May 23, 2026.

NEXT_SPRINT_ROADMAP.md:
- Sprint 3 UI5 marked complete with commit hashes 9c65899, 30a30ce, 2408f43.
- Sprint 4 UI6 marked complete with commit 8d484c3.
- Sprint 5 UI7+UI8 marked complete with commits 2408f43, 3288e28, 0c982de.
- Sprint 6 production hardening verified item-by-item:
    backend config fail-closed: already enforced via lib/config.ts superRefine.
    backend logging clean: grep returns zero matches outside tests.
    CI mobile + web E2E + Docker build: jobs already wired.
    Docker compose smoke: scripts/e2e-docker-test.sh validated locally.
    Shared service smoke: backend+web verified at :3050/:4016 with sibling
    platform-service (4003), extraction-service (4005), mcp-server (4007).
    Only stale doc cleanup remains as deferred non-blocking work.

PRODUCTION_READINESS_HANDOFF_ROADMAP.md:
- Replaced Sprint-A 'Docker compose smoke deferred' note with verified
  status: Dockerfile corporate-proxy workarounds added, override pins
  sibling-service URLs and aligns JWT secret, e2e-docker-test.sh
  exercises full login/CORS/CRUD lifecycle.
- Added 'Post-Sprint-B UI Migration' section documenting the four UI
  ratchet category counts (legacy/colors/imports all 0; raw controls 14
  intentional) and the UI drift ratchet as the canonical CI gate.

No code changes.
2026-05-23 02:04:09 -07:00

8.7 KiB
Raw Permalink Blame History

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 Complete (May 23, 2026)

  • Auth forms migrated to Input/Button/Card/AlertBanner (commits 9c65899, 30a30ce)
  • Settings page (profile, appearance, password, MCP, API tokens, danger zone, offline queue, feedback) migrated (commit 30a30ce)
  • CreateNoteModal, LinkNoteModal, ShareDialog, CreateWorkspaceModal, PromptTemplateEditor migrated (commits 30a30ce, 2408f43)
  • Web typecheck, 96/96 vitest, Playwright release-flows all green

Sprint 4 — UI6: Search, Workspaces, Dashboard Complete (May 23, 2026)

  • Dashboard page migrated to Card + Badge (commit 8d484c3)
  • Workspaces list page migrated (commit 8d484c3)
  • Search page migrated (commit 8d484c3)
  • Chat page migrated to Select + Textarea (commit 8d484c3)
  • Web vitest + visual specs green

Sprint 5 — UI7 + UI8: Notes, Smart Actions, Legacy Cleanup Complete (May 23, 2026)

  • Note detail page migrated, Smart Actions panel migrated, NoteEditor shell migrated (commits 2408f43, 3288e28)
  • Palace page + PalacePanel, MemoryTimeline, KnowledgeGraphView migrated (commit 3288e28)
  • Gaps page, prompts page, landing page, public share page, BroadcastBanner migrated (commit 3288e28)
  • .surface-card, .surface-muted, .badge, .input-shell removed from web/src/app/globals.css (commit 0c982de)
  • UI drift ratchet now enforces 0 for legacy classes / hardcoded colors / direct @bytelyst/ui imports outside adapter in CI
  • Audit regex refined so Tailwind arbitrary-value references (bg-[color:var(--nl-surface-muted)]) are not flagged
  • Final cumulative impact across UI5UI8: raw controls 38 → 14 (24); legacy classes 92 → 0 (100%)

Sprint 6 — Production Hardening Substantially Complete (May 23, 2026 audit)

  • Backend config fail-closed in productionbackend/src/lib/config.ts superRefine() rejects production environments that use the dev JWT secret, JWT secret shorter than 32 chars, DB_PROVIDER=memory, missing Cosmos credentials, disabled field encryption, or memory key provider for field encryption. (already shipped before this sprint)
  • Backend logging clean — audit grep -rnE "process\.(stdout|stderr)|console\.(log|error|warn|info)" backend/src --include="*.ts" returns zero matches outside tests. All logging via req.log / app.log. (already shipped)
  • CI: mobile + web E2E + Docker build.github/workflows/ci.yml already has dedicated jobs: mobile (lint+typecheck+test), web-e2e (Playwright), docker-build (backend + web images), backend-cosmos (emulator smoke), plus release-guards (ratchet + secrets).
  • Docker compose smokescripts/e2e-docker-test.sh + scripts/e2e-docker-seed.sh exercise login / CORS / workspace+note CRUD lifecycle against the deployed compose stack. Runs locally on Docker-capable hosts via pnpm run e2e:docker:test.
  • Shared service smoke — deployed compose stack via docker-compose.override.yml now points the backend at the sibling platform-service (4003), extraction-service (4005), and mcp-server (4007). Verified at http://localhost:3050 (web) and http://localhost:4016 (backend) returning 200.
  • Stale doc cleanup — reconcile AGENTS.md, README, and older gap docs against current reality (deferred; non-blocking).

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

# 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