learning_ai_notes/docs/IMPLEMENTATION_TRACKER.md
saravanakumardb1 1d068e748c docs: add detailed implementation tracker with 8 phases and 35 checkbox tasks
Derived from GAP_ANALYSIS.md (25 gaps across 5 categories).
Structured as 8 sequential phases with:
- Per-task checkboxes with gap IDs for traceability
- Specific file paths and code patterns for each fix
- Verification commands per phase
- Commit message conventions
- Test target summary (30→132 tests across all surfaces)
- Progress log table for tracking commits
- Deferred items (B4 webhooks, B5 sharing, E2 WINDSURF_CONTEXT)

Phases: 1-Bug Fixes, 2-Code Quality, 3-Backend Tests,
4-Web Features, 5-DevOps, 6-E2E+Mobile Tests,
7-AI Enrichment, 8-Docs Alignment
2026-03-19 07:09:47 -07:00

18 KiB
Raw Blame History

NoteLett — Implementation Tracker

Created: March 19, 2026 Source: docs/GAP_ANALYSIS.md (25 gaps across 5 categories) Companion docs: docs/PRD.md, docs/ROADMAP.md, AGENTS.md


How to Use This Document

  • Each phase has a top-level checkbox that tracks overall phase completion.
  • Each task within a phase has its own checkbox.
  • When a task is completed, check it off and add the commit SHA in parentheses.
  • Run the verification commands listed in each phase before marking it done.
  • Phases are sequenced by dependency — complete Phase 1 before Phase 2, etc.
  • Phases 13 are the critical path. Phases 47 can be parallelized after Phase 3.

Baseline (before this tracker)

Surface Typecheck Tests Build
Backend pass 24 tests (12 files) tsc
Web pass 6 tests (5 files) next build
Mobile pass 0 tests n/a

Phase 1 — Bug Fixes (Gaps A1A6, D3D4)

Goal: Eliminate all runtime bugs and latent crash risks. Clean dead code. Estimated effort: 23 hours Dependencies: None — start here.

Tasks

  • 1.1 Lazy-init extractionApi in web/src/lib/extraction-client.ts (Gap A1)

    • Replace const extractionApi = createApiClient(...) with lazy singleton function getExtractionApi()
    • Pattern: same as NomGap protocol-client.ts / social-client.ts
    • File: web/src/lib/extraction-client.ts
  • 1.2 Lazy-init blobClient in web/src/lib/blob-client.ts (Gap A1)

    • Replace const blobClient = createBlobClient(...) with lazy singleton function getBlobClient()
    • Update all call sites within the file (blobClient.getSasUrl(...)getBlobClient().getSasUrl(...))
    • File: web/src/lib/blob-client.ts
  • 1.3 Add "use client" directive to web/src/lib/notes-client.ts (Gap A6)

    • This file imports extraction-client.ts (module-scope API client). Without "use client", any future server-component import would crash.
    • Add "use client"; as the first line of the file.
    • File: web/src/lib/notes-client.ts
  • 1.4 Add output: "standalone" to web/next.config.ts (Gap A2)

    • Required for Docker builds. outputFileTracingRoot is already set.
    • File: web/next.config.ts
  • 1.5 Delete dead code: web/src/lib/mock-data.ts (Gap D3)

    • Confirmed zero imports. 228 lines of unused scaffold-era mock data.
    • Delete: web/src/lib/mock-data.ts
  • 1.6 Delete dead code: web/src/lib/review-data.ts (Gap D4)

    • Confirmed zero imports. Superseded by review-client.ts.
    • Delete: web/src/lib/review-data.ts

Verification

cd web && npm run typecheck && npm test && npm run build

Commit convention

fix(web): lazy-init extraction + blob clients, add use-client to notes-client

- extraction-client.ts: lazy singleton (SSR crash fix) [A1]
- blob-client.ts: lazy singleton [A1]
- notes-client.ts: add "use client" directive [A6]
- next.config.ts: add output: "standalone" [A2]
- Delete mock-data.ts and review-data.ts (dead code) [D3, D4]

Phase 2 — Code Quality (Gaps D1D2, A3A4)

Goal: Consolidate duplicate types, optimize N+1 queries. Estimated effort: 23 hours Dependencies: Phase 1 (lazy-init changes affect the same files).

Tasks

  • 2.1 Consolidate backend response types into web/src/lib/types.ts (Gap D1)

    • Extract NoteDoc, NoteAgentActionDoc, NoteTaskDoc, NoteArtifactDoc, NoteRelationshipDoc, WorkspaceDoc from notes-client.ts and review-client.ts into types.ts
    • Update imports in notes-client.ts, review-client.ts, extraction-client.ts
    • Files: web/src/lib/types.ts, web/src/lib/notes-client.ts, web/src/lib/review-client.ts
  • 2.2 Optimize getNoteDetail() to call GET /notes/:id directly (Gap A3)

    • Current: fetches ALL notes then .find() by ID
    • Fix: Call GET /notes/:id?workspaceId=... directly
    • Requires: either pass workspaceId as parameter, or add a backend route that resolves by noteId alone
    • Option A: Add workspaceId parameter to getNoteDetail(noteId, workspaceId)
    • Option B: Add backend GET /notes/:id route without requiring workspaceId (look up by userId + noteId)
    • File: web/src/lib/notes-client.ts, possibly backend/src/modules/notes/routes.ts
  • 2.3 Optimize listWorkspaceSummaries() to avoid fetching all notes (Gap A4)

    • Option A: Add GET /workspaces/summaries backend endpoint that includes noteCount per workspace
    • Option B: Add noteCount field to workspace list response via a Cosmos cross-query
    • File: web/src/lib/notes-client.ts, backend/src/modules/workspaces/
  • 2.4 Add backend endpoint for cross-workspace pending agent actions (Gap D2)

    • GET /note-agent-actions/pending — returns all pending actions for the current user across workspaces
    • Eliminates the N+1 pattern in review-client.tslistApprovalQueue()
    • Files: backend/src/modules/note-agent-actions/routes.ts, web/src/lib/review-client.ts

Verification

cd backend && npm run typecheck && npm test
cd web && npm run typecheck && npm test && npm run build

Commit convention

refactor(web): consolidate types, optimize N+1 queries [D1, A3, A4, D2]

Phase 3 — Backend Test Depth (Gap A5)

Goal: Replace registration-only route tests with real API behavior tests. Estimated effort: 34 hours Dependencies: Phase 2 (new backend endpoints should be tested too).

Tasks

  • 3.1 Add integration tests for notes routes

    • Test: POST create → GET list → GET by ID → PATCH update → POST archive
    • Test: search query, validation errors, auth enforcement, 404 on missing
    • Target: 812 tests
    • File: backend/src/modules/notes/routes.test.ts
  • 3.2 Add integration tests for workspaces routes

    • Test: POST create → GET list → GET by ID → PATCH update
    • Test: validation, auth, 404
    • Target: 68 tests
    • File: backend/src/modules/workspaces/routes.test.ts
  • 3.3 Add integration tests for note-tasks routes

    • Test: POST create → GET list (by noteId + workspaceId) → PATCH update
    • Target: 46 tests
    • File: backend/src/modules/note-tasks/routes.test.ts
  • 3.4 Add integration tests for note-artifacts routes

    • Test: POST create → GET list (by noteId + workspaceId)
    • Target: 35 tests
    • File: backend/src/modules/note-artifacts/routes.test.ts
  • 3.5 Add integration tests for note-relationships routes

    • Test: POST create → GET list → DELETE
    • Target: 35 tests
    • File: backend/src/modules/note-relationships/routes.test.ts
  • 3.6 Add integration tests for note-agent-actions routes

    • Test: POST create → GET list → PATCH review (approve/reject) → POST batch-review
    • Test: reviewedBy/reviewedAt auto-set on approve/reject
    • Target: 68 tests
    • File: backend/src/modules/note-agent-actions/routes.test.ts
  • 3.7 Add integration tests for saved-views routes

    • Test: POST create → GET list → GET by ID → PATCH update → DELETE
    • Target: 57 tests
    • File: backend/src/modules/saved-views/routes.test.ts

Verification

cd backend && npm run typecheck && npm test
# Target: 60+ tests (up from 24)

Commit convention

test(backend): add integration tests for all 7 route modules [A5]

Phase 4 — Web Feature Gaps (Gaps B1, B2, B8)

Goal: Add missing web CRUD flows that the PRD requires. Estimated effort: 34 hours Dependencies: Phase 2 (type consolidation), Phase 3 (backend endpoints tested).

Tasks

  • 4.1 Add "Create Note" flow to web UI (Gap B2)

    • Add CreateNoteModal component (title, body, workspace selector, tags)
    • Wire to POST /notes via notes-client.ts
    • Add "New Note" button on dashboard and workspace pages
    • Files: web/src/components/CreateNoteModal.tsx, web/src/lib/notes-client.ts, dashboard + workspace pages
  • 4.2 Add note restore backend endpoint (Gap B1)

    • Add POST /notes/:id/restore route (sets status: 'active')
    • Mirror the existing POST /notes/:id/archive pattern
    • File: backend/src/modules/notes/routes.ts
  • 4.3 Add archive/restore UI on note detail page (Gap B1)

    • Show "Archive" button for active/draft notes, "Restore" button for archived notes
    • Wire to POST /notes/:id/archive and POST /notes/:id/restore
    • File: web/src/app/(app)/notes/[noteId]/page.tsx
  • 4.4 Add "Link Note" relationship creation UI (Gap B8)

    • Add "Link Note" button on note detail page
    • Show note search/picker modal to select target note
    • Wire to POST /note-relationships via notes-client.ts
    • Files: web/src/components/LinkNoteModal.tsx, note detail page
  • 4.5 Add web unit tests for new components

    • Test: CreateNoteModal renders, validates, calls API
    • Test: LinkNoteModal renders, searches, creates relationship
    • Target: 46 tests
    • Files: web/src/components/CreateNoteModal.test.tsx, web/src/components/LinkNoteModal.test.tsx

Verification

cd backend && npm run typecheck && npm test
cd web && npm run typecheck && npm test && npm run build

Commit convention

feat(web): add create note, archive/restore, link note flows [B1, B2, B8]

Phase 5 — DevOps (Gaps C1C5)

Goal: Docker builds, CI, and deployment readiness. Estimated effort: 23 hours Dependencies: Phase 1 (output: "standalone" must be set first).

Tasks

  • 5.1 Add backend/Dockerfile (Gap C1)

    • Multi-stage build: install → build → runtime
    • Follow the NomGap/ActionTrail pattern
    • Exclude test files via tsconfig (already done in backend)
    • File: backend/Dockerfile
  • 5.2 Add web/Dockerfile (Gap C1)

    • Multi-stage build with output: "standalone"
    • Add dummy build-time env vars for Next.js page data collection
    • Follow the NomGap/ActionTrail pattern
    • File: web/Dockerfile
  • 5.3 Add scripts/docker-prep.sh (Gap C5)

    • Pack @bytelyst/* packages into tarballs
    • Rewrite package.json file: refs to tarball paths
    • Add --restore flag to undo
    • File: scripts/docker-prep.sh
  • 5.4 Add docker-compose.yml (Gap C2)

    • Services: backend (port 4016), web (port 3000)
    • Environment variable pass-through for Cosmos, JWT, etc.
    • File: docker-compose.yml
  • 5.5 Add GitHub Actions CI workflow (Gap C3)

    • Jobs: backend (typecheck + test + build), web (typecheck + test + build), mobile (typecheck)
    • Triggered on push to main and PRs
    • File: .github/workflows/ci.yml

Verification

# Docker build smoke test
cd scripts && ./docker-prep.sh
docker build -f backend/Dockerfile .
docker build -f web/Dockerfile .
cd scripts && ./docker-prep.sh --restore

Commit convention

feat(devops): Dockerfiles, docker-compose, CI, docker-prep [C1C5]

Phase 6 — E2E & Mobile Tests (Gaps B7, C4)

Goal: Playwright E2E for web, Vitest for mobile. Estimated effort: 34 hours Dependencies: Phase 4 (web features must exist to E2E test).

Tasks

  • 6.1 Add Playwright config and setup (Gap C4)

    • Add playwright.config.ts with base URL, web server auto-start
    • Add web/e2e/ directory
    • Add @playwright/test dev dependency
    • Files: web/playwright.config.ts, web/package.json
  • 6.2 Add Playwright navigation E2E tests

    • Test: landing page → dashboard → workspaces → search → reviews → settings
    • Test: sidebar navigation, keyboard shortcuts
    • Target: 68 tests
    • File: web/e2e/navigation.spec.ts
  • 6.3 Add Playwright CRUD flow E2E tests

    • Test: create note (requires Phase 4.1) → edit → archive → restore
    • Test: search notes, link notes, create artifact, create task
    • Test: approval queue review (approve/reject)
    • Target: 1015 tests
    • Files: web/e2e/notes.spec.ts, web/e2e/reviews.spec.ts
  • 6.4 Add mobile Zustand store tests (Gap B7)

    • Test: notes-store.ts — CRUD state transitions
    • Test: workspace-store.ts — workspace selection, switching
    • Test: inbox-store.ts — approval state, approve/reject actions
    • Test: auth-store.ts — login/logout state
    • Target: 812 tests
    • Files: mobile/src/store/notes-store.test.ts, mobile/src/store/workspace-store.test.ts, mobile/src/store/inbox-store.test.ts, mobile/src/store/auth-store.test.ts
  • 6.5 Add mobile API client tests (Gap B7)

    • Test: notes.ts — API request construction, response parsing
    • Test: workspaces.ts — list, create
    • Test: note-agent-actions.ts — approve, reject
    • Target: 68 tests
    • Files: mobile/src/api/notes.test.ts, mobile/src/api/workspaces.test.ts, mobile/src/api/note-agent-actions.test.ts

Verification

# Web E2E (requires backend running)
cd backend && npm run dev &
cd web && npx playwright test

# Mobile unit tests
cd mobile && npm test
# Target: 15+ tests (up from 0)

Commit convention

test(web): Playwright E2E — navigation + CRUD flows [C4]
test(mobile): add store and API client unit tests [B7]

Phase 7 — AI Enrichment & Advanced Features (Gaps B3, B6)

Goal: Add extraction-backed enrichment and import/export. Estimated effort: 45 hours Dependencies: Phase 3 (backend test patterns), Phase 4 (web CRUD flows).

Tasks

  • 7.1 Add note summarization via extraction-service (Gap B6)

    • Add POST /notes/:id/summarize backend route
    • Call extraction-service with summarization task type
    • Store summary as a note artifact (type: summary)
    • Add "Summarize" button on web note detail page
    • Files: backend/src/modules/notes/routes.ts, web/src/lib/extraction-client.ts, note detail page
  • 7.2 Add note export (JSON/Markdown) (Gap B3)

    • Add GET /notes/export backend endpoint (query params: format, workspaceId)
    • Support format=json and format=markdown
    • Add "Export" button on web workspace page
    • Files: backend/src/modules/notes/routes.ts, web/src/app/(app)/workspaces/page.tsx
  • 7.3 Add workspace-level note count to backend (Gap A4)

    • Add noteCount field to workspace list response
    • Use Cosmos cross-query or batch aggregate
    • Remove the client-side all-notes fetch from listWorkspaceSummaries()
    • Files: backend/src/modules/workspaces/repository.ts, web/src/lib/notes-client.ts
  • 7.4 Add tests for new endpoints

    • Test: summarize route (mock extraction-service)
    • Test: export route (JSON + Markdown formats)
    • Test: workspace list with note counts
    • Target: 610 tests
    • Files: backend/src/modules/notes/routes.test.ts, backend/src/modules/workspaces/routes.test.ts

Verification

cd backend && npm run typecheck && npm test
cd web && npm run typecheck && npm test && npm run build

Commit convention

feat(backend): note summarization, export, workspace note counts [B3, B6, A4]
feat(web): summarize + export UI triggers [B3, B6]

Phase 8 — Documentation Alignment (Gaps E1E2)

Goal: Update all docs to reflect the final implementation state. Estimated effort: 1 hour Dependencies: All previous phases.

Tasks

  • 8.1 Update docs/ROADMAP.md phase checklists (Gap E1)

    • Check off all Phase 03 items that are now implemented
    • Add Phase 45 items as needed
    • Update progress notes section with new commits
  • 8.2 Update AGENTS.md with current state

    • Update test counts across all surfaces
    • Add any new API endpoints added in Phases 27
    • Update repo layout if new files/dirs were added
  • 8.3 Update docs/GAP_ANALYSIS.md final status

    • Add completion notes to each resolved gap
    • Update the totals table with final numbers

Verification

# Ensure all docs reference accurate file paths and counts
cd backend && npm run typecheck && npm test
cd web && npm run typecheck && npm test && npm run build
cd mobile && npm run typecheck && npm test

Commit convention

docs: update ROADMAP, AGENTS, GAP_ANALYSIS to reflect completed implementation

Deferred (V2+ / Post-Launch)

These gaps are explicitly deferred per the gap analysis:

Gap Description Reason
B4 Webhook/event hooks Low priority for V1. Implement after core flows are hardened.
B5 Note sharing within workspace Requires workspace-level access model redesign. Phase 2+ feature.
E2 WINDSURF_CONTEXT.md Low priority — AGENTS.md covers most of this.

Progress Log

Track completed phases and commits here as work progresses.

Date Phase Commit Summary

Test Target Summary

Surface Before After Phase 3 After Phase 6 After Phase 7
Backend 24 tests (12 files) ~75 tests ~75 tests ~85 tests
Web unit 6 tests (5 files) 6 tests ~12 tests ~12 tests
Web E2E 0 0 ~20 tests ~20 tests
Mobile 0 0 ~15 tests ~15 tests
Total 30 ~81 ~122 ~132

Full Verification Checklist (run before marking any phase complete)

# ── Backend ────────────────────────────────────────
cd backend && npm run typecheck && npm test && npm run build

# ── Web ────────────────────────────────────────────
cd web && npm run typecheck && npm test && npm run build

# ── Mobile ─────────────────────────────────────────
cd mobile && npm run typecheck && npm test

# ── E2E (after Phase 6) ───────────────────────────
cd web && npx playwright test