Implements complete Phase 2 scaffold across 6 core modules: ## New Modules ### 1. Backend API Enhancements - Add system router with /version, /config/public, /os/state endpoints - Register system router in main.py - Add comprehensive tests for system endpoints ### 2. Core OS Runtime (core_os/) - Implement UserSession, Window, OSState models - Add state management functions (open_window, close_window, etc.) - Create Backend API adapter for communication - Include full test suite for models and state ### 3. Operator Engine (operator_engine/) - Build job registry with example jobs - Implement simple scheduler with lifecycle management - Optional HTTP server on port 8001 - Complete tests for jobs and scheduler ### 4. Web Client Enhancements - Add CoreOSClient JavaScript class - Integrate system API endpoints - Event-driven architecture for state updates - Zero dependencies, vanilla JavaScript ### 5. Prism Console (prism-console/) - Modern dark-themed admin UI - Multi-tab navigation (Overview, Jobs, Agents, Logs, System) - Real-time metrics dashboard - Backend API integration with auto-refresh ### 6. Documentation (codex-docs/) - Complete MkDocs-based documentation - Architecture guides and component docs - Infrastructure setup guides - API reference documentation ## CI/CD - Add core-os-tests.yml workflow - Add operator-tests.yml workflow - Add docs-build.yml workflow ## Documentation - Create BLACKROAD_OS_REPO_MAP.md cross-reference - Add README for each module - Comprehensive integration documentation ## Summary - 37 new files created - ~3,500 lines of new code - 5 test suites with 15+ tests - 3 new CI workflows - 10+ documentation pages All modules are minimal working skeletons ready for integration. Designed to be extracted into separate repos if needed. Phase 2 scaffold complete and ready for review.
11 KiB
BlackRoad OS Repository Map
Version: Phase 2 Scaffold Last Updated: 2025-11-18 Branch:
claude/os-phase2-scaffold-01LKeSDWFNBtXhhsV2xMbM4T
Overview
This document maps all Phase 2 scaffolded components within the BlackRoad-Operating-System monorepo.
Repository Structure
All components are housed in the single monorepo:
- Repo:
blackboxprogramming/BlackRoad-Operating-System - Approach: Monorepo with modular services
- Future: May extract to separate repos if needed
Component Map
1. Backend API
| Property | Value |
|---|---|
| Location | backend/ |
| Language | Python (FastAPI) |
| New Endpoints | /api/system/version, /api/system/config/public, /api/system/os/state |
| Tests | backend/tests/test_system.py |
| CI Workflow | .github/workflows/backend-tests.yml |
| Run Command | cd backend && uvicorn app.main:app --reload |
| API Docs | http://localhost:8000/api/docs |
Key Features:
- 30+ existing API routers
- New system endpoints for OS integration
- JWT authentication
- PostgreSQL + Redis integration
How to Run:
cd backend
uvicorn app.main:app --reload
2. Core OS Runtime
| Property | Value |
|---|---|
| Location | core_os/ |
| Language | Python |
| Key Files | models.py, state.py, adapters/api_client.py |
| Tests | core_os/tests/ |
| CI Workflow | .github/workflows/core-os-tests.yml |
| README | core_os/README.md |
Key Features:
UserSession,Window,OSStatemodels- State management functions (open_window, close_window, etc.)
- Backend API adapter for communication
- In-memory state storage (future: Redis/PostgreSQL)
How to Run:
from core_os import get_initial_state, open_window
state = get_initial_state()
state = open_window("notepad")
3. Operator Engine
| Property | Value |
|---|---|
| Location | operator_engine/ |
| Language | Python |
| Key Files | jobs.py, scheduler.py, server.py |
| Tests | operator_engine/tests/ |
| CI Workflow | .github/workflows/operator-tests.yml |
| Run Command | python -m operator_engine.server |
| README | operator_engine/README.md |
Key Features:
- In-memory job registry with example jobs
- Simple interval-based scheduler
- Optional HTTP API on port 8001
- Job lifecycle management (pending, running, completed, failed)
How to Run:
# As a library
python -c "from operator_engine import Scheduler; print('OK')"
# As a service
python -m operator_engine.server
# Visit http://localhost:8001/docs
4. Web Client (Pocket OS)
| Property | Value |
|---|---|
| Location | backend/static/ (primary), web-client/ (docs) |
| Language | JavaScript (Vanilla), HTML, CSS |
| New File | backend/static/js/core-os-client.js |
| CI Workflow | .github/workflows/ci.yml (HTML/JS validation) |
| Run Command | Served by backend at http://localhost:8000/ |
| README | web-client/README.md |
Key Features:
- Windows 95-style desktop UI
- New
CoreOSClientclass for API integration - Event-driven architecture
- Zero dependencies
How to Run:
# Start backend (serves frontend at /)
cd backend
uvicorn app.main:app --reload
# Visit http://localhost:8000/
New in Phase 2:
await window.coreOS.initialize();
const version = await window.coreOS.getVersion();
console.log('OS Version:', version.version);
5. Prism Console
| Property | Value |
|---|---|
| Location | prism-console/ |
| Language | HTML, CSS, JavaScript |
| Entry Point | prism-console/index.html |
| Run Command | cd prism-console && python -m http.server 8080 |
| README | prism-console/README.md |
Key Features:
- Modern dark-themed admin UI
- Multi-tab navigation (Overview, Jobs, Agents, Logs, System)
- System metrics dashboard
- Backend API integration
- Auto-refresh every 30 seconds
How to Run:
# Standalone
cd prism-console
python -m http.server 8080
# Visit http://localhost:8080/
# Or integrate with backend (future)
# Visit http://localhost:8000/prism
6. Documentation (Codex)
| Property | Value |
|---|---|
| Location | codex-docs/ |
| Technology | MkDocs + Material theme |
| Config | codex-docs/mkdocs.yml |
| Source | codex-docs/docs/ |
| CI Workflow | .github/workflows/docs-build.yml |
| Run Command | cd codex-docs && mkdocs serve |
| README | codex-docs/README.md |
Key Features:
- Complete system documentation
- Architecture guides
- Component documentation
- API reference
- Development guides
How to Run:
cd codex-docs
pip install mkdocs mkdocs-material mkdocstrings
mkdocs serve
# Visit http://localhost:8000
CI/CD Workflows
All workflows in .github/workflows/:
| Workflow | Triggers | Tests | Artifact |
|---|---|---|---|
backend-tests.yml |
backend/* changes | Backend API + system endpoints | Test results |
core-os-tests.yml |
core_os/* changes | Core OS models + state management | Test results |
operator-tests.yml |
operator_engine/* changes | Operator jobs + scheduler | Test results |
docs-build.yml |
codex-docs/* changes | MkDocs build | Documentation site |
ci.yml |
HTML/JS changes | HTML/JS validation | - |
Integration Flow
User Request Flow
User Browser
↓
Web Client (Pocket OS)
├── core-os-client.js
├── Calls: GET /api/system/version
└── Calls: GET /api/system/os/state
↓
Backend API (FastAPI)
├── /api/system/version → system.py router
├── /api/system/config/public → system.py router
└── /api/system/os/state → system.py router (stub)
↓
Core OS Runtime (future integration)
├── get_current_state()
└── Returns OSState with windows, desktop, etc.
Admin/Ops Flow
Admin Browser
↓
Prism Console
├── prism.js
├── Calls: GET /api/system/version
├── Calls: GET /api/system/config/public
└── Calls: GET /api/operator/jobs (future)
↓
Backend API
↓
Operator Engine (future integration)
├── list_jobs()
└── execute_job(job_id)
Request Path Examples
Example 1: Get System Version
Client Code:
const version = await window.coreOS.getVersion();
HTTP Request:
GET /api/system/version
Backend Route:
# backend/app/routers/system.py
@router.get("/version")
async def get_version():
return {
"version": settings.APP_VERSION,
"build_time": datetime.utcnow().isoformat(),
"env": settings.ENVIRONMENT,
}
Response:
{
"version": "1.0.0",
"build_time": "2025-11-18T12:00:00",
"env": "development",
"git_sha": "abc12345"
}
Example 2: Get Public Config
Client Code:
const config = await window.coreOS.getPublicConfig();
HTTP Request:
GET /api/system/config/public
Response:
{
"environment": "development",
"app_name": "BlackRoad Operating System",
"version": "1.0.0",
"features": {
"blockchain_enabled": true,
"ai_agents_enabled": true,
"video_streaming_enabled": true
},
"limits": {
"max_upload_size_mb": 100,
"session_timeout_minutes": 60
},
"external_services": {
"github_integration": true,
"stripe_enabled": false,
"openai_enabled": true
}
}
Example 3: Initialize OS (Client-side)
Client Code:
const result = await window.coreOS.initialize();
console.log('Version:', result.version);
console.log('Config:', result.config);
console.log('State:', result.state);
Makes 3 parallel requests:
GET /api/system/versionGET /api/system/config/publicGET /api/system/os/state
Testing Each Component
Backend API
cd backend
pytest tests/test_system.py -v
Core OS
pytest core_os/tests/ -v
Operator Engine
pytest operator_engine/tests/ -v
Web Client
# Start backend
cd backend && uvicorn app.main:app --reload
# Open browser: http://localhost:8000/
# Open console: Should see "Core OS Client loaded (v0.1.0)"
# Run: await window.coreOS.initialize()
Prism Console
cd prism-console
python -m http.server 8080
# Visit http://localhost:8080/
# Should see system metrics dashboard
Documentation
cd codex-docs
mkdocs build
# Check for errors in build output
File Count Summary
| Component | Files Created | Tests | CI Workflows |
|---|---|---|---|
| Backend API | 1 new router | 1 test file | Existing |
| Core OS | 6 files | 2 test files | 1 new workflow |
| Operator Engine | 7 files | 2 test files | 1 new workflow |
| Web Client | 2 files | Manual | Existing |
| Prism Console | 4 files | Manual | None yet |
| Documentation | 10+ files | Build test | 1 new workflow |
Total New Files: ~30+ Total New Tests: 5 test files Total New Workflows: 3 CI workflows
Environment Variables
All modules share these environment variables (set in backend/.env):
# Core
DATABASE_URL=postgresql+asyncpg://user:pass@host:5432/db
REDIS_URL=redis://localhost:6379/0
SECRET_KEY=your-secret-key-here
# Application
APP_NAME="BlackRoad Operating System"
APP_VERSION="1.0.0"
ENVIRONMENT=development
# Operator
SCHEDULER_INTERVAL_SECONDS=60
MAX_CONCURRENT_JOBS=5
# External (optional)
GITHUB_TOKEN=...
OPENAI_API_KEY=...
STRIPE_SECRET_KEY=...
Next Steps (Post-PR)
- Merge PR - Review and merge this scaffold
- Deploy to Railway - Test in production
- Integrate Core OS - Connect backend API to core_os module
- Enable Prism Route - Serve Prism at
/prismfrom backend - Add WebSocket - Real-time state sync
- Production Jobs - Replace stub jobs with real ones
- Deploy Docs - Publish Codex to GitHub Pages
Troubleshooting
Backend won't start
# Check dependencies
pip install -r backend/requirements.txt
# Check database
# Ensure DATABASE_URL is set
# Check ports
# Ensure port 8000 is available
Tests failing
# Install test dependencies
pip install pytest pytest-asyncio pytest-cov
# Run with verbose output
pytest -v --tb=short
Docs won't build
# Install MkDocs
pip install mkdocs mkdocs-material mkdocstrings
# Build with strict mode
cd codex-docs
mkdocs build --strict
Repository Summary
Monorepo: blackboxprogramming/BlackRoad-Operating-System
Branch: claude/os-phase2-scaffold-01LKeSDWFNBtXhhsV2xMbM4T
Components: 6 modules (API, Core OS, Operator, Web, Prism, Docs)
New Code: ~3,000 lines (Python + JavaScript + HTML + Markdown)
Tests: 5 test suites with 15+ tests
CI: 3 new workflows + 4 existing
Documentation: 10+ pages in MkDocs
Phase 2 Scaffold Complete! Ready for Alexa's review. 🚀