Investigation: Why does docs-angular production (docs.gograb.space) render ...

Documentation for Sessions

📝 Investigation: Why does docs-angular production (docs.gograb.space) render ...

Date: 2026-04-02
Time: 15:48:16 UTC
Session: gspace2-302.3
Agent: angular
Confidence: 97%
Status: ✅ Documented


📋 Decision Context

Question:

Why does docs-angular production (docs.gograb.space) render default fallback content instead of actual documentation from MongoDB?

Task: S302: Fix docs-angular production rendering


🎯 Decision Made

Chosen:

Root cause identified: All 36 doc-projects in production MongoDB have visibility:'private' with empty allowedEmails[]. The backend-docs-api returns 403 for every unauthenticated file request. The frontend's static fallback also fails because Cloudflare SPA catch-all returns index.html instead of markdown files. End result: createFallbackContent() shows 'Coming Soon' for every page.

Options Considered:


💭 Reasoning

Live API verification confirmed: curl to docs-api.gograb.space/docs-api/sync/files/english/AI/Ai-Instructions/module-generation-guide returns 403 with body {"message":"Access denied to project: AI"}. The /sync/projects endpoint confirms all projects have visibility:private, allowedEmails:[]. The access check in findFileByPathWithAccess() correctly blocks access per the private visibility rule, but the INTENT was never to make ALL projects private — this happened during the bulk sync/project creation which defaults to private. The frontend correctly receives the 403, but tryLoadFromPaths converts it to a generic Error('Access denied') which loadContent's catchError catches and renders as fallback content — there's no user-facing distinction between 'access denied' and 'file not found'.


📁 Files Involved


🔗 Related


Auto-generated by MCP Smart Consolidation