Files
vibn-frontend/QA_FIXES_APPLIED.md

4.0 KiB

QA Fixes Applied

Critical Fixes Completed

Fix #1: Extension Linked Status Now Passed to AI

Files Changed:

  • lib/server/chat-context.ts

Changes:

  1. Added extensionLinked?: boolean to ProjectChatContext.project interface
  2. Passed projectData.extensionLinked ?? false to AI in context builder
  3. Updated lib/ai/prompts/collector.ts to check projectContext.project.extensionLinked instead of searching source types

Impact:

  • AI now knows when extension is linked
  • Can correctly update collectorHandoff.extensionLinked = true
  • Checklist will show "Extension linked ✓" when user links it

Fix #2: Collector Handoff Type Fixed

Files Changed:

  • lib/server/chat-context.ts

Changes: Updated phaseHandoffs type from:

Partial<Record<'extraction' | 'vision' | 'mvp' | 'marketing', PhaseHandoff>>

To:

Partial<Record<'collector' | 'extraction' | 'vision' | 'mvp' | 'marketing', PhaseHandoff>>

Impact:

  • TypeScript no longer complains about storing collector handoffs
  • Context builder can now pass existing collector handoff back to AI
  • AI can see its own previous checklist state across sessions

Fix #3: Phase Transition Logic Fixed

Files Changed:

  • lib/server/chat-mode-resolver.ts

Changes: Added check for currentPhase === 'analyzed' in mode resolver:

// Check if explicitly transitioned to analyzed phase OR has extractions
if (projectData.currentPhase === 'analyzed' || (hasExtractions && !phaseData.canonicalProductModel)) {
  return 'extraction_review_mode';
}

Impact:

  • Auto-transition now actually works
  • When currentPhase is updated to analyzed, next message uses extraction prompt
  • Mode resolver respects explicit phase transitions

📋 Testing After Fixes:

Scenario 1: Extension Linking

  1. Create new project
  2. Go to Context page → Link Extension
  3. Enter workspace path → Click "Link Extension"
  4. Backend updates extensionLinked: true
  5. AI Chat receives project.extensionLinked: true
  6. AI updates collectorHandoff.extensionLinked: true
  7. Checklist shows "Extension linked ✓"

Scenario 2: Auto-Transition

  1. Upload document
  2. Connect GitHub
  3. Link extension
  4. AI asks "Is that everything?"
  5. User says "Yes"
  6. AI returns collectorHandoff.readyForExtraction: true
  7. Backend updates currentPhase: 'analyzed'
  8. Next message → Mode resolver returns extraction_review_mode
  9. AI uses Extraction prompt

Scenario 3: Checklist Persistence

  1. Upload document → Checklist updates
  2. Refresh page
  3. Checklist still shows document uploaded
  4. Connect GitHub → Checklist updates
  5. Refresh page
  6. Both items still checked

🔄 Before vs After:

Feature Before After
Extension linking AI never knows AI sees extensionLinked
Checklist update Extension item stuck Updates in real-time
Auto-transition Might not work Reliably switches mode
Type safety ⚠️ Type error Correct types

🚀 Ready for Testing:

All critical QA issues are now fixed. The system is ready for end-to-end testing of:

  1. Document upload → Checklist update
  2. GitHub connection → Checklist update
  3. Extension linking → Checklist update
  4. Auto-transition to extraction phase
  5. Checklist persistence across sessions

📝 Remaining Minor Issues (Deferred):

Issue #4: Source Type Granularity (Low Priority)

  • Could add more detailed tracking of extension activity
  • Not blocking for MVP

Issue #6: Active vs Linked (Future Enhancement)

  • Track lastExtensionActivity timestamp
  • Show "Extension active" vs "Extension linked but idle"
  • Good for debugging, not critical for launch

Server Restarting:

All fixes applied, linter checks passed, server restarting with updated code.