SCBE IDE - 90-Day Build Plan (V0)
Document version: 0.1.0 Date: 2026-02-19 Status: DRAFT Depends on: ARCH_OPTIONS.md, MVP_SPEC.md
1. Overview
This document defines the week-by-week execution plan to deliver a functional V0 of the SCBE IDE in 90 calendar days (13 weeks).
Architecture decision (per ARCH_OPTIONS.md): Electron + Monaco + Node.js for V0, with a Tauri + CodeMirror 6 migration planned for V2. This stack scored 77.6% on the weighted decision matrix, winning on dev velocity (+20 points over Tauri) and SCBE integration ease (+15 points) – the two highest-weighted criteria at weight 5 each.
MVP scope (per MVP_SPEC.md): Seven features (F1-F7) comprising the code editor, governance panel, connector manager, goal execution engine, Research-Task-Approve-Execute loop, secure vault, and AI agent integration. Twelve success criteria (SC-1 through SC-12) define the exit gate for V0.
Goal: A functional, installable desktop IDE for Windows 11 (primary) and macOS (secondary) that demonstrates governance-first development. Every file edit, terminal command, AI suggestion, and external integration flows through the SCBE 14-layer safety pipeline before execution.
2. Phase Structure
Phase 1: Foundation (Weeks 1-3)
Objective: A working Electron shell with Monaco editor, file tree, integrated terminal, LSP completions for TypeScript and Python, and a CI pipeline that builds and tests on every push.
Week 1: Electron Shell + Project Scaffolding
Deliverables:
- Initialize
ide/workspace with the following layout:ide/ ├── package.json ├── tsconfig.json ├── electron.vite.config.ts ├── src/ │ ├── main/ # Electron main process │ │ ├── index.ts # App entry, window creation │ │ ├── ipc/ # IPC handler registration │ │ └── shell/ # IdeShell abstraction (ElectronShell impl) │ ├── renderer/ # Chromium renderer (React 19) │ │ ├── index.html │ │ ├── main.tsx │ │ ├── App.tsx │ │ ├── components/ # UI components │ │ ├── panels/ # Left, Center, Right, Bottom panels │ │ ├── stores/ # Zustand state stores │ │ └── hooks/ # Custom React hooks │ ├── preload/ # Context bridge (preload.ts) │ └── shared/ # Types shared between main and renderer │ ├── ipc-channels.ts │ └── types.ts ├── resources/ # Icons, assets ├── tests/ # Vitest test files └── .github/workflows/ # CI pipeline - Electron main process boots, creates a BrowserWindow with
contextIsolation: true,sandbox: true,nodeIntegration: false. - Preload script exposes a typed
window.apibridge usingcontextBridge.exposeInMainWorld. - React 19 renderer renders a placeholder layout matching the Information Architecture from MVP_SPEC (left panel 240px, center flex, right panel 320px, bottom panel 200px, status bar).
- Zustand stores initialized:
useEditorStore,useFileTreeStore,useLayoutStore. - Title bar shows “SCBE IDE – [no project]”.
- CI pipeline: GitHub Actions workflow that runs
npm ci,npm run build,npm teston push tomainand all PRs. Windows and macOS matrix.
Testable verification: npm run dev launches an Electron window with a four-panel layout. CI passes on first push.
Week 2: Monaco Editor + File Tree
Deliverables:
- Monaco Editor integrated in the center panel via
@monaco-editor/reactor directmonaco-editorpackage. - Tab management: open, close, reorder tabs. Dirty-file indicator (dot on tab title).
- File open/save via IPC: renderer requests file read/write through preload bridge, main process performs
fs.readFile/fs.writeFile. - File tree component (left panel, top section):
- Recursive directory listing via
fs.readdir. - Collapsible tree with folder/file icons.
- Single-click to preview file (italic tab title), double-click to pin.
- Git status indicators: modified (M), untracked (U), staged (A) via
simple-git.
- Recursive directory listing via
- Project root detection: open folder dialog sets the project root. Persisted in
electron-store. - File tree respects
.gitignore(hide ignored files by default, toggle to show). - Multi-cursor editing (ctrl+D / cmd+D) works out-of-the-box via Monaco.
- Search and replace: file-local (ctrl+F) and project-wide (ctrl+shift+F) using Monaco’s built-in search and a custom ripgrep subprocess for project-wide.
- Keyboard shortcut defaults: ctrl+S save, ctrl+P quick-open, ctrl+shift+P command palette stub (empty for now).
Testable verification: Open a real project folder (the SCBE-AETHERMOORE repo). Navigate file tree. Open src/api/server.ts. Edit with multi-cursor. Save. Confirm file written to disk.
Week 3: Terminal + LSP + CI Hardening
Deliverables:
- Integrated terminal (bottom panel, “Terminal” tab):
- xterm.js with
node-ptybackend. - Shell auto-detection: PowerShell on Windows, zsh/bash on macOS/Linux.
- Multiple terminal sessions (tabs within the terminal panel).
- Resize handling (cols/rows update on panel resize).
- xterm.js with
- LSP integration:
- TypeScript: spawn
typescript-language-server --stdioas a child process. Connect viavscode-languageserver-protocolnpm package. Wire diagnostics to Monaco markers. Wire completions to Monaco’sCompletionItemProvider. - Python: spawn
pyright-langserver --stdio. Same wiring. - LSP lifecycle: start on project open, restart on crash (3 retries), status shown in status bar (green dot = running, red dot = stopped).
- TypeScript: spawn
- Status bar (bottom):
- Current git branch (via
simple-git). - LSP connection status per language.
- Placeholder slots for governance stats and vault lock state.
- Current git branch (via
- CI hardening:
- Add ESLint + Prettier to the pipeline.
- Add Vitest unit tests for IPC handlers, file tree data model, and tab management logic.
- Test matrix: Windows (x64), macOS (ARM64).
- Build produces an unsigned installable artifact (NSIS for Windows, DMG for macOS) via
electron-builder.
Testable verification: Open SCBE-AETHERMOORE repo. Open src/api/server.ts, get Express type completions from TypeScript LSP. Open src/api/main.py, get FastAPI type completions from Pyright. Open terminal, run git status, see output. Status bar shows branch name and green LSP indicators. CI builds an installable artifact.
Phase 2: SCBE Integration (Weeks 4-6)
Objective: Connect the IDE to the SCBE FastAPI backend (localhost:8000) and Express governance server (localhost:8080). Surface governance decisions, connector management, and goal execution as native IDE panels.
Prerequisite: SCBE FastAPI server running at localhost:8000. Express governance server running at localhost:8080. Both started manually or via a docker-compose up before launching the IDE. The IDE does NOT manage these server processes in V0.
Week 4: Governance Panel + WebSocket Feed
Deliverables:
- Governance Panel (right panel, per MVP_SPEC F2):
- WebSocket connection to
localhost:8000for live governance events. - REST polling fallback to
localhost:8080/v1/auditevery 5 seconds if WebSocket unavailable. - Decision feed: live-updating list of decisions (ALLOW, QUARANTINE, ESCALATE, DENY). Each entry shows: timestamp, actor, resource, risk score (0.0-1.0), harmonic cost, decision. Color-coded: green (ALLOW), yellow (QUARANTINE), orange (ESCALATE), red (DENY).
- Action queue: pending operations awaiting approval. Each entry shows: operation type, target resource, risk score, risk prime (after harmonic amplification), originating actor.
- WebSocket connection to
- Connection manager service (main process):
ScbeApiClientclass wrapping all HTTP calls to localhost:8000 and localhost:8080.- Automatic reconnection on WebSocket disconnect (exponential backoff, max 30s).
- Health check on startup:
GET /healthto localhost:8000. If unreachable, show a banner in the IDE: “SCBE backend not detected. Governance features unavailable. Start the backend withdocker-compose up.”
- Zustand stores:
useGovernanceStore(decision feed, action queue, connection status).
Testable verification: Start SCBE backend. Launch IDE. Trigger a governance check via curl to /governance-check. See the decision appear in the governance panel within 1 second.
Week 5: Connector Manager + Goal Basics
Deliverables:
- Connector Manager (left panel, below file tree, per MVP_SPEC F3):
- List connectors:
GET /mobile/connectorsrendered as a scrollable list with name, kind icon, and health indicator (green/yellow/red). - Register connector: form-based creation dialog. Fields: name, kind (dropdown of 10 enum values), endpoint URL, HTTP method, timeout, payload mode, auth type, auth token (masked input), default headers (key-value editor). Submits to
POST /mobile/connectors. - Edit connector: click to open pre-filled form. Submit updates via PUT (or re-POST per API).
- Delete connector: confirmation dialog, then
DELETE /mobile/connectors/{id}. - Quick-connect templates:
GET /mobile/connectors/templates. Dropdown that pre-fills form fields. - Auth token field integrates with Secure Vault (F6, Week 6): on save, token is stored in vault; connector record references vault entry ID.
- List connectors:
- Goal Execution basics (bottom panel, “Goals” tab, per MVP_SPEC F4):
- Create goal: command palette entry “SCBE: Create Goal”. Fields map to
MobileGoalRequest: goal text, channel, priority, execution mode, targets. - Goal list:
GET /mobile/goalsrendered as a sidebar within the Goals tab. Status badges (queued, running, review_required, completed, failed). - Goal detail view: click a goal to see its step plan and event timeline.
- Create goal: command palette entry “SCBE: Create Goal”. Fields map to
- Right-click context menu on editor and file tabs: “Create Goal from Selection” / “Create Goal from File” pre-populates goal description.
Testable verification: Register a generic_webhook connector via the UI. See it appear in the connector list. Create a goal from right-clicking selected code. See it appear in the goal list with status “queued”.
Week 6: Secure Vault + Goal Lifecycle
Deliverables:
- Secure Vault (per MVP_SPEC F6):
- Master password prompt on first use. Password never stored; used to derive encryption key via HKDF-SHA256.
- Vault storage: encrypted file on disk (
~/.scbe-ide/vault.enc). Format: AES-256-GCM encrypted JSON blob per SCBE envelope encryption (src/crypto/envelope.tspatterns). - Secret CRUD via command palette (
Ctrl+Shift+V/Cmd+Shift+V): add, view (masked****...last4), copy (30-second clipboard auto-clear), update, delete. - Connector auth tokens auto-stored in vault on connector creation (F3 integration from Week 5).
- Auto-lock: vault locks after 15 minutes of inactivity. Unlock requires master password re-entry.
- Vault lock state shown in status bar (locked/unlocked icon).
- Goal lifecycle (completing F4):
- Lifecycle visualization: horizontal stepper bar (
queued -> running -> review_required -> running -> completed/failed). Active step highlighted. Each step shows name, risk level, status. - Step advancement: “Advance” button calls
POST /mobile/goals/{id}/advance. Result shown inline. - Approval gates: when goal enters
review_required, stepper flashes + toast notification. Approve button callsPOST /mobile/goals/{id}/approve. Deny does nothing (goal stays blocked). - Bind connector:
POST /mobile/goals/{id}/bind-connectorvia a dropdown in the goal detail view. - Goal history: past goals with status badges. Click to view full event timeline.
- Lifecycle visualization: horizontal stepper bar (
- Governance panel additions:
- Approve/Deny controls for ESCALATE and QUARANTINE items. Approve requires confirmation dialog when risk > 0.6. Deny is immediate.
- Audit log viewer: scrollable, filterable log. Filter by decision type, actor, time range, risk threshold. Hash chain display (abbreviated SHA-256).
- Policy summary: read-only list from
GET /v1/policies. - Export audit log to JSON.
Testable verification: Store a secret in the vault. Close and reopen IDE – vault is locked. Unlock with master password. Verify the secret’s ****...last4 display. Create a goal, advance it, observe stepper progression. Create a high-risk goal step, confirm it blocks at review_required, approve it, confirm it proceeds. Export audit log JSON, verify hash chain integrity with a script.
Phase 3: AI + Workflow Engine (Weeks 7-10)
Objective: Implement the AI chat panel, wire agent actions through governance gates, build the full Research-Task-Approve-Execute loop, and add multi-agent support with secret auto-redaction.
Week 7: AI Chat Panel + Basic Agent Actions
Deliverables:
- AI Chat Panel (floating panel, per MVP_SPEC F7):
- Toggle via
Ctrl+Shift+A/Cmd+Shift+A. Draggable, resizable, stays-on-top. Can be docked to right panel as additional tab. - Chat interface: message input, message history (persisted per session in memory, not on disk in V0).
- Provider configuration: settings page for API keys (stored in vault). Support OpenAI, Anthropic, xAI, Perplexity.
- Basic chat: send message to configured provider, display response. Streaming support (SSE/chunked).
- Context display: show what context the agent receives (open file name, selected text). Token count displayed.
- Toggle via
- Agent file read:
- Agent can reference open files in its context window.
- Agent can request to read any project file. Request logged as a governance event (risk=low, auto-approved).
- Agent terminal command proposal:
- Agent can propose a terminal command in chat.
- Proposed commands are displayed with a “Run” button (not auto-executed).
- Risk assessment: commands classified by content (
rm -rf= high,ls= low,npm install= medium). Risk shown next to the “Run” button.
Testable verification: Open AI chat. Configure an Anthropic API key (stored in vault). Send a message about the current file. Receive a streaming response. Agent proposes a terminal command – see it displayed with risk score and “Run” button. Governance panel shows the agent’s read action.
Week 8: Agent Edit Proposals + Governance Gating
Deliverables:
- Agent file edit proposals:
- Agent can propose edits to the current file or any project file.
- Proposed edits displayed as a diff view (Monaco’s built-in diff editor) in a modal or inline panel.
- Each proposed edit enters the governance gate before applying:
- Low risk: auto-applied if user has enabled auto-approve for low risk (off by default).
- Medium risk: shown in action queue with 10-second countdown.
- High risk: blocked until explicit human approval.
- Governance panel shows the edit proposal with risk score, affected file, and diff summary.
- Accept: apply edit to buffer. Undo available (ctrl+Z).
- Reject: dismiss edit. Logged as DENY in audit trail.
- Governance gating for all agent actions:
- Every agent action (file read, file edit, terminal command, connector dispatch) routed through
POST /v1/governbefore execution. - Governance response determines action: ALLOW (execute), QUARANTINE (show warning, require confirm), ESCALATE (require explicit approval), DENY (block with explanation).
- Agent-initiated actions labeled with agent identifier in governance panel. Filter toggle: “Show only agent actions”.
- Every agent action (file read, file edit, terminal command, connector dispatch) routed through
- Auto-redaction of secrets in AI context (F6 integration):
- Before sending any context to an AI provider, scan outbound text for exact matches against all stored vault secret values.
- Replace matches with
[REDACTED:secret_name]. - Display redacted context in the “Context” section of the chat panel so the user can verify what the agent sees.
Testable verification: Ask the AI to edit a file. See the diff view with risk score. Approve a medium-risk edit – see the 10-second countdown, then auto-apply. Reject a high-risk edit – confirm it does not apply. Check governance panel shows all agent actions. Store an API key in vault, include it in a file, ask the agent about the file – verify [REDACTED:...] in the context display.
Week 9: Research-Task-Approve-Execute Loop
Deliverables:
- Full F5 implementation (per MVP_SPEC):
- Research phase:
- Agent can perform: codebase search (grep/glob via main process), documentation lookup (read project files), terminal command execution (capture output).
- Web search via configured search connector (Perplexity or generic webhook) or built-in fetch to a search API.
- Each research action logged as a governance event (risk=low).
- Research phase produces a structured summary: findings (list), relevant files (paths), proposed approach (text).
- Summary displayed in the chat panel with a “Convert to Task” button.
- Task phase:
- “Convert to Task” parses the research summary into discrete steps.
- Each step specifies: action type (
file_edit,terminal_cmd,connector_dispatch,api_call), target resource, risk level (computed by SCBE pipeline, not self-reported), estimated impact description. - Task created as a Mobile Goal (
POST /mobile/goals) with steps matching the action plan. - Goal appears in the Goals tab with the stepper bar.
- Approve phase:
- Each step enters the governance gate per its risk level (same rules as Week 8).
- Governance panel shows each step’s risk score, contributing policy IDs, and harmonic wall cost.
- Execute phase:
- Approved steps execute by type:
file_edit: Applied to editor buffer. Undo available.terminal_cmd: Executed in IDE terminal. Output captured and displayed in goal step detail.connector_dispatch: Dispatched via bound connector. HTTP response captured.api_call: Direct HTTP call with SCBE-signed payload.
- Execution results feed back into goal step status (
doneor failure).
- Approved steps execute by type:
- Audit phase:
- Every action across all phases logged with: SHA-256 hash chain, timestamp, actor ID, governance decision, risk score, input/output summary (secrets auto-redacted).
- Viewable in governance panel audit log. Exportable as JSON.
- Research phase:
Testable verification: In the AI chat, ask the agent to “research and fix the authentication bug in server.ts”. Observe: (1) research actions logged in governance panel, (2) structured summary appears, (3) click “Convert to Task”, (4) goal created with steps in Goals tab, (5) low-risk steps auto-advance, (6) high-risk step blocks for approval, (7) approve and see execution, (8) audit trail has complete hash-chained record. This is the SC-7 success criterion.
Week 10: Multi-Agent Support + Loop Refinement
Deliverables:
- Multi-agent routing (per MVP_SPEC F7):
- Configuration page for agent roles: “research agent” (default: Perplexity), “coding agent” (default: Claude), “review agent” (configurable). Each role maps to a provider + model.
- Manual agent selection in chat panel: dropdown to choose which agent role handles the current conversation.
- Agent identity propagated to governance panel (e.g., “Agent: claude-opus-4-6” or “Agent: perplexity-sonar”).
- Research phase automatically uses the research agent; task/execute phases use the coding agent. User can override.
- Context window management:
- Expandable “Context” panel in AI chat showing: included files, terminal output excerpts, research results, and total token count.
- User can add/remove context items manually.
- Token budget display: current tokens / provider’s context window limit.
- Automatic context trimming: if tokens exceed 80% of limit, oldest context items are summarized or dropped with a warning.
- Loop refinement:
- Handle partial failures gracefully: if a step fails mid-execution, goal enters
failedstate with error details. User can retry the failed step or skip it. - Connector dispatch timeout handling: configurable 2-60 seconds (default 8s per MVP_SPEC). Timeout shows error in step detail, not a hard crash.
- Goal cancellation: user can cancel a running goal. All pending steps marked as
cancelled. Running step allowed to complete.
- Handle partial failures gracefully: if a step fails mid-execution, goal enters
- End-to-end integration tests:
- Automated test that runs the full Research-Task-Approve-Execute loop against a mock SCBE backend.
- Verify audit trail hash chain integrity programmatically.
Testable verification: Configure a research agent (Perplexity) and coding agent (Claude). Start a research task – observe research agent handles it. Convert to task – observe coding agent proposes edits. Governance panel shows different agent identifiers. Cancel a running goal – confirm pending steps cancelled. Verify token count display updates as context changes.
Phase 4: Hardening + Launch Prep (Weeks 11-13)
Objective: Security audit, performance optimization, cross-platform testing, offline validation, documentation, and success criteria verification.
Week 11: Security Audit + Performance Optimization
Deliverables:
- Security audit (against THREAT_MODEL.md findings and Electron best practices):
- Verify
contextIsolation: trueon all BrowserWindows. - Verify
sandbox: trueon all renderers. - Verify
nodeIntegration: falseeverywhere. - Verify no
shell.openExternalcalls with unsanitized URLs. - Verify CSP headers on all loaded content (
Content-Security-Policymeta tag or header). - Verify preload script exposes minimal API surface.
- Verify vault encryption: AES-256-GCM with proper IV generation (12 bytes, random), HKDF key derivation with unique salt per encryption.
- Verify no secrets in log files: scan all log output paths for vault secret values.
- Verify no secrets in rendered DOM: automated test that stores test secrets, interacts with all panels, then searches DOM innerHTML for raw secret values (SC-9).
- Verify audit trail hash chain: automated test that exports audit log, tampers with one entry, confirms chain break detection (SC-8).
- Verify IPC channel whitelist: only declared channels are accessible from renderer.
- Dependency audit:
npm auditwith zero critical/high vulnerabilities. Address or document any remaining.
- Verify
- Performance optimization:
- Startup time target: < 3 seconds cold start on Windows 11 SSD (SC-10).
- Profiling: measure startup with Electron’s
--trace-startupflag. Identify and defer non-critical initialization (LSP startup, WebSocket connection, file tree full indexing). - Lazy-load panels: governance panel, connector manager, AI chat panel loaded on first open, not at startup.
- Monaco worker optimization: load Monaco web workers from local bundle, not CDN. Defer non-essential language workers.
- Memory target: < 500 MB with one project open and no AI chat (SC-11). Profile with Chrome DevTools Memory tab. Identify and fix leaks in file tree watchers, WebSocket handlers, and terminal instances.
- File tree indexing: target < 2 seconds for projects up to 50,000 files. Use
chokidarwithignoreInitial: falseand.gitignorefilter. - Governance latency: target < 50ms for local decisions. Profile HTTP round-trip to localhost:8000/8080. If latency exceeds target, implement in-process governance cache for repeated identical decisions.
Testable verification: Run security checklist (all items pass). Measure cold start time (< 3 seconds). Measure memory after 5-minute idle with one project (< 500 MB). File tree indexes SCBE-AETHERMOORE repo in < 2 seconds.
Week 12: Cross-Platform Testing + Offline Mode
Deliverables:
- Windows 11 comprehensive testing (primary platform):
- Test on x64 and ARM64 Windows 11.
- Verify NSIS installer works: install, launch, uninstall.
- Verify node-pty terminal works with PowerShell and Git Bash.
- Verify file paths with spaces and Unicode characters.
- Verify LSP servers start correctly (typescript-language-server, pyright).
- Test at 100%, 125%, and 150% display scaling.
- Test with Windows Defender real-time scanning enabled (no false positives).
- macOS testing (secondary platform):
- Test on Apple Silicon (M-series) macOS 13+.
- Verify DMG installer works: mount, drag to Applications, launch, eject.
- Verify node-pty terminal works with zsh.
- Verify code signing (ad-hoc for V0, proper signing deferred to V1).
- Test Retina display rendering.
- Offline mode validation (SC-12):
- Disconnect network (disable adapter).
- Verify: file tree loads and navigates, editor opens/edits/saves files, terminal executes local commands, vault unlock/lock/CRUD works, audit log viewer shows cached entries.
- Verify: connector dispatch fails gracefully with user-visible error message (not a crash or hang).
- Verify: AI chat shows “Offline – AI features unavailable” message.
- Verify: governance panel shows “Backend disconnected” banner but cached decisions remain visible.
- Reconnect network: verify WebSocket reconnects automatically, governance feed resumes.
- Accessibility baseline:
- Keyboard navigation through all panels (Tab, Shift+Tab, Enter, Escape).
- Screen reader compatibility: ARIA labels on panels, buttons, and interactive elements.
- High contrast: verify both dark and light themes are readable.
Testable verification: Install on a clean Windows 11 x64 machine – full workflow passes. Install on macOS ARM64 – full workflow passes. Disconnect network – all local features work. Reconnect – live features resume within 30 seconds.
Week 13: Documentation + Success Criteria Verification + Release
Deliverables:
- Documentation:
README.mdfor theide/workspace: setup instructions, build commands, architecture overview.GETTING_STARTED.md: first-run guide for new users (install, first project, vault setup, connector registration, first goal).KEYBOARD_SHORTCUTS.md: complete keymap reference.- API dependency documentation: which SCBE endpoints the IDE consumes, how to start the backend.
- Developer documentation: how to build from source, run tests, contribute.
-
Success criteria verification (all 12 from MVP_SPEC):
# Criterion Test Owner SC-1 TypeScript LSP autocomplete Open SCBE repo, edit src/api/server.ts, verify Express type completionsManual SC-2 Python LSP autocomplete Open src/api/main.py, verify FastAPI type completionsManual SC-3 Encrypted connector auth tokens Register webhook connector, inspect vault.encwith hex editor, verify AES-256-GCM, verify UI shows****...last4Manual + automated SC-4 Goal lifecycle from editor context Right-click selected code, create goal, advance steps, observe stepper Manual SC-5 High-risk step blocks for approval Create store_opsgoal, advance to high-risk step, confirm block, approve, confirm proceedManual SC-6 Real-time governance for AI edits Ask AI to edit a file, observe ALLOW/ESCALATE/DENY in panel before edit applies Manual SC-7 End-to-end RTAE loop Full Research-Task-Approve-Execute with audit trail Manual SC-8 Tamper-evident audit log Export JSON, verify hash chain, tamper one entry, verify break detected Automated SC-9 No raw secrets in logs/DOM/AI context Store test secrets, scan all outputs for raw values, zero matches Automated SC-10 < 3 second startup Timed measurement on Windows 11 SSD Automated SC-11 < 500 MB memory baseline Task Manager measurement after 5-minute idle Manual SC-12 Full offline capability Disconnect network, verify all local features function Manual - Release preparation:
- Version tag:
v0.1.0. - Signed builds (ad-hoc for V0).
- GitHub Release with Windows installer (.exe) and macOS disk image (.dmg).
- Known issues list.
- Changelog.
- Version tag:
Testable verification: All 12 success criteria pass. Release artifacts are downloadable and installable on clean machines.
3. Weekly Milestone Table
| Week | Phase | Milestone | Deliverable | Go/No-Go Gate |
|---|---|---|---|---|
| 1 | Foundation | Electron shell boots | Four-panel layout renders, CI pipeline green | – |
| 2 | Foundation | Editor functional | Monaco opens/edits/saves files, file tree navigates project, multi-cursor works | – |
| 3 | Foundation | Terminal + LSP live | Terminal runs commands, TypeScript + Python autocomplete works, installable artifact builds | Phase 1 Gate |
| 4 | SCBE Integration | Governance panel live | Decision feed shows real-time SCBE decisions via WebSocket, action queue populated | – |
| 5 | SCBE Integration | Connectors + Goals basic | Connector CRUD via UI, goal creation from editor context, goal list renders | – |
| 6 | SCBE Integration | Vault + Goal lifecycle | AES-256-GCM vault stores secrets, goal stepper shows full lifecycle, approval gates block high-risk steps | Phase 2 Gate |
| 7 | AI + Workflow | AI chat functional | Chat panel sends/receives AI messages, agent proposes commands with risk scores | – |
| 8 | AI + Workflow | Governance-gated AI edits | Agent edit proposals show as diffs, governance gates enforce ALLOW/DENY, secrets auto-redacted | – |
| 9 | AI + Workflow | RTAE loop end-to-end | Research-Task-Approve-Execute completes with hash-chained audit trail | – |
| 10 | AI + Workflow | Multi-agent + refinement | Multiple agent roles configured, context management works, partial failure handling | Phase 3 Gate |
| 11 | Hardening | Security + performance | Security audit passes, startup < 3s, memory < 500 MB, governance latency < 50ms | – |
| 12 | Hardening | Cross-platform + offline | Windows 11 + macOS tested, offline mode fully functional, graceful network recovery | – |
| 13 | Hardening | Documentation + release | All 12 SC pass, release artifacts published, docs complete | Phase 4 Gate (Launch) |
4. Dependencies
4.1 External Dependencies
| Dependency | Version | Purpose | Risk |
|---|---|---|---|
| Electron | 33+ (Chromium 130+) | Application shell | Stable; monthly releases |
| Monaco Editor | 0.52+ | Code editor engine | Stable; Microsoft-maintained |
| React | 19.x | UI framework | Stable |
| xterm.js | 5.x | Terminal emulator | Stable; widely used |
| node-pty | 1.x | PTY backend for terminal | Platform-sensitive; test on Windows ARM64 |
| vscode-languageserver-protocol | 3.17+ | LSP client | Stable |
| typescript-language-server | latest | TypeScript LSP | Stable |
| pyright | latest | Python LSP | Stable; Microsoft-maintained |
| simple-git | 3.x | Git operations for file tree | Stable |
| chokidar | 4.x | File system watching | Stable |
| electron-builder | 25+ | Build installers | Stable |
| electron-store | 10+ | Persistent config storage | Stable |
| zustand | 5.x | State management | Stable; lightweight |
| SCBE FastAPI backend | localhost:8000 | Governance, goals, connectors API | Must be running; team-controlled |
| SCBE Express governance server | localhost:8080 | Governance decisions, audit log | Must be running; team-controlled |
4.2 Internal Dependencies (What Blocks What)
| Blocked Item | Depends On | Phase |
|---|---|---|
| File tree git status | simple-git integration | Phase 1 |
| Governance panel | SCBE backend WebSocket / REST | Phase 2 |
| Connector manager | SCBE backend /mobile/connectors endpoints | Phase 2 |
| Goal execution | SCBE backend /mobile/goals endpoints | Phase 2 |
| Vault-backed connector auth | Secure vault implementation | Phase 2 (Week 6 depends on Week 5) |
| AI governance gating | Governance panel + POST /v1/govern | Phase 3 (Week 8 depends on Week 4) |
| Secret auto-redaction in AI context | Secure vault | Phase 3 (Week 8 depends on Week 6) |
| RTAE loop | AI chat + governance gating + goal execution + connectors | Phase 3 (Week 9 depends on Weeks 7-8) |
| Multi-agent routing | AI chat panel | Phase 3 (Week 10 depends on Week 7) |
| Security audit | All features implemented | Phase 4 (Week 11 depends on Week 10) |
| Offline mode validation | All panels + vault + editor | Phase 4 (Week 12 depends on Weeks 1-10) |
| Success criteria verification | All features + hardening | Phase 4 (Week 13 depends on Weeks 11-12) |
4.3 Dependency Graph
Week 1: Electron Shell
|
v
Week 2: Monaco + File Tree
|
v
Week 3: Terminal + LSP ---------> [Phase 1 Gate]
| |
v v
Week 4: Governance Panel Week 5: Connectors + Goals
| | |
| v v
| Week 6: Vault + Goal Lifecycle -> [Phase 2 Gate]
| | |
v v v
Week 7: AI Chat Panel
|
v
Week 8: AI Governance Gating + Redaction
|
v
Week 9: RTAE Loop End-to-End
|
v
Week 10: Multi-Agent + Refinement -> [Phase 3 Gate]
|
v
Week 11: Security Audit + Performance
|
v
Week 12: Cross-Platform + Offline
|
v
Week 13: Docs + SC Verification -> [Phase 4 Gate / LAUNCH]
5. Risk Register
| # | Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|---|
| R1 | Monaco integration complexity – Monaco’s monolithic API and web worker model cause unexpected issues in Electron’s renderer process (CSP conflicts, worker loading failures, memory bloat) | Medium | High | Start Monaco integration in Week 2 (early). Use @monaco-editor/react wrapper for faster bootstrapping. Maintain a fallback branch with a plain textarea editor for worst-case. Budget 2 extra days in Week 2 for Monaco-specific debugging. |
| R2 | SCBE API changes – The FastAPI and Express governance endpoints change signature, add required fields, or change response formats during the 13-week build, breaking IDE integration | Medium | High | Pin SCBE backend to a specific commit/tag at Phase 2 start. Define an API contract (OpenAPI spec) and test against it. Use adapter/wrapper layer (ScbeApiClient) so API changes require updating one file, not every panel. |
| R3 | Electron security CVEs – A critical Chromium or Electron vulnerability is disclosed during the build, requiring an urgent version bump that may break existing functionality | Medium | Medium | Subscribe to Electron security advisories. Pin to a specific Electron version. Budget 1-2 days per phase for Electron version bumps. Maintain contextIsolation, sandbox, and CSP from day one so the attack surface is minimal regardless. |
| R4 | Performance targets missed – Electron + Monaco + React + governance panel exceeds the 500 MB memory target or 3-second startup target, especially on Windows ARM64 | High | High | Profile early (Week 3, not Week 11). Implement lazy loading for all non-editor panels from the start. Defer Monaco language workers for unused languages. If 500 MB is unachievable, document the measured baseline and adjust the target with justification. Keep the governance panel lightweight (virtual scrolling for decision feed, limit rendered entries to 200). |
| R5 | AI provider rate limits – OpenAI, Anthropic, or Perplexity API rate limits cause degraded AI experience during development and testing, especially during the RTAE loop (Week 9) where multiple sequential API calls are required | Medium | Medium | Use mock AI responses for automated testing. Implement request queuing with backoff in the AI service layer. Cache research results to avoid redundant API calls. Support local model providers (Ollama) as a rate-limit-free development fallback (stretch goal, not required for V0). |
| R6 | Vault crypto implementation errors – Incorrect IV reuse, HKDF salt mismanagement, or envelope format bugs compromise the security of stored secrets, undermining a core differentiator | Low | Critical | Follow SCBE’s existing src/crypto/envelope.ts patterns exactly. Use Node.js crypto.randomBytes(12) for every IV – never reuse. Write property-based tests (fast-check) for encrypt/decrypt round-trip with random payloads. Security review the vault implementation specifically in Week 11 with fresh eyes. |
| R7 | Cross-platform node-pty issues – node-pty (native C++ addon) fails to compile or behaves differently on Windows ARM64, causing terminal functionality to break on a primary target platform | Medium | High | Test node-pty on Windows ARM64 in Week 1 (before building the full terminal). If it fails, evaluate alternatives: @xterm/addon-attach with a WebSocket PTY server, or child_process.spawn with a raw shell (degraded but functional). Keep terminal implementation behind an abstraction (ITerminalBackend) so the backend can be swapped. |
| R8 | Scope creep – Feature requests and “just one more thing” additions during the 13-week build push the timeline past 90 days, delaying launch and increasing complexity | High | High | The MVP_SPEC’s “Explicitly Out of Scope” list (Section 4) is the contract. Any feature not in F1-F7 is deferred to V1. Weekly milestone reviews enforce accountability: if a week’s deliverable is not met, the following week absorbs it by cutting scope from a later week (never by extending the timeline). The Go/No-Go gates are hard stops – if a gate fails, the plan is re-scoped, not extended. |
| R9 | LSP server stability – TypeScript or Python language servers crash under heavy use, leak memory over long sessions, or produce incorrect diagnostics that erode trust in the editor | Low | Medium | Implement LSP lifecycle management: automatic restart on crash (3 retries, then disable with user notification). Monitor LSP process memory and restart if it exceeds 300 MB. Use well-tested LSP servers (typescript-language-server and pyright are both battle-proven). Log LSP crashes for post-mortem. |
| R10 | WebSocket reliability – The governance WebSocket connection to localhost:8000 drops frequently, causing the decision feed to miss events and the governance panel to show stale data | Medium | Medium | Implement exponential backoff reconnection (1s, 2s, 4s, 8s, max 30s). On reconnect, fetch the last N governance events via REST to fill gaps. Display connection status prominently in the governance panel header (green dot / red dot). Fall back to REST polling (every 5 seconds) if WebSocket is unavailable for > 60 seconds. |
6. Go/No-Go Checkpoints
Phase 1 -> Phase 2 (End of Week 3)
All of the following must be true to proceed to Phase 2:
| # | Criterion | Verification |
|---|---|---|
| G1.1 | Electron app launches on Windows 11 and macOS | Manual test on both platforms |
| G1.2 | Monaco editor opens files from the file tree | Open 5+ files of different types (TS, PY, JSON, MD, YAML) |
| G1.3 | File save writes to disk correctly | Edit a file, save, verify on disk with external tool |
| G1.4 | Multi-cursor editing works | Select-next (ctrl+D) adds cursors, edits apply to all |
| G1.5 | Terminal runs commands and displays output | Run echo hello, git status, python --version |
| G1.6 | TypeScript LSP provides completions | Open a .ts file with Express imports, verify type completions appear |
| G1.7 | Python LSP provides completions | Open a .py file with FastAPI imports, verify type completions appear |
| G1.8 | CI pipeline builds and tests on push | Last 3 CI runs are green |
| G1.9 | Installable artifact builds successfully | NSIS installer (Windows) and DMG (macOS) can be installed and launched on clean machines |
If gate fails: Identify blocking issue. If LSP-related, proceed with LSP as a known gap and fix in Week 4. If Electron shell or Monaco core is broken, do not proceed – extend Phase 1 by 1 week and compress Phase 4 by 1 week.
Phase 2 -> Phase 3 (End of Week 6)
All of the following must be true to proceed to Phase 3:
| # | Criterion | Verification |
|---|---|---|
| G2.1 | Governance panel shows live decisions from SCBE backend | Trigger 3+ governance checks via API, see all appear in panel within 2 seconds |
| G2.2 | Action queue displays pending operations | Queue at least 1 ESCALATE operation, see it in the queue with risk score |
| G2.3 | Connector CRUD works end-to-end | Create, edit, and delete a connector via the UI. Verify via API list call. |
| G2.4 | Quick-connect templates load and pre-fill form | Select a template, verify fields are pre-populated |
| G2.5 | Goal can be created from editor context | Right-click selected code, create a goal, verify it appears in goal list |
| G2.6 | Goal lifecycle stepper progresses | Create goal, advance steps, see stepper update through at least 3 states |
| G2.7 | High-risk step blocks for approval | Advance to a high-risk step, confirm it blocks, approve, confirm it proceeds |
| G2.8 | Secure vault stores and retrieves secrets | Store a secret, lock vault, unlock, retrieve – verify masked display and clipboard copy |
| G2.9 | Connector auth token stored in vault | Create connector with auth token, verify vault contains the token, connector references vault entry |
| G2.10 | Audit log export produces valid hash-chained JSON | Export, run hash verification script, confirm chain integrity |
If gate fails: If vault crypto is the blocker, proceed to Phase 3 with vault storing in plaintext (file permission-protected) and fix crypto in Week 7 – this is a temporary compromise, not acceptable for launch. If governance panel WebSocket is broken, proceed with REST polling and fix WebSocket in parallel during Week 7. All other failures are hard blockers – do not proceed.
Phase 3 -> Phase 4 (End of Week 10)
All of the following must be true to proceed to Phase 4:
| # | Criterion | Verification |
|---|---|---|
| G3.1 | AI chat sends and receives messages with at least one provider | Send 5 messages, receive streaming responses, verify message history |
| G3.2 | Agent can propose file edits shown as diffs | Ask agent to modify a file, see diff view with accept/reject |
| G3.3 | Agent actions routed through governance gate | Agent proposes a high-risk action, governance panel shows ESCALATE/DENY before execution |
| G3.4 | Secrets auto-redacted in AI context | Store a test secret, include it in a file, send to AI – verify [REDACTED:...] in context display |
| G3.5 | Full RTAE loop completes end-to-end | Research -> Task creation -> Approval gates -> Execution -> Audit trail |
| G3.6 | Audit trail for RTAE loop is hash-chained | Export and verify hash chain for a complete RTAE session |
| G3.7 | Multi-agent routing works | Configure 2 agents, verify correct agent handles research vs. coding tasks |
| G3.8 | Partial failure handling works | Simulate a step failure mid-goal, verify goal enters failed state, retry is available |
If gate fails: If AI chat is functional but RTAE loop has bugs, proceed to Phase 4 and fix RTAE in Week 11. If AI chat itself is non-functional (no messages send/receive), do not proceed – extend Phase 3 by 1 week and compress Phase 4’s documentation to the minimum. Multi-agent routing (G3.7) is a soft gate – if single-agent works, proceed with multi-agent as a known gap.
Phase 4 -> Launch (End of Week 13)
All 12 MVP_SPEC success criteria (SC-1 through SC-12) must pass:
| # | SC | Status Required |
|---|---|---|
| 1 | SC-1: TypeScript LSP autocomplete | PASS |
| 2 | SC-2: Python LSP autocomplete | PASS |
| 3 | SC-3: Encrypted connector auth tokens | PASS |
| 4 | SC-4: Goal lifecycle from editor context | PASS |
| 5 | SC-5: High-risk step blocks for approval | PASS |
| 6 | SC-6: Real-time governance for AI edits | PASS |
| 7 | SC-7: End-to-end RTAE loop | PASS |
| 8 | SC-8: Tamper-evident audit log | PASS |
| 9 | SC-9: No raw secrets in logs/DOM/AI context | PASS |
| 10 | SC-10: < 3 second startup | PASS |
| 11 | SC-11: < 500 MB memory baseline | PASS |
| 12 | SC-12: Full offline capability | PASS |
If gate fails: If 10+ SC pass and the failures are minor (e.g., startup is 3.5s instead of 3.0s), launch as V0 with known issues documented. If fewer than 10 SC pass, do not launch – the product is not ready. Identify the critical path to fixing the failures and estimate the additional time required.
7. Team/Resource Assumptions
Primary Resourcing
- Solo developer + Claude Code as AI pair: The plan assumes one full-time developer using Claude Code for code generation, debugging, architecture review, and test writing. This is not a limitation – it is the intended development model for the SCBE IDE, which is itself a governance-first AI-paired development tool.
Time Allocation
| Activity | Hours/Week | Notes |
|---|---|---|
| Feature development | 30 | Core coding and integration |
| Testing (manual + automated) | 6 | Writing and running tests |
| Code review / AI pair review | 2 | Reviewing Claude Code output |
| Documentation | 2 | Inline docs, README updates |
| Total | 40 | Standard work week |
Where Additional Help Would Accelerate
| Area | Phase | Impact of Additional Person | Skills Needed |
|---|---|---|---|
| UI/UX design | Phase 1-2 | Panel layouts, connector form design, governance panel visual design. Currently developer-designed, which risks poor UX. A designer for 2-3 weeks in Phase 1-2 would significantly improve the first impression. | Figma, desktop app design, dark theme design |
| Security review | Phase 2, 4 | Vault crypto implementation review (Week 6) and full security audit (Week 11). A second pair of eyes on crypto code is always valuable. | Node.js crypto, AES-GCM, HKDF, Electron security model |
| QA / cross-platform testing | Phase 4 | Testing on multiple Windows 11 configurations, macOS versions, and edge cases. Solo developer can only test on their own machines. | Windows 11, macOS, systematic testing, accessibility |
| SCBE backend stabilization | Phase 2-3 | If the SCBE backend endpoints change during Phase 2-3, a backend developer maintaining API stability would prevent integration churn. | FastAPI, Express, SCBE architecture |
Parallelizable Work Streams
If a second developer were available, these streams can run in parallel:
| Stream A (Primary Developer) | Stream B (Second Developer) | Weeks |
|---|---|---|
| Electron shell + Monaco (Weeks 1-3) | CI pipeline + build system + installer configuration | 1-3 |
| Governance panel + WebSocket (Week 4) | Connector manager UI (Week 5) | 4-5 |
| AI chat panel (Week 7) | Multi-agent configuration UI (Week 10) | 7, 10 |
| RTAE loop (Week 9) | Automated test suite for SC-1 through SC-12 (Weeks 9-10) | 9-10 |
| Security audit (Week 11) | Cross-platform testing (Week 12) | 11-12 |
8. Tech Debt Budget
Acceptable Shortcuts in V0
These are deliberate trade-offs to meet the 90-day timeline. Each has a documented remediation plan for V1.
| Shortcut | Rationale | V1 Remediation |
|---|---|---|
| No extension/plugin API | V0 is a closed system. Extension governance (Safe Extension Gate) is a differentiator but building the full extension host, sandboxing, and manifest system is 4-6 weeks of work. | V1: Build extension host with SCBE governance gates. Extension manifest format, signed manifests, turnstile resolution. |
| No custom keymap editor | Ship one default keymap. Custom keymaps are a polish feature. | V1: JSON-based keymap configuration with UI editor. |
| No vim/emacs mode | Nice-to-have, not core value prop. | V1: Monaco vim/emacs extension integration. |
| No minimap | Monaco supports it but it adds visual complexity. | V1: Toggle-able minimap. |
| No inline diff view | Use terminal git diff. Building a diff UI takes 1-2 weeks. | V1: Monaco inline diff for file comparison and git changes. |
| No Git UI | Terminal is sufficient. Git UI (staging, commit, branch) is 2-3 weeks. | V1: Git panel with staging, commit, branch, push/pull. |
| No debugger | Out of scope per MVP_SPEC. DAP integration is 3-4 weeks. | V2: Debug Adapter Protocol integration. |
| Single-window only | No multi-window, no detachable panels. | V1: Detachable panels. V2: Multi-window. |
| Ad-hoc code signing | Proper code signing certificates cost money and take time to acquire. | V1: EV code signing certificate for Windows, Apple Developer ID for macOS. |
| No auto-updater | Manual download for V0. Auto-update is 1 week but requires code signing. | V1: electron-updater with differential updates. |
| REST polling fallback for governance | If WebSocket is unreliable, fall back to 5-second polling. Polling at 5s is not “real-time” but is acceptable for V0. | V1: Robust WebSocket with message queuing, guaranteed delivery, and offline buffer. |
| In-memory chat history | AI chat history lost on restart. Persistence requires encrypted storage design. | V1: Encrypted chat history persisted to disk, searchable. |
| Manual agent selection | No automatic routing of queries to the best agent. User picks from dropdown. | V1: Intent classification that auto-routes to the appropriate agent. |
| No workspace settings sync | Settings are per-machine only. | V2: Encrypted settings sync via SCBE sealed envelopes. |
MUST Be Done Right the First Time
These items have no acceptable shortcut. Getting them wrong in V0 creates security vulnerabilities, data corruption, or trust erosion that cannot be patched retroactively.
| Item | Rationale | Standard |
|---|---|---|
| Vault encryption (AES-256-GCM) | Secrets stored incorrectly are a CVE. There is no “temporary plaintext” option. IV must be random per encryption. HKDF must use unique salt. Key must be derived from master password, never stored. | Follow SCBE src/crypto/envelope.ts patterns. Property-based tests for round-trip correctness. Manual security review. |
| Audit trail hash chain (SHA-256) | A broken hash chain makes the audit trail worthless. If V0 ships with a broken chain, all early audit data is unverifiable and trust is permanently damaged. | Each entry references previous entry’s hash. Tamper detection on every read. Automated test for chain integrity on every CI run. |
| Governance gate enforcement | If agent actions bypass the governance gate even once, the entire value proposition collapses. “Governance-first” means governance-always. | Every agent action (file read, file edit, terminal command, connector dispatch) MUST go through POST /v1/govern before execution. No exceptions. No “fast path” that skips governance. |
| Secret redaction in AI context | If a raw API key is sent to an AI provider, it is compromised permanently. There is no “oops, let me fix that” for leaked secrets. | Exact-match scan against all vault values before every AI API call. Automated test (SC-9) that stores known test values and verifies zero leakage. |
| Electron security configuration | contextIsolation: false or nodeIntegration: true is a remote code execution vulnerability. These must be correct from the first commit. | contextIsolation: true, sandbox: true, nodeIntegration: false in every BrowserWindow. Enforced by a unit test that reads the window creation code and asserts these values. |
| IPC channel whitelist | An open IPC channel in Electron is equivalent to an open port. The renderer must only access declared channels. | Define all IPC channels in src/shared/ipc-channels.ts. Preload script only exposes these channels. Main process validates incoming channel names. |
Deferred to V1 or V2
| Item | Target Version | Estimated Effort | Dependency |
|---|---|---|---|
| Tauri + CodeMirror 6 migration | V2 | 12-16 weeks | V1 stable, product-market fit validated |
| Extension marketplace | V2 | 8-10 weeks | Extension API (V1), signed manifests, Safe Extension Gate |
| Extension API / plugin system | V1 | 4-6 weeks | V0 stable |
| Real-time collaboration | V2 | 8-12 weeks | CRDT/OT engine, WebSocket infrastructure |
| Custom themes | V1 | 1-2 weeks | Theme engine abstraction |
| SSO / OAuth | V1 | 2-3 weeks | Auth service, enterprise requirements |
| Cloud deployment / hosted version | V2 | 12-16 weeks | Tauri migration, WebSocket infrastructure |
| Mobile companion | V2+ | 8-12 weeks | Responsive UI, mobile auth |
| Debugger (DAP) | V2 | 3-4 weeks | Debug Adapter Protocol integration |
| Post-quantum sealed envelopes (ML-KEM-768) for vault | V1 | 2-3 weeks | liboqs bindings or pqcrypto npm package |
| Automatic agent routing (intent classification) | V1 | 2-3 weeks | Multi-agent framework, intent classifier model |
| Telemetry dashboard | V1 | 2 weeks | Opt-in telemetry framework, privacy policy |
| Database viewer | Never (out of scope) | – | Not an admin tool |
This plan should be reviewed at each Go/No-Go gate. If a gate fails, re-scope before proceeding. The 90-day timeline is a constraint, not a suggestion – if the plan cannot be met, reduce scope (cut features from F7 multi-agent first, then F5 web research, then F3 quick-connect templates), never extend the timeline.