Deployment Issues
Issue 1: Language Toggle - Cannot Switch Back to English from Urdu
Description: After switching to Urdu locale, users cannot switch back to English. The language toggle appears to be stuck in Urdu mode.
Steps to Reproduce:
- Navigate to any page
- Click language toggle (globe icon)
- Select "Urdu" (UR) → Works ✅
- Click language toggle again
- Select "English" (EN) → Fails ❌
Expected: Should switch back to /en/ route
Actual: Does not switch back to English
Affected Component: robolearn-interface/src/components/LanguageToggle/index.tsx
Likely Issue: Locale path detection/removal logic (lines 76-95)
Impact: High - Users stuck in Urdu mode cannot access English content
Issue 2: RAG Ingestion Pipeline - Manual Sync Required
Description: RAG ingestion pipeline requires manual execution. Should automatically sync when content changes.
Current Behavior:
- Must run manually:
uv run python scripts/ingest.py ingest
- No automatic sync on content changes
- No CI/CD integration
Expected Behavior:
- Auto-sync on git push (when
docs/ changes)
- GitHub Actions workflow triggers ingestion
- Incremental updates only (changed files)
Proposed Solution:
- Create
.github/workflows/sync-rag.yml
- Trigger on push to
main when docs/** or robolearn-interface/docs/** changes
- Run
rag-agent/scripts/ingest.py ingest (incremental mode)
Impact: Medium - Content updates require manual intervention
Issue 3: Chat Agent - Rate Limiting Missing (CRITICAL for Public Launch)
Description: ChatKit endpoint (/chatkit) has no rate limiting. This is a critical security and cost risk for public launch.
Current Behavior:
- No rate limiting on
/chatkit endpoint
- Unlimited requests per user/IP
- No protection against abuse or cost overruns
- Vulnerable to DDoS or excessive API usage
Risk Assessment:
- Security: High - Vulnerable to abuse, potential DDoS
- Cost: High - Unlimited OpenAI API calls could cause cost overruns
- Availability: Medium - No protection against resource exhaustion
Expected Behavior:
- Rate limiting per user (e.g., 20 requests/minute per authenticated user)
- Rate limiting per IP (e.g., 10 requests/minute per IP for unauthenticated)
- Graceful error responses (429 Too Many Requests)
- Rate limit headers in responses (
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset)
Proposed Solution:
- Add
slowapi or fastapi-limiter library
- Configure per-user limits (20 req/min authenticated)
- Configure per-IP limits (10 req/min unauthenticated)
- Add 429 responses with
Retry-After header
- Add rate limit headers to responses
Affected File: rag-agent/app.py - POST /chatkit endpoint
Impact: CRITICAL - Must be implemented before public launch
Acceptance Criteria
Language Toggle Fix
Auto-Sync Ingestion
Rate Limiting (CRITICAL)
Related Files:
robolearn-interface/src/components/LanguageToggle/index.tsx
rag-agent/scripts/ingest.py
rag-agent/app.py (rate limiting)
.github/workflows/deploy.yml
Deployment Issues
Issue 1: Language Toggle - Cannot Switch Back to English from Urdu
Description: After switching to Urdu locale, users cannot switch back to English. The language toggle appears to be stuck in Urdu mode.
Steps to Reproduce:
Expected: Should switch back to
/en/routeActual: Does not switch back to English
Affected Component:
robolearn-interface/src/components/LanguageToggle/index.tsxLikely Issue: Locale path detection/removal logic (lines 76-95)
Impact: High - Users stuck in Urdu mode cannot access English content
Issue 2: RAG Ingestion Pipeline - Manual Sync Required
Description: RAG ingestion pipeline requires manual execution. Should automatically sync when content changes.
Current Behavior:
uv run python scripts/ingest.py ingestExpected Behavior:
docs/changes)Proposed Solution:
.github/workflows/sync-rag.ymlmainwhendocs/**orrobolearn-interface/docs/**changesrag-agent/scripts/ingest.py ingest(incremental mode)Impact: Medium - Content updates require manual intervention
Issue 3: Chat Agent - Rate Limiting Missing (CRITICAL for Public Launch)
Description: ChatKit endpoint (
/chatkit) has no rate limiting. This is a critical security and cost risk for public launch.Current Behavior:
/chatkitendpointRisk Assessment:
Expected Behavior:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset)Proposed Solution:
slowapiorfastapi-limiterlibraryRetry-AfterheaderAffected File:
rag-agent/app.py-POST /chatkitendpointImpact: CRITICAL - Must be implemented before public launch
Acceptance Criteria
Language Toggle Fix
Auto-Sync Ingestion
Rate Limiting (CRITICAL)
Related Files:
robolearn-interface/src/components/LanguageToggle/index.tsxrag-agent/scripts/ingest.pyrag-agent/app.py(rate limiting).github/workflows/deploy.yml