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:
- No alternatives documented
💭 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
APIs/backend-docs-api/src/app/docs-sync/docs-sync.service.tsapps/docs-angular/src/app/services/markdown.service.tsapps/docs-angular/src/app/services/docs-source-toggle.service.ts
🔗 Related
- Decision ID:
dev_1775144896113_cl2w7g1 - Session: 302
- Workspace: gspace2
Auto-generated by MCP Smart Consolidation