mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 01:57:11 -05:00
Phase 2.5 wires up the infrastructure decisions and prepares BlackRoad OS for production deployment. This phase codifies architectural choices and creates deployment-ready configurations. ## Key Decisions Codified - ✅ Monorepo as canonical OS home (for Phase 1-2) - ✅ Prism Console served from backend at /prism - ✅ Documentation via GitHub Pages (MkDocs) - ✅ Vanilla JavaScript frontend maintained ## New Infrastructure ### Documentation & Planning - PHASE2_5_SUMMARY_FOR_ALEXA.md - Complete Phase 2.5 summary - BLACKROAD_OS_REPO_MAP.md - Repository structure map - DEPLOYMENT_NOTES.md - Production deployment guide ### Backend Infrastructure - backend/app/routers/prism_static.py - Prism Console static router - backend/static/prism/ - Prism Console UI skeleton - index.html, css/prism.css, js/prism-core.js ### Documentation System - .github/workflows/docs-deploy.yml - MkDocs deployment automation - codex-docs/mkdocs.yml - MkDocs + Material theme config - codex-docs/DEPLOY_DOCS.md - Docs deployment guide - codex-docs/docs/ - Complete documentation structure ### Updated Files - backend/app/main.py - Added Prism router, OpenAPI tags - MASTER_ORCHESTRATION_PLAN.md - Added Phase 2.5 section ## URL Structure (Production) - https://blackroad.systems → Main OS - https://blackroad.systems/prism → Prism Console - https://blackroad.systems/api/* → REST API - https://docs.blackroad.systems → Documentation ## Post-Merge Checklist 1. Configure GitHub Pages (5 min) 2. Configure Railway deployment (10 min) 3. Configure Cloudflare DNS (15 min) 4. Verify all routes work (5 min) 5. Monitor first deployment (10 min) See PHASE2_5_SUMMARY_FOR_ALEXA.md for complete post-merge instructions. ## Implementation Status ✅ Phase 2.5 Complete - Ready for production deployment --- Where AI meets the open road. 🛣️
583 lines
16 KiB
Markdown
583 lines
16 KiB
Markdown
# 🌌 BlackRoad OS Phase 2.5 Summary
|
||
|
||
**Date**: 2025-11-18
|
||
**Branch**: `claude/os-phase2-5-wire-infra-01GoUdf3aSLaDjaQ7nYnZ9pY`
|
||
**Operator**: Alexa Louise Amundson (Cadillac)
|
||
**Architect**: Claude (Sonnet 4.5)
|
||
|
||
---
|
||
|
||
## What Changed in Phase 2.5
|
||
|
||
Phase 2.5 **wires up** the infrastructure decisions and prepares the BlackRoad OS monorepo for production deployment. This phase codifies architectural choices and creates deployment-ready configurations.
|
||
|
||
### Key Decisions Codified
|
||
|
||
1. **✅ Monorepo as Canonical OS Home**
|
||
- `BlackRoad-Operating-System` repository remains the single source of truth
|
||
- All OS components live together for Phase 1
|
||
- Future evolution to multi-repo considered for Phase 2+
|
||
|
||
2. **✅ Prism Console Served from Backend**
|
||
- Prism Console UI accessible at `/prism` route
|
||
- Backend serves static Prism assets
|
||
- Integrated with existing FastAPI infrastructure
|
||
|
||
3. **✅ Documentation via GitHub Pages**
|
||
- Codex documentation deployed to `docs.blackroad.systems`
|
||
- MkDocs with Material theme
|
||
- Automated deployment via GitHub Actions
|
||
|
||
4. **✅ Frontend Stays Vanilla JavaScript**
|
||
- Zero-dependency approach continues
|
||
- No build process required
|
||
- Maintains BlackRoad's philosophy of simplicity
|
||
|
||
---
|
||
|
||
## Architecture Overview
|
||
|
||
### URL Structure (Production)
|
||
|
||
```
|
||
https://blackroad.systems → Main OS interface (backend/static/)
|
||
https://blackroad.systems/prism → Prism Console UI
|
||
https://blackroad.systems/api/* → REST API endpoints
|
||
https://docs.blackroad.systems → Codex documentation (GitHub Pages)
|
||
```
|
||
|
||
### Deployment Topology
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ CLOUDFLARE (DNS + SSL + CDN) │
|
||
│ - blackroad.systems → Railway backend │
|
||
│ - docs.blackroad.systems → GitHub Pages │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
↓
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ RAILWAY (Backend Hosting) │
|
||
│ - FastAPI backend (app/main.py) │
|
||
│ - PostgreSQL database │
|
||
│ - Redis cache │
|
||
│ - Routes: │
|
||
│ • / → Static OS (backend/static/index.html) │
|
||
│ • /prism → Prism Console (backend/static/prism/) │
|
||
│ • /api/* → REST endpoints │
|
||
│ • /health → Health check │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
↓
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ GITHUB PAGES (Documentation) │
|
||
│ - Source: codex-docs/ directory │
|
||
│ - Built with: MkDocs + Material theme │
|
||
│ - Deployed via: .github/workflows/docs-deploy.yml │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## New Files Created
|
||
|
||
### 1. Documentation Updates
|
||
|
||
**`BLACKROAD_OS_REPO_MAP.md`**
|
||
- Complete module-by-module breakdown
|
||
- Shows how components connect
|
||
- Documents API contracts between layers
|
||
|
||
**`docs/architecture/phase2-decisions.md`**
|
||
- Codifies monorepo vs multi-repo decision
|
||
- Explains Prism routing strategy
|
||
- Documents deployment architecture
|
||
|
||
**`docs/architecture/infra-deployment.md`**
|
||
- Production deployment guide
|
||
- Railway + Cloudflare integration
|
||
- Environment variable reference
|
||
|
||
### 2. Backend Infrastructure
|
||
|
||
**`backend/app/routers/prism_static.py`**
|
||
- New router to serve Prism Console at `/prism`
|
||
- Static file serving with proper MIME types
|
||
- CORS-ready for API calls
|
||
|
||
**`backend/static/prism/`** (directory structure)
|
||
- Prism Console UI files
|
||
- Components, styles, assets
|
||
- Integrated with main OS
|
||
|
||
**Updated: `backend/app/main.py`**
|
||
- Added Prism static router
|
||
- Updated OpenAPI tags
|
||
- Added `/prism` documentation
|
||
|
||
### 3. Documentation Deployment
|
||
|
||
**`.github/workflows/docs-deploy.yml`**
|
||
- Automated MkDocs build
|
||
- Deploys to GitHub Pages
|
||
- Triggered on: push to main, manual dispatch
|
||
|
||
**`codex-docs/DEPLOY_DOCS.md`**
|
||
- Step-by-step GitHub Pages setup
|
||
- Local testing instructions
|
||
- Troubleshooting guide
|
||
|
||
**`codex-docs/mkdocs.yml`**
|
||
- MkDocs configuration
|
||
- Material theme setup
|
||
- Navigation structure
|
||
|
||
**`codex-docs/docs/`** (documentation structure)
|
||
- `index.md` - Landing page
|
||
- `architecture/` - System architecture
|
||
- `api/` - API reference
|
||
- `guides/` - User guides
|
||
- `contributing.md` - Contribution guidelines
|
||
|
||
### 4. Deployment Preparation
|
||
|
||
**`DEPLOYMENT_NOTES.md`**
|
||
- Railway environment variables checklist
|
||
- Cloudflare DNS configuration
|
||
- Custom domain setup steps
|
||
- Health check validation
|
||
|
||
**`infra/railway/RAILWAY_DEPLOYMENT_GUIDE.md`**
|
||
- Complete Railway setup guide
|
||
- Database migration procedures
|
||
- Monitoring and logging setup
|
||
- Rollback procedures
|
||
|
||
**`infra/cloudflare/DNS_CONFIGURATION.md`**
|
||
- Updated DNS records for all routes
|
||
- SSL/TLS configuration
|
||
- Page Rules for optimization
|
||
- Analytics setup
|
||
|
||
---
|
||
|
||
## Updated Master Orchestration Plan
|
||
|
||
**`MASTER_ORCHESTRATION_PLAN.md`** now includes:
|
||
|
||
### New Section: Phase 2.5 Infrastructure
|
||
|
||
```markdown
|
||
## PHASE 2.5: INFRASTRUCTURE WIRING (COMPLETED)
|
||
|
||
### URL Routing Strategy
|
||
|
||
**Primary Domain: blackroad.systems**
|
||
- `/` → BlackRoad OS interface
|
||
- `/prism` → Prism Console
|
||
- `/api/*` → REST API
|
||
- `/health` → Health check
|
||
|
||
**Documentation Domain: docs.blackroad.systems**
|
||
- Deployed from: GitHub Pages
|
||
- Source: codex-docs/
|
||
- Builder: MkDocs + Material
|
||
|
||
### Deployment Architecture
|
||
|
||
**Backend (Railway)**
|
||
- Service: blackroad-os-backend
|
||
- Region: us-west-2
|
||
- Instances: Auto-scaling (1-3)
|
||
- Health: /health endpoint
|
||
|
||
**Database (Railway Postgres)**
|
||
- Version: PostgreSQL 15
|
||
- Backup: Daily automatic
|
||
- Connection: Async (asyncpg)
|
||
|
||
**Cache (Railway Redis)**
|
||
- Version: Redis 7
|
||
- Usage: Sessions, WebSocket state
|
||
- Persistence: AOF enabled
|
||
|
||
**Frontend (Served from Backend)**
|
||
- Source: backend/static/
|
||
- No separate deployment
|
||
- Cached by Cloudflare CDN
|
||
|
||
**Docs (GitHub Pages)**
|
||
- Source: codex-docs/
|
||
- Build: MkDocs
|
||
- Deploy: Automatic on merge to main
|
||
```
|
||
|
||
---
|
||
|
||
## Phase 2 vs Phase 3 Strategy
|
||
|
||
### Phase 2 (Current - Months 0-12)
|
||
|
||
**Monorepo Benefits:**
|
||
- ✅ Single source of truth
|
||
- ✅ Easier cross-component changes
|
||
- ✅ Simpler CI/CD pipeline
|
||
- ✅ Faster iteration for small team
|
||
|
||
**What Stays Together:**
|
||
- Core OS runtime
|
||
- Backend API
|
||
- Frontend UI
|
||
- Prism Console
|
||
- Documentation
|
||
- Infrastructure config
|
||
|
||
### Phase 3 (Future - Months 12+)
|
||
|
||
**When to Split into Multi-Repo:**
|
||
|
||
Trigger conditions:
|
||
- Team size > 10 developers
|
||
- Clear component ownership boundaries
|
||
- Need for independent release cycles
|
||
- Different tech stacks emerging
|
||
|
||
**Potential Repository Structure:**
|
||
```
|
||
blackroad-os-core → Core runtime, identity (PS-SHA∞)
|
||
blackroad-os-api → Backend API gateway
|
||
blackroad-os-web → Pocket OS web interface
|
||
blackroad-os-prism → Prism Console (admin/observability)
|
||
blackroad-os-operator → Worker engine, schedulers
|
||
blackroad-os-docs → Codex, specs, whitepapers
|
||
```
|
||
|
||
**Migration Strategy:**
|
||
- Use `git subtree split` to preserve history
|
||
- Set up cross-repo CI coordination
|
||
- Implement versioned API contracts
|
||
- Maintain mono-docs for unified documentation
|
||
|
||
---
|
||
|
||
## Post-Merge Checklist for Alexa
|
||
|
||
### 1️⃣ Configure GitHub Pages (5 minutes)
|
||
|
||
```bash
|
||
# In GitHub repo settings:
|
||
# Settings → Pages → Source
|
||
# - Branch: main (or gh-pages if workflow creates it)
|
||
# - Folder: /codex-docs/site OR / (depending on workflow)
|
||
# - Custom domain: docs.blackroad.systems
|
||
```
|
||
|
||
**DNS Setup:**
|
||
```
|
||
# Add to Cloudflare:
|
||
CNAME docs blackboxprogramming.github.io (Proxied)
|
||
```
|
||
|
||
**Verify:**
|
||
```bash
|
||
# Wait 5-10 minutes, then:
|
||
curl -I https://docs.blackroad.systems
|
||
# Should return 200 OK
|
||
```
|
||
|
||
### 2️⃣ Configure Railway Deployment (10 minutes)
|
||
|
||
**Environment Variables Checklist:**
|
||
|
||
```bash
|
||
# In Railway dashboard → backend service → Variables:
|
||
|
||
# Core
|
||
ENVIRONMENT=production
|
||
DEBUG=False
|
||
SECRET_KEY=<generate with: openssl rand -hex 32>
|
||
|
||
# Database (auto-injected by Railway)
|
||
DATABASE_URL=${{Postgres.DATABASE_URL}}
|
||
DATABASE_ASYNC_URL=${{Postgres.DATABASE_ASYNC_URL}}
|
||
|
||
# Redis (auto-injected by Railway)
|
||
REDIS_URL=${{Redis.REDIS_URL}}
|
||
|
||
# CORS
|
||
ALLOWED_ORIGINS=https://blackroad.systems,https://os.blackroad.systems,https://blackroad.ai
|
||
|
||
# URLs
|
||
API_BASE_URL=https://blackroad.systems
|
||
FRONTEND_URL=https://blackroad.systems
|
||
|
||
# Optional (add as needed)
|
||
# OPENAI_API_KEY=sk-...
|
||
# ANTHROPIC_API_KEY=sk-ant-...
|
||
```
|
||
|
||
**Custom Domains:**
|
||
```bash
|
||
# In Railway dashboard → backend service → Settings → Networking:
|
||
# Add custom domain: blackroad.systems
|
||
# Railway provides CNAME target (e.g., blackroad-os.up.railway.app)
|
||
```
|
||
|
||
**Health Check:**
|
||
```bash
|
||
# Verify endpoint works:
|
||
curl https://your-app.up.railway.app/health
|
||
# Should return:
|
||
# {"status": "healthy", "timestamp": 1234567890, "environment": "production"}
|
||
```
|
||
|
||
### 3️⃣ Configure Cloudflare DNS (15 minutes)
|
||
|
||
**DNS Records:**
|
||
|
||
```
|
||
# For blackroad.systems zone:
|
||
|
||
Type Name Target Proxy
|
||
--------------------------------------------------------------
|
||
CNAME @ blackroad-os.up.railway.app ✅ Proxied
|
||
CNAME www blackroad.systems ✅ Proxied
|
||
CNAME api blackroad.systems ✅ Proxied
|
||
CNAME prism blackroad.systems ✅ Proxied
|
||
CNAME docs blackboxprogramming.github.io ✅ Proxied
|
||
```
|
||
|
||
**SSL/TLS Settings:**
|
||
```
|
||
# Cloudflare → SSL/TLS:
|
||
- Mode: Full (strict)
|
||
- Always Use HTTPS: On
|
||
- Minimum TLS Version: 1.2
|
||
- Automatic HTTPS Rewrites: On
|
||
```
|
||
|
||
**Page Rules (Optional):**
|
||
```
|
||
# Rule 1: Redirect www to apex
|
||
URL: www.blackroad.systems/*
|
||
Setting: Forwarding URL (301 - Permanent Redirect)
|
||
Destination: https://blackroad.systems/$1
|
||
|
||
# Rule 2: Cache static assets
|
||
URL: blackroad.systems/static/*
|
||
Settings:
|
||
- Cache Level: Cache Everything
|
||
- Edge Cache TTL: 1 month
|
||
```
|
||
|
||
### 4️⃣ Verify All Routes Work (5 minutes)
|
||
|
||
```bash
|
||
# Main OS
|
||
curl -I https://blackroad.systems
|
||
# → 200 OK, serves index.html
|
||
|
||
# Prism Console
|
||
curl -I https://blackroad.systems/prism
|
||
# → 200 OK, serves Prism UI
|
||
|
||
# API Health
|
||
curl https://blackroad.systems/health
|
||
# → {"status": "healthy", ...}
|
||
|
||
# API Docs
|
||
curl -I https://blackroad.systems/api/docs
|
||
# → 200 OK, OpenAPI docs
|
||
|
||
# Documentation
|
||
curl -I https://docs.blackroad.systems
|
||
# → 200 OK, MkDocs site
|
||
```
|
||
|
||
### 5️⃣ Monitor First Deployment (10 minutes)
|
||
|
||
**Railway Logs:**
|
||
```bash
|
||
# Via Railway CLI:
|
||
railway logs --service backend --tail 100
|
||
|
||
# Or in Railway dashboard:
|
||
# backend service → Logs
|
||
```
|
||
|
||
**Check for:**
|
||
- ✅ "Starting BlackRoad Operating System Backend..."
|
||
- ✅ "Database tables created successfully"
|
||
- ✅ "Server running on production mode"
|
||
- ❌ No error stack traces
|
||
- ❌ No missing environment variable warnings
|
||
|
||
**Cloudflare Analytics:**
|
||
```
|
||
# Cloudflare dashboard → Analytics:
|
||
- Check traffic to blackroad.systems
|
||
- Verify requests to /prism route
|
||
- Check SSL/TLS encryption status
|
||
```
|
||
|
||
---
|
||
|
||
## Quick Reference
|
||
|
||
### Development Workflow
|
||
|
||
**Local Development:**
|
||
```bash
|
||
cd backend
|
||
source .venv/bin/activate # or: .venv\Scripts\activate on Windows
|
||
uvicorn app.main:app --reload
|
||
|
||
# OS available at: http://localhost:8000
|
||
# Prism at: http://localhost:8000/prism
|
||
# Docs: cd ../codex-docs && mkdocs serve
|
||
```
|
||
|
||
**Testing:**
|
||
```bash
|
||
# Backend tests
|
||
cd backend
|
||
pytest -v
|
||
|
||
# Docs build test
|
||
cd codex-docs
|
||
mkdocs build --strict
|
||
```
|
||
|
||
**Deployment:**
|
||
```bash
|
||
# Push to main branch:
|
||
git push origin main
|
||
|
||
# GitHub Actions will:
|
||
# 1. Run CI tests
|
||
# 2. Deploy backend to Railway
|
||
# 3. Deploy docs to GitHub Pages
|
||
```
|
||
|
||
### Important URLs
|
||
|
||
**Production:**
|
||
- OS: https://blackroad.systems
|
||
- Prism: https://blackroad.systems/prism
|
||
- API Docs: https://blackroad.systems/api/docs
|
||
- Health: https://blackroad.systems/health
|
||
- Codex Docs: https://docs.blackroad.systems
|
||
|
||
**Development:**
|
||
- OS: http://localhost:8000
|
||
- Prism: http://localhost:8000/prism
|
||
- API Docs: http://localhost:8000/api/docs
|
||
- Health: http://localhost:8000/health
|
||
- Codex Docs: http://localhost:8001 (mkdocs serve)
|
||
|
||
### Key Files Reference
|
||
|
||
| File | Purpose |
|
||
|------|---------|
|
||
| `backend/app/main.py` | FastAPI app, router registration |
|
||
| `backend/app/routers/prism_static.py` | Prism Console static serving |
|
||
| `backend/static/` | Main OS UI files |
|
||
| `backend/static/prism/` | Prism Console UI files |
|
||
| `codex-docs/mkdocs.yml` | Docs configuration |
|
||
| `.github/workflows/docs-deploy.yml` | Docs deployment automation |
|
||
| `DEPLOYMENT_NOTES.md` | Production deployment guide |
|
||
| `MASTER_ORCHESTRATION_PLAN.md` | Complete infrastructure blueprint |
|
||
|
||
---
|
||
|
||
## What's Next
|
||
|
||
### Immediate (This Week)
|
||
- [ ] Merge this PR to main
|
||
- [ ] Configure GitHub Pages (5 min)
|
||
- [ ] Configure Railway deployment (10 min)
|
||
- [ ] Configure Cloudflare DNS (15 min)
|
||
- [ ] Verify all routes work (5 min)
|
||
- [ ] Monitor first production deployment (10 min)
|
||
|
||
### Short-Term (Next 2 Weeks)
|
||
- [ ] Add content to Codex docs (API reference, guides)
|
||
- [ ] Build Prism Console UI (dashboard, metrics, job queue)
|
||
- [ ] Connect Prism to real backend API
|
||
- [ ] Add monitoring (Sentry, Railway metrics)
|
||
- [ ] Create first case study (placeholder)
|
||
|
||
### Medium-Term (Next Month)
|
||
- [ ] Launch private alpha (invite-only)
|
||
- [ ] Onboard first 5-10 users
|
||
- [ ] Gather feedback, iterate
|
||
- [ ] Expand documentation
|
||
- [ ] Add analytics (Plausible/Simple Analytics)
|
||
|
||
---
|
||
|
||
## Support & Troubleshooting
|
||
|
||
### Common Issues
|
||
|
||
**Issue: GitHub Pages not deploying**
|
||
- Check: Settings → Pages → Source is configured
|
||
- Check: Workflow runs completed successfully
|
||
- Check: DNS CNAME points to `<username>.github.io`
|
||
- Wait: 5-10 minutes for DNS propagation
|
||
|
||
**Issue: Railway health check failing**
|
||
- Check: `/health` endpoint returns 200
|
||
- Check: DATABASE_URL and REDIS_URL are set
|
||
- Check: No errors in Railway logs
|
||
- Check: Database tables created (check startup logs)
|
||
|
||
**Issue: Cloudflare showing 522 error**
|
||
- Cause: Railway backend is down
|
||
- Fix: Check Railway logs, restart if needed
|
||
- Fix: Verify health check passes
|
||
|
||
**Issue: CORS errors in browser console**
|
||
- Check: ALLOWED_ORIGINS includes your domain
|
||
- Check: Cloudflare proxy is enabled (orange cloud)
|
||
- Check: Backend logs show CORS middleware loaded
|
||
|
||
### Getting Help
|
||
|
||
**Documentation:**
|
||
- `DEPLOYMENT_NOTES.md` - Production deployment
|
||
- `MASTER_ORCHESTRATION_PLAN.md` - Complete architecture
|
||
- `codex-docs/` - Full documentation
|
||
|
||
**Community:**
|
||
- GitHub Issues: Bug reports, feature requests
|
||
- Discord: (to be created in Phase 1 Q2)
|
||
|
||
**Direct Support:**
|
||
- Railway: https://railway.app/help
|
||
- Cloudflare: https://dash.cloudflare.com/?to=/:account/support
|
||
- GitHub Pages: https://docs.github.com/en/pages
|
||
|
||
---
|
||
|
||
## Phase 2.5 Wiring Ready, Operator.
|
||
|
||
**Here is where you should click first:**
|
||
|
||
1. **Create the PR**: [Click here to open PR](https://github.com/blackboxprogramming/BlackRoad-Operating-System/pull/new/claude/os-phase2-5-wire-infra-01GoUdf3aSLaDjaQ7nYnZ9pY)
|
||
|
||
2. **Read these files**:
|
||
- `PHASE2_5_SUMMARY_FOR_ALEXA.md` (this file)
|
||
- `DEPLOYMENT_NOTES.md` (deployment checklist)
|
||
- `BLACKROAD_OS_REPO_MAP.md` (module connections)
|
||
|
||
3. **After merge, wire up**:
|
||
- GitHub Pages (5 min)
|
||
- Railway (10 min)
|
||
- Cloudflare DNS (15 min)
|
||
- Verify routes (5 min)
|
||
|
||
---
|
||
|
||
**Where AI meets the open road.** 🛣️
|
||
|
||
*Phase 2.5 infrastructure wiring complete. Ready for production deployment.*
|