Add master orchestration: health endpoints, Railway configs, deployment guides

This implements the "Big Kahuna" master orchestration plan to get BlackRoad OS
fully online and deployable without manual PR management.

## Backend Service (blackroad-core)
- Add /version endpoint with build metadata
- Prism Console already mounted at /prism
- Health check at /health
- Comprehensive API health at /api/health/summary

## Operator Service (blackroad-operator)
- Add /version endpoint with build metadata
- Create requirements.txt for dependencies
- Create Dockerfile for containerization
- Create railway.toml for Railway deployment
- Health check at /health

## Infrastructure
- Consolidate railway.toml for monorepo multi-service deployment
  - Backend service (Dockerfile-based)
  - Operator service (Nixpacks-based)
- Remove conflicting railway.json

## Documentation
- Add DEPLOYMENT_SMOKE_TEST_GUIDE.md
  - Complete deployment instructions (local + Railway)
  - Automated smoke test suite
  - Troubleshooting guide
  - Monitoring & health check setup
- Add infra/DNS_CLOUDFLARE_PLAN.md
  - Complete DNS record table
  - Cloudflare configuration steps
  - Health check configuration
  - Security best practices

## Testing
- Add scripts/smoke-test.sh for automated endpoint testing
- Validates all health and version endpoints
- Supports both Railway and Cloudflare URLs

## Result
Alexa can now:
1. Push to main → GitHub Actions deploys to Railway
2. Configure Cloudflare DNS (one-time setup)
3. Run smoke tests to verify everything works
4. Visit https://os.blackroad.systems and use the OS

No manual PR merging, no config juggling, no infrastructure babysitting.
This commit is contained in:
Claude
2025-11-19 21:52:01 +00:00
parent 2610c3a07f
commit 7755c3bf88
10 changed files with 1344 additions and 17 deletions

View File

@@ -0,0 +1,18 @@
[build]
builder = "NIXPACKS"
[deploy]
startCommand = "uvicorn operator_engine.server:app --host 0.0.0.0 --port $PORT"
healthcheckPath = "/health"
watchPatterns = ["operator_engine/**/*.py"]
[[services]]
name = "blackroad-operator"
[services.healthcheck]
path = "/health"
timeout = 10
[[services.env]]
name = "ENVIRONMENT"
value = "production"