# Multi-Project Governance System - Implementation Plan **Project:** Tractatus Agentic Governance Framework **Scope:** AI-Powered Rule Management + Multi-Project Infrastructure **Standard:** World-class design and implementation **Target:** Potential commercial product for Claude Code users --- ## 🎯 Executive Summary Transform Tractatus from a single-project governance framework into a **multi-project, AI-powered governance platform** that: 1. **Replaces fragile CLAUDE.md** with validated, optimized governance rules 2. **Enables multi-project management** across portfolio with variable substitution 3. **Provides AI-assisted rule optimization** for clarity and effectiveness 4. **Offers project templates** for instant deployment to new projects 5. **Validates rules in real-time** using the 5 core Tractatus services **Commercial Potential:** Solo developers to enterprise teams managing multiple AI-assisted projects --- ## πŸ“ System Architecture ### Three-Tier Rule System ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ TIER 1: UNIVERSAL RULES β”‚ β”‚ β€’ Apply to ALL projects β”‚ β”‚ β€’ Contain variables: ${DB_PORT}, ${PROJECT_NAME} β”‚ β”‚ β€’ Example: "Database MUST use ${DB_TYPE}" β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ inherited by β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ TIER 2: PROJECT-INHERITED RULES β”‚ β”‚ β€’ Universal rules with project variables applied β”‚ β”‚ β€’ Tractatus: ${DB_TYPE} β†’ MongoDB β”‚ β”‚ β€’ SY Digital: ${DB_TYPE} β†’ PostgreSQL β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + combined with β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ TIER 3: PROJECT-SPECIFIC RULES β”‚ β”‚ β€’ Unique to one project β”‚ β”‚ β€’ Example: "Blog posts MUST cite case studies" β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Core Components ``` Frontend (Vanilla JS + Tailwind) β”œβ”€β”€ Rule Manager Dashboard β”œβ”€β”€ Rule Editor with AI Assistant β”œβ”€β”€ Project Manager Dashboard β”œβ”€β”€ CLAUDE.md Migration Wizard └── Project Configuration Editor Backend (Node.js + Express) β”œβ”€β”€ Rule Management API β”œβ”€β”€ Project Management API β”œβ”€β”€ AI Services β”‚ β”œβ”€β”€ RuleOptimizer.service.js β”‚ β”œβ”€β”€ ClaudeMdAnalyzer.service.js β”‚ β”œβ”€β”€ RuleSuggestionEngine.service.js β”‚ └── RuleInterpolator.service.js β”œβ”€β”€ Validation Engine β”‚ └── RuleValidator.service.js (integrates 5 core services) └── Template System Database (MongoDB) β”œβ”€β”€ governanceRules (enhanced with scope, variables) β”œβ”€β”€ projects (NEW) β”œβ”€β”€ projectRules (NEW - overrides) β”œβ”€β”€ templates (NEW) β”œβ”€β”€ sessions (NEW - concurrent session support) β”œβ”€β”€ sessionState (NEW - session-specific state) └── tokenCheckpoints (NEW - session milestones) ``` --- ## πŸ—‚οΈ Database Schema ### Enhanced `governanceRules` Collection ```javascript { id: "univ_001", // NEW FIELDS for multi-project scope: "UNIVERSAL", // UNIVERSAL | PROJECT_SPECIFIC applicableProjects: "*", // "*" or ["tractatus", "family-history"] variables: ["DB_TYPE", "DB_PORT"], // Required variables for interpolation // Existing fields text: "Database connections MUST use ${DB_TYPE} on port ${DB_PORT}", quadrant: "SYSTEM", persistence: "HIGH", category: "technical", priority: 90, temporalScope: "PERMANENT", active: true, // NEW FIELDS for AI optimization clarityScore: 92, // 0-100, AI-calculated specificityScore: 88, // 0-100, AI-calculated actionabilityScore: 95, // 0-100, AI-calculated lastOptimized: ISODate("2025-10-10"), optimizationHistory: [ { timestamp: ISODate("2025-10-10"), before: "Database should use ${DB_TYPE}", after: "Database MUST use ${DB_TYPE} on port ${DB_PORT}", reason: "Changed weak language, added port parameter" } ], // Validation results validationStatus: "PASSED", // PASSED | FAILED | NEEDS_REVIEW lastValidated: ISODate("2025-10-10"), validationResults: { classification: { passed: true, quadrant: "SYSTEM", persistence: "HIGH" }, parameterExtraction: { passed: true, params: { DB_TYPE: "...", DB_PORT: "..." } }, conflictDetection: { passed: true, conflicts: [] }, boundaryCheck: { passed: true } }, // Usage tracking usageStats: { referencedInProjects: ["tractatus", "family-history"], timesEnforced: 156, conflictsDetected: 3, lastEnforced: ISODate("2025-10-10") }, // Standard metadata source: "user_instruction", createdBy: "theflow", createdAt: ISODate("2025-01-15"), updatedAt: ISODate("2025-10-10"), version: 2, notes: "Core database connection rule" } ``` ### NEW `projects` Collection ```javascript { _id: ObjectId("..."), projectId: "tractatus", // Unique slug name: "Tractatus - Agentic Governance", description: "AI governance framework demonstration", active: true, // Domains domains: { production: "agenticgovernance.digital", mnemonics: ["ago.ovh"], staging: "staging.agenticgovernance.digital", development: "localhost:9000" }, // Infrastructure infrastructure: { vps: { provider: "OVHCloud", host: "vps-93a693da.vps.ovh.net", ip: "51.210.xxx.xxx", user: "ubuntu", sshKeyPath: "/home/theflow/.ssh/tractatus_deploy", sshKeyEnvVar: "TRACTATUS_SSH_KEY", // Reference to .env sshPort: 22 }, database: { type: "MongoDB", host: "localhost", port: 27017, name_dev: "tractatus_dev", name_test: "tractatus_test", name_prod: "tractatus_prod", authDatabase: "admin", backupSchedule: "daily-3am", backupRetention: "30-days" }, repository: { url: "git@github.com:user/tractatus.git", branch_dev: "develop", branch_prod: "main", cicd: "GitHub Actions" }, deployment: { method: "SSH + systemd", deployPath: "/var/www/tractatus", serviceName: "tractatus", serviceManager: "systemd", restartCommand: "sudo systemctl restart tractatus" } }, // Application application: { runtime: "Node.js", version: "20.x", packageManager: "npm", port_dev: 9000, port_test: 9001, port_prod: 3000, framework: "Express", frontend: "Vanilla JS", styling: "Tailwind CSS", processManager: "systemd" }, // Project Variables (used in rule interpolation) variables: { // Core identifiers PROJECT_NAME: "Tractatus", PROJECT_SLUG: "tractatus", PROJECT_DESCRIPTION: "Agentic Governance Framework", // Database DB_TYPE: "MongoDB", DB_PORT: "27017", DB_NAME_DEV: "tractatus_dev", DB_NAME_TEST: "tractatus_test", DB_NAME_PROD: "tractatus_prod", // Domains PROD_DOMAIN: "agenticgovernance.digital", PROD_URL: "https://agenticgovernance.digital", MNEMONIC_DOMAIN: "ago.ovh", // Infrastructure VPS_HOST: "vps-93a693da.vps.ovh.net", VPS_PROVIDER: "OVHCloud", SSH_USER: "ubuntu", SSH_KEY: "${ENV.TRACTATUS_SSH_KEY}", // References .env DEPLOY_PATH: "/var/www/tractatus", // Application SERVICE_NAME: "tractatus", APP_PORT_DEV: "9000", APP_PORT_PROD: "3000", // Tech stack RUNTIME: "Node.js", FRAMEWORK: "Express", FRONTEND: "Vanilla JS", STYLING: "Tailwind CSS" }, // Governance Configuration governance: { frameworkVersion: "1.0.0", universalRulesCount: 12, projectSpecificRulesCount: 6, totalActiveRules: 18, strictMode: true, auditRetention: "90-days", pressureMonitoring: true, metacognitiveVerification: true }, // Team (for future expansion) team: { owner: "theflow", developers: ["theflow"], admins: ["theflow"] }, // Related Projects relatedProjects: ["family-history", "sydigital"], templateId: "node-express-mongo", clonedFrom: null, // If cloned from another project // Deployment History deployments: [ { timestamp: ISODate("2025-10-10T20:00:00Z"), version: "1.2.3", environment: "production", deployedBy: "theflow", status: "success", duration: "45s" } ], // Status status: "active", // active | paused | archived lastDeployed: ISODate("2025-10-10"), createdAt: ISODate("2025-01-15"), createdBy: "theflow", updatedAt: ISODate("2025-10-10") } ``` ### NEW `projectRules` Collection (Overrides) ```javascript { _id: ObjectId("..."), projectId: "tractatus", ruleId: "univ_001", // References governanceRules // Overrides to universal rule overrides: { priority: 95, // Override universal priority (90 β†’ 95) active: true, notes: "Critical for Tractatus - increased priority" }, // Project-specific variable values variables: { DB_TYPE: "MongoDB", DB_PORT: "27017" }, // Override metadata overriddenAt: ISODate("2025-10-10"), overriddenBy: "theflow", reason: "Database connection is critical for Tractatus" } ``` ### NEW `templates` Collection ```javascript { _id: ObjectId("..."), templateId: "node-express-mongo", name: "Node.js + Express + MongoDB", description: "Full-stack JavaScript with MongoDB backend", category: "full-stack", // Default infrastructure defaultInfrastructure: { database: { type: "MongoDB", port: 27017 }, application: { runtime: "Node.js", framework: "Express", port_dev: 9000, port_prod: 3000 } }, // Default variables defaultVariables: { DB_TYPE: "MongoDB", DB_PORT: "27017", RUNTIME: "Node.js", FRAMEWORK: "Express" }, // Universal rules included universalRules: [ "univ_001", // DB connection "univ_002", // Port config "univ_003", // Security boundaries "univ_004", // Git workflow "univ_005", // Testing requirements "univ_006", // Code quality "univ_007", // Documentation "univ_008", // Error handling "univ_009", // Authentication "univ_010", // API design "univ_011", // Deployment "univ_012" // Monitoring ], // Template-specific suggested rules suggestedRules: [ { text: "API endpoints MUST use Express Router pattern", quadrant: "SYSTEM", persistence: "HIGH", category: "technical" }, { text: "MongoDB collections MUST use Mongoose models", quadrant: "SYSTEM", persistence: "HIGH", category: "technical" } ], // Files to generate scaffolding: { directories: [ "src/models", "src/controllers", "src/routes", "src/services", "src/middleware", "public", "tests/unit", "tests/integration" ], files: [ "package.json", ".env.example", "server.js", "README.md" ] }, createdAt: ISODate("2025-10-10"), createdBy: "system", usageCount: 3 } ``` ### NEW `sessions` Collection (Concurrent Session Support) ```javascript { _id: ObjectId("..."), sessionId: "uuid-v4-abc-123", // Unique session identifier projectId: "tractatus", // Which project this session is working on // Session metadata createdAt: ISODate("2025-10-10T14:30:00Z"), lastActive: ISODate("2025-10-10T15:45:00Z"), status: "active", // active | completed | abandoned // User/AI context initiatedBy: "theflow", aiModel: "claude-sonnet-4-5", purpose: "Implement concurrent session support", // Session metrics (isolated per session) metrics: { messageCount: 42, tokensUsed: 85000, tokensRemaining: 115000, tokenBudget: 200000, pressureLevel: "ELEVATED", // NORMAL | ELEVATED | HIGH | DANGEROUS pressureScore: 42.5, // Percentage errorsRecent: 2, taskComplexity: "high" }, // Framework activity (session-specific) frameworkActivity: { pressureChecks: 3, instructionsAdded: 2, validationsRun: 15, boundaryEnforcements: 1, metacognitiveVerifications: 8 }, // Checkpoints (when pressure checks were run) checkpoints: [ { tokens: 50000, timestamp: ISODate("2025-10-10T14:45:00Z"), pressure: 25.0 }, { tokens: 100000, timestamp: ISODate("2025-10-10T15:15:00Z"), pressure: 50.0 } ], // Related sessions (if forked or continued) parentSessionId: null, // If continued from compacted conversation childSessionIds: [], // If spawned sub-sessions // Completion metadata completedAt: null, completionReason: null, // budget_exhausted | handoff | task_complete // Indexes indexes: [ { sessionId: 1 }, // Unique { projectId: 1, status: 1 }, { lastActive: 1 } ] } ``` ### NEW `sessionState` Collection (Session-Specific State) ```javascript { _id: ObjectId("..."), sessionId: "uuid-v4-abc-123", // References sessions collection // Current work context currentTask: { description: "Implement concurrent session support", startedAt: ISODate("2025-10-10T15:30:00Z"), filesModified: [ "/home/theflow/projects/tractatus/docs/MULTI_PROJECT_GOVERNANCE_IMPLEMENTATION_PLAN.md" ], complexity: "high" }, // Active instructions for this session activeInstructions: [ { instructionId: "inst_008", text: "HTML/JS files MUST NOT contain CSP violations", persistence: "HIGH", addedAt: ISODate("2025-10-10T14:30:00Z"), source: "instruction-history" } ], // Session-specific temporary rules (expires with session) temporaryRules: [ { text: "Focus on database-backed state implementation", persistence: "SESSION", expiresAt: "session-end" } ], // Validation results (session-specific) validations: [ { timestamp: ISODate("2025-10-10T15:00:00Z"), type: "cross_reference", action: "Edit file: implementation-plan.md", result: "APPROVED", conflicts: [] } ], // Errors and warnings (session-specific) errors: [ { timestamp: ISODate("2025-10-10T14:50:00Z"), type: "MongoServerError", message: "E11000 duplicate key error", resolved: true } ], // Last updated updatedAt: ISODate("2025-10-10T15:45:00Z"), // Indexes indexes: [ { sessionId: 1 } // Unique ] } ``` ### NEW `tokenCheckpoints` Collection (Session Milestones) ```javascript { _id: ObjectId("..."), sessionId: "uuid-v4-abc-123", // Checkpoint configuration tokenBudget: 200000, checkpoints: [ { threshold: 50000, percentage: 25, label: "25%" }, { threshold: 100000, percentage: 50, label: "50%" }, { threshold: 150000, percentage: 75, label: "75%" } ], // Checkpoint execution history executedCheckpoints: [ { threshold: 50000, executedAt: ISODate("2025-10-10T14:45:00Z"), tokensAtExecution: 50123, messagesAtExecution: 18, pressureLevel: "NORMAL", pressureScore: 25.1, reportedToUser: true, nextCheckpoint: 100000 }, { threshold: 100000, executedAt: ISODate("2025-10-10T15:15:00Z"), tokensAtExecution: 100456, messagesAtExecution: 35, pressureLevel: "ELEVATED", pressureScore: 50.2, reportedToUser: true, nextCheckpoint: 150000 } ], // Next checkpoint nextCheckpoint: 150000, nextCheckpointPercentage: 75, // Framework fade detection frameworkFadeDetected: false, lastPressureCheck: ISODate("2025-10-10T15:15:00Z"), missedCheckpoints: [], // Metadata createdAt: ISODate("2025-10-10T14:30:00Z"), updatedAt: ISODate("2025-10-10T15:15:00Z"), // Indexes indexes: [ { sessionId: 1 } // Unique ] } ``` --- ## πŸ“ File Structure ``` tractatus/ β”œβ”€β”€ public/ β”‚ └── admin/ β”‚ β”œβ”€β”€ rule-manager.html # Main rule dashboard β”‚ β”œβ”€β”€ rule-editor.html # Detailed rule editor (modal) β”‚ β”œβ”€β”€ project-manager.html # Project list/switcher β”‚ β”œβ”€β”€ project-config.html # Project configuration β”‚ β”œβ”€β”€ claude-md-migrator.html # CLAUDE.md analysis wizard β”‚ β”œβ”€β”€ rule-validator.html # Rule validation results β”‚ └── project-templates.html # Template library β”‚ β”œβ”€β”€ public/js/admin/ β”‚ β”œβ”€β”€ rule-manager.js # Rule CRUD + filtering β”‚ β”œβ”€β”€ rule-editor.js # Editor with AI suggestions β”‚ β”œβ”€β”€ rule-optimizer-ui.js # AI optimization interface β”‚ β”œβ”€β”€ rule-validator-ui.js # Real-time validation display β”‚ β”œβ”€β”€ project-manager.js # Project CRUD β”‚ β”œβ”€β”€ project-config.js # Config editor β”‚ β”œβ”€β”€ claude-md-migrator.js # CLAUDE.md β†’ rules β”‚ β”œβ”€β”€ variable-manager.js # Variable editor β”‚ └── template-selector.js # Template wizard β”‚ β”œβ”€β”€ src/services/ β”‚ β”œβ”€β”€ RuleOptimizer.service.js # AI rule improvement β”‚ β”œβ”€β”€ ClaudeMdAnalyzer.service.js # Parse CLAUDE.md β”‚ β”œβ”€β”€ RuleSuggestionEngine.service.js # Suggest rules from text β”‚ β”œβ”€β”€ RuleValidator.service.js # Test rules against framework β”‚ β”œβ”€β”€ RuleInterpolator.service.js # Variable substitution β”‚ β”œβ”€β”€ ProjectManager.service.js # Project CRUD operations β”‚ └── TemplateManager.service.js # Template operations β”‚ β”œβ”€β”€ src/models/ β”‚ β”œβ”€β”€ GovernanceRule.model.js # Enhanced with scope/variables β”‚ β”œβ”€β”€ Project.model.js # NEW β”‚ β”œβ”€β”€ ProjectRule.model.js # NEW (overrides) β”‚ └── Template.model.js # NEW β”‚ β”œβ”€β”€ src/controllers/ β”‚ β”œβ”€β”€ admin.controller.js # Existing, expanded β”‚ β”œβ”€β”€ projects.controller.js # NEW β”‚ β”œβ”€β”€ rules.controller.js # NEW (extracted from admin) β”‚ └── templates.controller.js # NEW β”‚ β”œβ”€β”€ src/routes/ β”‚ β”œβ”€β”€ admin.routes.js # Enhanced β”‚ β”œβ”€β”€ projects.routes.js # NEW β”‚ β”œβ”€β”€ rules.routes.js # NEW β”‚ └── templates.routes.js # NEW β”‚ β”œβ”€β”€ scripts/ β”‚ β”œβ”€β”€ analyze-claude-md.js # CLI tool β”‚ β”œβ”€β”€ migrate-claude-md.js # One-time migration β”‚ β”œβ”€β”€ validate-all-rules.js # Bulk validation β”‚ └── export-project-config.js # Export utility β”‚ └── docs/ β”œβ”€β”€ MULTI_PROJECT_GOVERNANCE_IMPLEMENTATION_PLAN.md (this file) β”œβ”€β”€ API_REFERENCE.md # API documentation β”œβ”€β”€ RULE_OPTIMIZATION_GUIDE.md # How AI optimizer works └── PROJECT_TEMPLATES_GUIDE.md # Template creation guide ``` --- ## πŸš€ Implementation Phases --- ## **PHASE 1: Core Rule Manager UI** (8-10 hours) **Goal:** Build foundational rule management interface with CRUD operations ### 1.1 Backend - Enhanced Rule Model (1 hour) **Tasks:** - [ ] Update `GovernanceRule.model.js` schema - [ ] Add `scope` field (UNIVERSAL | PROJECT_SPECIFIC) - [ ] Add `variables` array field - [ ] Add `applicableProjects` field - [ ] Add `clarityScore`, `specificityScore`, `actionabilityScore` - [ ] Add `validationStatus`, `validationResults` - [ ] Add `usageStats` nested object - [ ] Add `optimizationHistory` array - [ ] Create migration script for existing 18 rules - [ ] Set all existing rules to scope: "UNIVERSAL" - [ ] Initialize new fields with defaults - [ ] Test migration on tractatus_dev database - [ ] Add indexes for new fields - [ ] Index on `scope` - [ ] Index on `clarityScore` - [ ] Index on `validationStatus` **Files Modified:** - `src/models/GovernanceRule.model.js` - `scripts/migrations/001-enhance-governance-rules.js` (NEW) **Success Criteria:** - [ ] Schema updated without breaking existing functionality - [ ] All 18 rules migrated successfully - [ ] Database queries work with new fields --- ### 1.2 Backend - Rule Management API (2 hours) **Tasks:** - [ ] Create `src/controllers/rules.controller.js` - [ ] `GET /api/admin/rules` - List all rules - [ ] Support filtering: `?scope=UNIVERSAL&quadrant=SYSTEM&active=true` - [ ] Support sorting: `?sort=priority&order=desc` - [ ] Support pagination: `?page=1&limit=20` - [ ] Include computed fields: `interpolated` (if variables present) - [ ] `GET /api/admin/rules/:id` - Get single rule with full details - [ ] Include validation results - [ ] Include usage statistics - [ ] Include optimization history - [ ] `POST /api/admin/rules` - Create new rule - [ ] Validate required fields - [ ] Auto-detect variables in text (${VAR_NAME} pattern) - [ ] Set initial clarityScore (basic heuristics) - [ ] Trigger validation on creation - [ ] `PUT /api/admin/rules/:id` - Update rule - [ ] Track changes in optimizationHistory - [ ] Re-validate after update - [ ] Update clarityScore - [ ] `DELETE /api/admin/rules/:id` - Soft delete (set active: false) - [ ] Check if rule is in use by projects - [ ] Warn if deleting universal rule - [ ] `GET /api/admin/rules/stats` - Dashboard statistics - [ ] Count by scope, quadrant, persistence - [ ] Average clarity score - [ ] Total active vs inactive - [ ] Create `src/routes/rules.routes.js` - [ ] Wire up all endpoints - [ ] Add authentication middleware - [ ] Add validation middleware - [ ] Update `src/routes/index.js` to include rules routes **Files Created:** - `src/controllers/rules.controller.js` - `src/routes/rules.routes.js` **Files Modified:** - `src/routes/index.js` **Success Criteria:** - [ ] All CRUD operations work via API - [ ] Filtering and sorting work correctly - [ ] Returns proper error messages - [ ] Authenticated requests only --- ### 1.3 Frontend - Rule Manager Dashboard (3 hours) **Tasks:** - [ ] Create `public/admin/rule-manager.html` - [ ] Header with project selector (placeholder for Phase 3) - [ ] Filter panel - [ ] Scope dropdown (All | Universal | Project-Specific) - [ ] Quadrant dropdown - [ ] Persistence dropdown - [ ] Active/Inactive toggle - [ ] Search box (text search) - [ ] Sort controls - [ ] Sort by: Priority | Clarity Score | Last Modified | Name - [ ] Order: Ascending | Descending - [ ] Statistics cards - [ ] Total rules - [ ] By quadrant (pie chart) - [ ] Average clarity score - [ ] Rules needing review - [ ] Rule list/grid view - [ ] Each rule card shows: - [ ] Scope badge (Universal | Project) - [ ] Rule ID and text (truncated) - [ ] Quadrant + Persistence badges - [ ] Clarity score (visual bar) - [ ] Validation status icon - [ ] Variables (if any) - [ ] Actions: Edit | Validate | Delete - [ ] Pagination controls - [ ] "New Rule" button β†’ opens editor modal - [ ] Create `public/js/admin/rule-manager.js` - [ ] Fetch rules from API - [ ] Implement filtering logic - [ ] Implement sorting logic - [ ] Implement pagination - [ ] Render rule cards dynamically - [ ] Handle search with debouncing - [ ] Update statistics in real-time - [ ] Open editor modal on "Edit" click - [ ] Confirm before delete - [ ] Show success/error toasts **Files Created:** - `public/admin/rule-manager.html` - `public/js/admin/rule-manager.js` **Success Criteria:** - [ ] Dashboard loads all 18 rules - [ ] Filtering works for all criteria - [ ] Sorting works correctly - [ ] Search finds rules by text - [ ] Statistics update when filters change - [ ] Responsive design (mobile-friendly) --- ### 1.4 Frontend - Rule Editor Modal (2.5 hours) **Tasks:** - [ ] Create `public/admin/rule-editor.html` (modal component) - [ ] Left panel - Rule content - [ ] Text: Large textarea with syntax highlighting for ${VARS} - [ ] Scope: Radio buttons (Universal | Project-Specific) - [ ] Quadrant: Dropdown - [ ] Persistence: Dropdown - [ ] Category: Dropdown - [ ] Priority: Slider (1-100) - [ ] Temporal Scope: Dropdown - [ ] Active: Toggle - [ ] Examples: List with "Add Example" button - [ ] Notes: Textarea - [ ] Right panel - Preview & Info (Phase 2 will add AI suggestions) - [ ] Variables detected: List of ${VAR_NAME} found - [ ] Clarity score: Visual indicator (placeholder) - [ ] Preview: How rule looks when interpolated (Phase 3) - [ ] Footer - [ ] Cancel button - [ ] Save button - [ ] Save & Validate button - [ ] Create `public/js/admin/rule-editor.js` - [ ] Initialize modal with rule data (edit mode) or blank (create mode) - [ ] Detect variables in text as user types - [ ] Regex: `/\$\{([A-Z_]+)\}/g` - [ ] Update variables list in real-time - [ ] Form validation - [ ] Required: text, scope, quadrant, persistence - [ ] Text must not be empty - [ ] If universal scope, must contain variables - [ ] Save rule via API - [ ] POST for new, PUT for update - [ ] Show loading state - [ ] Handle errors gracefully - [ ] Close modal on success - [ ] Refresh parent rule-manager list **Files Created:** - `public/admin/rule-editor.html` - `public/js/admin/rule-editor.js` **Success Criteria:** - [ ] Can create new rules - [ ] Can edit existing rules - [ ] Variable detection works in real-time - [ ] Form validation prevents bad data - [ ] Modal closes and list refreshes on save - [ ] Error messages are clear --- ### 1.5 Testing & Polish (1.5 hours) **Tasks:** - [ ] Manual testing - [ ] Create new rule from scratch - [ ] Edit existing rule - [ ] Delete rule (confirm it soft-deletes) - [ ] Filter by each criterion - [ ] Sort by each field - [ ] Search for rules - [ ] Test pagination with >20 rules (create dummy rules if needed) - [ ] Error handling - [ ] Test API failures (disconnect network) - [ ] Test validation failures (invalid data) - [ ] Test edge cases (empty lists, no rules) - [ ] UI Polish - [ ] Consistent styling with existing admin pages - [ ] Responsive design checks - [ ] Loading states for async operations - [ ] Toast notifications for success/error - [ ] Accessibility (keyboard navigation, ARIA labels) - [ ] Documentation - [ ] Add comments to complex functions - [ ] Create basic user guide in README **Success Criteria:** - [ ] No bugs found in happy path - [ ] Error cases handled gracefully - [ ] UI is polished and professional - [ ] Accessible and responsive --- ## **PHASE 2: AI Rule Optimizer & CLAUDE.md Analyzer** (10-12 hours) **Goal:** Add intelligent rule optimization and CLAUDE.md migration ### 2.1 Backend - Rule Optimizer Service (3 hours) **Tasks:** - [ ] Create `src/services/RuleOptimizer.service.js` - [ ] **Clarity Analysis** - [ ] `analyzeClarity(ruleText)` β†’ returns score 0-100 - [ ] Detect vague language: "try", "maybe", "consider", "might" - [ ] Detect hedging: "probably", "possibly", "perhaps" - [ ] Detect weak imperatives: "should" vs "MUST" - [ ] Score based on: specificity, actionability, unambiguousness - [ ] **Specificity Analysis** - [ ] `analyzeSpecificity(ruleText)` β†’ returns score 0-100 - [ ] Check for concrete parameters: ports, paths, URLs - [ ] Check for explicit values vs generic terms - [ ] Detect "this project" β†’ suggest explicit name - [ ] **Actionability Analysis** - [ ] `analyzeActionability(ruleText)` β†’ returns score 0-100 - [ ] Can a human/AI act on this without ambiguity? - [ ] Does it specify WHO, WHAT, WHEN, WHERE? - [ ] **Optimization Suggestions** - [ ] `suggestOptimizations(ruleText)` β†’ returns array of suggestions - [ ] Suggest replacing weak language: "try to" β†’ "MUST" - [ ] Suggest adding parameters: "use MongoDB" β†’ "use MongoDB (port ${DB_PORT})" - [ ] Suggest replacing vague terms: "this project" β†’ "${PROJECT_NAME} project (${TEMPORAL_SCOPE})" - [ ] Suggest removing hedging: "maybe consider" β†’ "consider" or remove - [ ] **Auto-Optimize** - [ ] `optimize(ruleText, options)` β†’ returns optimized text - [ ] Apply all suggestions automatically - [ ] Options: aggressive (applies all) vs conservative (applies safe ones) - [ ] Return before/after diff **Algorithm Example:** ```javascript analyzeClarity(text) { let score = 100; // Detect weak language const weakWords = ['try', 'maybe', 'consider', 'might', 'probably']; weakWords.forEach(word => { if (new RegExp(`\\b${word}\\b`, 'i').test(text)) { score -= 15; } }); // Detect strong imperatives (bonus) const strongWords = ['MUST', 'SHALL', 'REQUIRED', 'PROHIBITED']; const hasStrong = strongWords.some(word => new RegExp(`\\b${word}\\b`).test(text) ); if (!hasStrong) score -= 10; // Check for specificity if (!/\$\{[A-Z_]+\}/.test(text)) score -= 10; // No variables if (!/\d/.test(text)) score -= 5; // No numbers return Math.max(0, Math.min(100, score)); } ``` **Files Created:** - `src/services/RuleOptimizer.service.js` **Success Criteria:** - [ ] Clarity scoring is accurate (test with known good/bad rules) - [ ] Suggestions are actionable and improve quality - [ ] Auto-optimize produces better rules --- ### 2.2 Backend - CLAUDE.md Analyzer Service (3 hours) **Tasks:** - [ ] Create `src/services/ClaudeMdAnalyzer.service.js` - [ ] `parse(claudeMdContent)` β†’ returns structured analysis - [ ] Extract sections by heading - [ ] Identify imperative statements (MUST, NEVER, ALWAYS) - [ ] Identify conditional statements (IF X THEN Y) - [ ] Identify preferences (SHOULD, TRY TO, PREFER) - [ ] `extractCandidateRules(parsedContent)` β†’ returns rule candidates - [ ] For each imperative statement: - [ ] Extract as potential rule - [ ] Classify quadrant (keyword-based) - [ ] Suggest persistence (MUSTβ†’HIGH, SHOULDβ†’MEDIUM, TRYβ†’LOW) - [ ] Detect parameters (ports, paths, etc.) - [ ] Calculate initial clarity score - [ ] Categorize by quality: - [ ] βœ… High-quality: Specific, actionable, clear - [ ] ⚠️ Needs clarification: Vague, missing details - [ ] ❌ Too nebulous: "Be professional", "Do good work" - [ ] `detectRedundancies(candidates)` β†’ returns merge suggestions - [ ] Find similar rules (text similarity >70%) - [ ] Suggest merging into single rule - [ ] `suggestImprovements(candidate)` β†’ returns improvement suggestions - [ ] Use RuleOptimizer to analyze each candidate - [ ] Suggest specific improvements - [ ] `generateMigrationPlan(analysis)` β†’ returns migration plan - [ ] List of rules to create - [ ] List of vague statements needing clarification - [ ] List of redundancies to merge **Example Output:** ```javascript { totalStatements: 45, candidateRules: [ { originalText: "MongoDB port is 27017", suggestedRule: { text: "Database MUST use ${DB_TYPE} on port ${DB_PORT}", scope: "UNIVERSAL", quadrant: "SYSTEM", persistence: "HIGH", variables: ["DB_TYPE", "DB_PORT"], clarityScore: 92 }, quality: "HIGH", autoConvert: true }, { originalText: "Try to maintain directory structure", suggestedRule: { text: "MUST preserve directory structure unless explicitly approved by user", scope: "UNIVERSAL", quadrant: "OPERATIONAL", persistence: "MEDIUM", clarityScore: 75 }, quality: "NEEDS_CLARIFICATION", autoConvert: false, improvements: [ "Change 'Try to' to 'MUST'", "Add exception clause" ] }, { originalText: "Be professional", quality: "TOO_NEBULOUS", autoConvert: false, suggestions: [ "Split into specific rules:", "- Use formal tone in error messages", "- Avoid slang in user-facing text", "- Follow code style guide" ] } ], redundancies: [ { rules: ["Use port 27017", "MongoDB port is 27017"], mergeSuggestion: "Database MUST use MongoDB on port 27017" } ] } ``` **Files Created:** - `src/services/ClaudeMdAnalyzer.service.js` **Success Criteria:** - [ ] Accurately extracts imperative statements from CLAUDE.md - [ ] Classifies rules into quality tiers - [ ] Detects redundancies - [ ] Provides actionable improvement suggestions --- ### 2.3 Backend - API Endpoints for Optimization (1 hour) **Tasks:** - [ ] Add to `src/controllers/rules.controller.js` - [ ] `POST /api/admin/rules/:id/optimize` - Optimize single rule - [ ] Body: `{ mode: "aggressive" | "conservative" }` - [ ] Returns: optimized rule + diff + suggestions - [ ] `POST /api/admin/rules/analyze-claude-md` - Analyze CLAUDE.md - [ ] Body: `{ content: "..." }` (CLAUDE.md text) - [ ] Returns: full analysis with candidates - [ ] `POST /api/admin/rules/migrate-from-claude-md` - Create rules from analysis - [ ] Body: `{ selectedCandidates: [...] }` - [ ] Creates rules in database - [ ] Returns: created rule IDs **Files Modified:** - `src/controllers/rules.controller.js` - `src/routes/rules.routes.js` **Success Criteria:** - [ ] Endpoints work and return expected data - [ ] Optimization applies suggestions correctly - [ ] CLAUDE.md analysis is comprehensive --- ### 2.4 Frontend - AI Optimization UI (3 hours) **Tasks:** - [ ] Enhance `public/admin/rule-editor.html` - Add AI Assistant Panel - [ ] Right panel now shows: - [ ] **Clarity Score**: Visual bar (0-100) with color coding - [ ] Green: 80-100 - [ ] Yellow: 60-79 - [ ] Red: 0-59 - [ ] **Specificity Score**: Similar visual - [ ] **Actionability Score**: Similar visual - [ ] **Ambiguity Detected**: List of issues - [ ] "Weak language detected: 'try to'" - [ ] "Vague term: 'this project'" - [ ] **Suggested Improvements**: List with apply buttons - [ ] Each suggestion shows before/after - [ ] "Apply" button to auto-apply - [ ] "Apply All" button - [ ] **Optimization History**: Expandable list - [ ] Shows previous versions - [ ] Diff view - [ ] **"Run AI Optimizer"** button - [ ] Calls `/api/admin/rules/:id/optimize` - [ ] Shows loading spinner - [ ] Displays suggestions - [ ] Can apply automatically or review - [ ] Update `public/js/admin/rule-editor.js` - [ ] Real-time clarity scoring as user types (debounced) - [ ] Call RuleOptimizer API on blur or button click - [ ] Display suggestions in UI - [ ] Apply suggestion on click - [ ] Update textarea - [ ] Re-score clarity - [ ] Add to optimization history - [ ] Show diff between original and optimized - [ ] Use diff library (e.g., `diff` npm package or simple highlight) **Files Modified:** - `public/admin/rule-editor.html` - `public/js/admin/rule-editor.js` **Success Criteria:** - [ ] Real-time clarity scoring works - [ ] AI suggestions appear and are actionable - [ ] Can apply suggestions individually or all at once - [ ] Optimization history tracks changes - [ ] UI is intuitive and responsive --- ### 2.5 Frontend - CLAUDE.md Migration Wizard (2 hours) **Tasks:** - [ ] Create `public/admin/claude-md-migrator.html` - [ ] **Step 1: Upload CLAUDE.md** - [ ] File upload or paste textarea - [ ] "Analyze" button - [ ] **Step 2: Review Analysis** - [ ] Statistics - [ ] Total statements found: X - [ ] High-quality candidates: Y - [ ] Needs clarification: Z - [ ] Too nebulous: W - [ ] Redundancies detected: R - [ ] **High-Quality Rules** (Auto-convert recommended) - [ ] List with checkboxes (all checked by default) - [ ] Each shows: - [ ] Original statement - [ ] Suggested rule text - [ ] Quadrant/Persistence - [ ] Clarity score - [ ] **Needs Clarification** (Review required) - [ ] List with checkboxes (unchecked by default) - [ ] Each shows: - [ ] Original statement - [ ] Suggested improvements - [ ] Can edit inline before creating - [ ] **Too Nebulous** (Manual action required) - [ ] List (not selectable for auto-creation) - [ ] Shows suggestions for how to split/improve - [ ] **Redundancies** (Merge suggestions) - [ ] Groups of similar rules - [ ] Suggested merged version - [ ] Can edit merged rule - [ ] **Step 3: Create Rules** - [ ] "Create Selected Rules" button - [ ] Progress bar as rules are created - [ ] Success summary: "Created 12 rules, 3 need manual review" - [ ] Create `public/js/admin/claude-md-migrator.js` - [ ] Handle file upload or paste - [ ] Call `/api/admin/rules/analyze-claude-md` - [ ] Render analysis results - [ ] Allow editing of suggested rules - [ ] Batch create selected rules via `/api/admin/rules/migrate-from-claude-md` - [ ] Show progress and results **Files Created:** - `public/admin/claude-md-migrator.html` - `public/js/admin/claude-md-migrator.js` **Success Criteria:** - [ ] Can upload current CLAUDE.md and get analysis - [ ] Analysis categorizes rules correctly - [ ] Can review and edit before creating - [ ] Batch creation works - [ ] Clear feedback on success/failures --- ### 2.6 Testing & Validation (1 hour) **Tasks:** - [ ] Test RuleOptimizer with sample rules - [ ] Good rule: Should score high clarity - [ ] Vague rule: Should score low and suggest improvements - [ ] Apply suggestions and verify improvement - [ ] Test CLAUDE.md Analyzer - [ ] Analyze actual CLAUDE.md from project - [ ] Verify candidates are sensible - [ ] Check redundancy detection - [ ] Test Migration Wizard - [ ] Upload CLAUDE.md - [ ] Review suggestions - [ ] Create rules - [ ] Verify rules appear in rule manager - [ ] Edge cases - [ ] Empty CLAUDE.md - [ ] Malformed content - [ ] Already-perfect rules (shouldn't suggest changes) **Success Criteria:** - [ ] No bugs in optimization flow - [ ] CLAUDE.md analysis is accurate - [ ] Migration creates valid rules - [ ] Edge cases handled gracefully --- ## **PHASE 3: Multi-Project Infrastructure** (10-12 hours) **Goal:** Enable management of multiple projects with variable substitution ### 3.1 Backend - Project Model & API (3 hours) **Tasks:** - [ ] Create `src/models/Project.model.js` - [ ] Define schema (as shown in Database Schema section) - [ ] Add static methods - [ ] `findBySlug(slug)` - [ ] `findActive()` - [ ] `findByTemplate(templateId)` - [ ] Add instance methods - [ ] `getVariables()` - return project variables - [ ] `getRules()` - return all rules (universal + project-specific) - [ ] `deploy()` - trigger deployment (placeholder for now) - [ ] Add virtuals - [ ] `totalRules` - count of active rules - [ ] Create `src/models/ProjectRule.model.js` - [ ] Schema for project-specific overrides - [ ] Reference governanceRules and projects - [ ] Create `src/controllers/projects.controller.js` - [ ] `GET /api/admin/projects` - List all projects - [ ] Support filtering: `?active=true&template=node-express-mongo` - [ ] Include rule counts - [ ] `GET /api/admin/projects/:id` - Get project with full config - [ ] Include variables - [ ] Include infrastructure - [ ] Include rule counts (universal + custom) - [ ] `POST /api/admin/projects` - Create new project - [ ] Validate required fields - [ ] Initialize default variables - [ ] Link universal rules - [ ] Return created project - [ ] `PUT /api/admin/projects/:id` - Update project - [ ] Allow updating variables, infrastructure, metadata - [ ] Validate variable changes don't break rules - [ ] `DELETE /api/admin/projects/:id` - Soft delete (set active: false) - [ ] Warn if project has custom rules - [ ] `GET /api/admin/projects/:id/rules` - Get all rules for project - [ ] Return universal rules + project-specific - [ ] Interpolate variables - [ ] `POST /api/admin/projects/:id/rules` - Add custom rule to project - [ ] `PUT /api/admin/projects/:id/rules/:ruleId/override` - Override universal rule - [ ] Create `src/routes/projects.routes.js` - [ ] Wire up all endpoints - [ ] Add authentication **Files Created:** - `src/models/Project.model.js` - `src/models/ProjectRule.model.js` - `src/controllers/projects.controller.js` - `src/routes/projects.routes.js` **Files Modified:** - `src/routes/index.js` **Success Criteria:** - [ ] Can create projects via API - [ ] Can retrieve projects with all details - [ ] Can update project configurations - [ ] Rules are correctly associated with projects --- ### 3.2 Backend - Rule Interpolator Service (2 hours) **Tasks:** - [ ] Create `src/services/RuleInterpolator.service.js` - [ ] `interpolate(rule, projectVariables)` β†’ returns expanded rule - [ ] Find all `${VAR_NAME}` patterns - [ ] Replace with project variable values - [ ] Throw error if variable not defined - [ ] Return new rule object with `interpolated: true` - [ ] `interpolateRules(rules, projectVariables)` β†’ bulk interpolation - [ ] `validateVariables(ruleText, availableVariables)` β†’ check if all vars defined - [ ] `extractRequiredVariables(ruleText)` β†’ return array of var names - [ ] `previewAcrossProjects(ruleId)` β†’ show how rule looks in all projects - [ ] Fetch rule and all active projects - [ ] Interpolate for each project - [ ] Return array of { projectName, expandedRule } **Example:** ```javascript interpolate(rule, variables) { let text = rule.text; const varPattern = /\$\{([A-Z_]+)\}/g; const matches = Array.from(text.matchAll(varPattern)); for (const match of matches) { const varName = match[1]; // Handle env var references: ${ENV.VAR_NAME} if (varName.startsWith('ENV.')) { const envVar = varName.replace('ENV.', ''); const value = process.env[envVar]; if (!value) { throw new Error(`Environment variable ${envVar} not set`); } text = text.replace(match[0], value); } // Normal project variable else { const value = variables[varName]; if (!value) { throw new Error(`Variable ${varName} not defined for project`); } text = text.replace(match[0], value); } } return { ...rule, text, originalText: rule.text, interpolated: true }; } ``` **Files Created:** - `src/services/RuleInterpolator.service.js` **Success Criteria:** - [ ] Variable substitution works correctly - [ ] Handles missing variables with clear errors - [ ] Environment variable references work - [ ] Can preview rules across all projects --- ### 3.3 Backend - Seed Initial Projects (1 hour) **Tasks:** - [ ] Create `scripts/seed-projects.js` - [ ] Create Tractatus project - [ ] Use existing configuration - [ ] Map all current rules to it - [ ] Create template projects for reference - [ ] Family History (placeholder) - [ ] SY Digital (placeholder) - [ ] Create universal rules - [ ] Migrate existing 18 rules or subset to universal - [ ] Add variables where appropriate - [ ] Run seed script - [ ] Test on tractatus_dev - [ ] Verify projects created - [ ] Verify rules linked correctly **Files Created:** - `scripts/seed-projects.js` **Success Criteria:** - [ ] Tractatus project exists in database - [ ] Rules are correctly associated - [ ] Can query rules for Tractatus project --- ### 3.4 Frontend - Project Switcher (1 hour) **Tasks:** - [ ] Update all admin pages headers - [ ] Add project dropdown in top nav - [ ] Current project shown prominently - [ ] Dropdown lists all active projects - [ ] Clicking project switches context - [ ] Store selected project in localStorage - [ ] "Manage Projects" link β†’ project manager - [ ] Create `public/js/admin/project-switcher.js` - [ ] Fetch projects from API - [ ] Render dropdown - [ ] Handle project selection - [ ] Update localStorage: `currentProjectId` - [ ] Refresh page content for new project **Files Modified:** - `public/admin/rule-manager.html` (add project switcher) - `public/admin/rule-editor.html` (add project switcher) - All other admin pages **Files Created:** - `public/js/admin/project-switcher.js` **Success Criteria:** - [ ] Project switcher appears on all admin pages - [ ] Switching projects updates UI - [ ] Current project persists across page reloads --- ### 3.5 Frontend - Project Manager Dashboard (2.5 hours) **Tasks:** - [ ] Create `public/admin/project-manager.html` - [ ] Project list/grid - [ ] Each project card shows: - [ ] Project name - [ ] Primary domain - [ ] Rule counts (universal + custom) - [ ] Last deployed - [ ] Status (active/paused) - [ ] Actions: Edit | Deploy | Clone | Delete - [ ] "New Project" button β†’ opens project wizard - [ ] Statistics - [ ] Total projects - [ ] Total rules across all projects - [ ] Projects by template - [ ] Create `public/js/admin/project-manager.js` - [ ] Fetch projects from API - [ ] Render project cards - [ ] Handle edit (open config editor) - [ ] Handle delete (confirm + API call) - [ ] Handle clone (Phase 5) - [ ] Handle deploy (placeholder for now) **Files Created:** - `public/admin/project-manager.html` - `public/js/admin/project-manager.js` **Success Criteria:** - [ ] Lists all projects - [ ] Can navigate to project config editor - [ ] Can delete projects with confirmation - [ ] Shows accurate statistics --- ### 3.6 Frontend - Project Configuration Editor (2.5 hours) **Tasks:** - [ ] Create `public/admin/project-config.html` - [ ] Tabs: - [ ] **Overview** - [ ] Name (editable) - [ ] Description (editable) - [ ] Status (active/paused toggle) - [ ] Domains (list, can add/remove) - [ ] **Infrastructure** - [ ] VPS config (host, user, SSH key) - [ ] Database config (type, port, name) - [ ] Repository config (URL, branches) - [ ] Deployment config (path, service name) - [ ] **Variables** - [ ] List of all variables - [ ] Each row: Variable Name | Value | Used in X rules - [ ] "Add Variable" button - [ ] Can edit inline - [ ] Preview rule expansion on hover - [ ] **Rules** - [ ] List inherited universal rules (read-only, but can override) - [ ] List project-specific rules (can edit/delete) - [ ] "Add Custom Rule" button - [ ] Each rule shows: - [ ] Scope badge - [ ] Text (interpolated if universal) - [ ] Quadrant/Persistence - [ ] Actions: Edit | Delete (for custom) | Override (for universal) - [ ] **Deployment** - [ ] Deployment history table - [ ] "Deploy Now" button (placeholder) - [ ] Save button (applies to all tabs) - [ ] Create `public/js/admin/project-config.js` - [ ] Load project via API - [ ] Render tabs - [ ] Handle inline editing - [ ] Variable management - [ ] Add/remove variables - [ ] Validate variable names (uppercase, underscores) - [ ] Warn if removing variable used in rules - [ ] Rule overrides - [ ] Open override modal for universal rules - [ ] Save overrides via API - [ ] Save all changes via PUT /api/admin/projects/:id **Files Created:** - `public/admin/project-config.html` - `public/js/admin/project-config.js` **Success Criteria:** - [ ] Can edit all project configuration - [ ] Variables can be added/removed/edited - [ ] Rules are correctly displayed (interpolated) - [ ] Changes save successfully - [ ] UI prevents invalid states (e.g., removing used variables) --- ### 3.7 Testing & Integration (1 hour) **Tasks:** - [ ] Create second test project - [ ] Different variables (e.g., PostgreSQL instead of MongoDB) - [ ] Verify rule interpolation works - [ ] Switch between projects - [ ] Verify rules update correctly - [ ] Verify variables are project-specific - [ ] Test variable changes - [ ] Change a variable value - [ ] Verify interpolated rules update - [ ] Test edge cases - [ ] Variable referenced but not defined (should error) - [ ] Environment variables (${ENV.VAR}) - [ ] Empty project (no custom rules) **Success Criteria:** - [ ] Multi-project system works seamlessly - [ ] Variable interpolation is accurate - [ ] No cross-project data leakage - [ ] Error handling is robust --- ## **PHASE 3.5: Concurrent Session Architecture** (4-6 hours) **Goal:** Enable multiple concurrent Claude Code sessions without state contamination **Context:** Addresses architectural limitation discovered during production testing ([concurrent-session-architecture-limitations.md](/home/theflow/projects/tractatus/docs/research/concurrent-session-architecture-limitations.md)). Current file-based session state (`.claude/*.json`) causes contamination when multiple sessions run concurrently. Solution: Migrate to database-backed session state. ### 3.5.1 Backend - Session Models (1 hour) **Tasks:** - [ ] Create `src/models/Session.model.js` - [ ] Schema (as shown in Database Schema section above) - [ ] Static methods: - [ ] `findActive()` - get all active sessions - [ ] `findByProject(projectId)` - sessions for specific project - [ ] `createWithUUID()` - generate unique session ID (uuid-v4) - [ ] Instance methods: - [ ] `updateMetrics(tokenCount, messageCount)` - update session metrics - [ ] `recordCheckpoint(tokens, pressure)` - record pressure checkpoint - [ ] `complete(reason)` - mark session as completed - [ ] Indexes: - [ ] Unique index on `sessionId` - [ ] Compound index on `projectId` + `status` - [ ] Index on `lastActive` for cleanup - [ ] Create `src/models/SessionState.model.js` - [ ] Schema (as shown in Database Schema section) - [ ] Stores active instructions, validations, errors per session - [ ] Index on `sessionId` (unique) - [ ] Create `src/models/TokenCheckpoint.model.js` - [ ] Schema (as shown in Database Schema section) - [ ] Tracks checkpoints and framework fade detection - [ ] Index on `sessionId` (unique) **Files Created:** - `src/models/Session.model.js` - `src/models/SessionState.model.js` - `src/models/TokenCheckpoint.model.js` **Success Criteria:** - [ ] Models created with proper schemas - [ ] Indexes configured correctly - [ ] Can create/query session documents --- ### 3.5.2 Backend - Session Management Service (1.5 hours) **Tasks:** - [ ] Create `src/services/SessionManager.service.js` - [ ] `initializeSession(projectId, purpose)` β†’ creates new session - [ ] Generate UUID v4 for session ID - [ ] Create Session document - [ ] Create SessionState document - [ ] Create TokenCheckpoint document - [ ] Return session ID - [ ] `getSessionMetrics(sessionId)` β†’ returns current metrics - [ ] Fetch from Session.metrics - [ ] Calculate pressure score - [ ] Return isolated metrics (not contaminated) - [ ] `updateSessionActivity(sessionId, data)` β†’ updates session - [ ] Update tokensUsed, messageCount, errors - [ ] Update lastActive timestamp - [ ] Recalculate pressure level - [ ] `recordPressureCheckpoint(sessionId, tokens, pressure)` β†’ logs checkpoint - [ ] Append to Session.checkpoints - [ ] Update TokenCheckpoint.executedCheckpoints - [ ] Detect framework fade if missed checkpoint - [ ] `addInstruction(sessionId, instruction)` β†’ add to session - [ ] Append to SessionState.activeInstructions - [ ] No file writes (database only) - [ ] `recordValidation(sessionId, validation)` β†’ log validation result - [ ] Append to SessionState.validations - [ ] `completeSession(sessionId, reason)` β†’ close session - [ ] Update Session.status = 'completed' - [ ] Set Session.completedAt - [ ] Archive metrics for analysis - [ ] `cleanupOldSessions(daysOld)` β†’ remove stale sessions - [ ] Find sessions older than N days - [ ] Archive to cold storage (optional) - [ ] Delete from active collections **Files Created:** - `src/services/SessionManager.service.js` **Success Criteria:** - [ ] Can create isolated sessions with unique IDs - [ ] Metrics are session-specific (no contamination) - [ ] Concurrent sessions don't interfere - [ ] Old sessions can be cleaned up --- ### 3.5.3 Scripts - Migrate Session Init to Database (1 hour) **Tasks:** - [ ] Update `scripts/session-init.js` - [ ] Check if session ID exists in `.claude/session-state.json` - [ ] If yes (continued session): Load from MongoDB using existing ID - [ ] If no (new session): Create new session via SessionManager - [ ] Initialize ContextPressureMonitor with session ID - [ ] Update other 4 framework components to use session ID - [ ] **Still write** `.claude/session-state.json` (for backward compatibility) - [ ] Store only sessionId reference - [ ] Actual state lives in MongoDB - [ ] Report session ID to user - [ ] Update `scripts/check-session-pressure.js` - [ ] Read session ID from `.claude/session-state.json` - [ ] Fetch current metrics from MongoDB (not file) - [ ] Calculate pressure using session-specific data - [ ] Update MongoDB (not file) - [ ] Report to user with session ID - [ ] Create `scripts/list-active-sessions.js` (diagnostic tool) - [ ] Query MongoDB for all active sessions - [ ] Display: sessionId, projectId, tokensUsed, pressureLevel, lastActive - [ ] Help user understand concurrent session state **Files Modified:** - `scripts/session-init.js` - `scripts/check-session-pressure.js` **Files Created:** - `scripts/list-active-sessions.js` **Success Criteria:** - [ ] Session initialization uses database - [ ] Backward compatible with existing file structure - [ ] Pressure checks use isolated session metrics - [ ] Can list all active sessions --- ### 3.5.4 Framework Integration - Update Core Services (1 hour) **Tasks:** - [ ] Update `src/services/ContextPressureMonitor.service.js` - [ ] Accept sessionId in `initialize(sessionId)` - [ ] Load metrics from MongoDB instead of file - [ ] Update metrics to MongoDB instead of file - [ ] Calculate pressure using session-specific data only - [ ] Update `src/services/InstructionPersistenceClassifier.service.js` - [ ] Store new instructions in MongoDB SessionState - [ ] **ALSO append** to `.claude/instruction-history.json` (shared state) - [ ] Use file locking to prevent race conditions - [ ] Instruction history is shared across all sessions - [ ] Session state is isolated per session - [ ] Update `src/services/MetacognitiveVerifier.service.js` - [ ] Store verification logs in MongoDB VerificationLog (already done) - [ ] Ensure sessionId is included in all log entries - [ ] Update `src/services/CrossReferenceValidator.service.js` - [ ] No changes needed (reads shared instruction history) - [ ] Update `src/services/BoundaryEnforcer.service.js` - [ ] No changes needed (stateless) **Files Modified:** - `src/services/ContextPressureMonitor.service.js` - `src/services/InstructionPersistenceClassifier.service.js` - `src/services/MetacognitiveVerifier.service.js` **Success Criteria:** - [ ] All 5 framework components session-aware - [ ] Shared state (instruction history) uses file locking - [ ] Isolated state (session metrics) uses MongoDB - [ ] No cross-session contamination --- ### 3.5.5 Testing - Concurrent Session Tests (0.5 hour) **Tasks:** - [ ] Create `tests/integration/concurrent-sessions.test.js` - [ ] **Test: Isolated Metrics** - [ ] Create two sessions (A, B) - [ ] Update A with 50k tokens, 20 messages - [ ] Update B with 100k tokens, 40 messages - [ ] Verify A metrics show 50k tokens (not 150k) - [ ] Verify B metrics show 100k tokens (not 150k) - [ ] **Test: Independent Pressure Calculations** - [ ] Session A at 25% usage β†’ NORMAL pressure - [ ] Session B at 75% usage β†’ HIGH pressure - [ ] Verify A reports NORMAL (not contaminated by B) - [ ] **Test: Shared Instruction History** - [ ] Session A adds instruction "Use MongoDB" - [ ] Session B can see instruction in shared history - [ ] Verify instruction-history.json contains it - [ ] **Test: Session-Specific Validations** - [ ] Session A runs validation - [ ] Session B runs validation - [ ] Verify validations stored separately in MongoDB - [ ] **Test: Concurrent Test Suite Execution** - [ ] Run test suite in Session A - [ ] Simultaneously run test suite in Session B - [ ] Verify no MongoDB duplicate key errors - [ ] Verify tests pass in both sessions **Files Created:** - `tests/integration/concurrent-sessions.test.js` **Success Criteria:** - [ ] All concurrency tests pass - [ ] No metric contamination - [ ] No database conflicts - [ ] Sessions can run simultaneously --- ### 3.5.6 Documentation & Migration Guide (0.5 hour) **Tasks:** - [ ] Create `docs/CONCURRENT_SESSIONS_GUIDE.md` - [ ] Explain the problem (file-based state contamination) - [ ] Explain the solution (database-backed session state) - [ ] Architecture diagram: - [ ] Shared state: instruction-history.json (file-locked) - [ ] Isolated state: MongoDB sessions/sessionState/tokenCheckpoints - [ ] How to use: - [ ] Run `node scripts/session-init.js` as normal - [ ] Session ID auto-generated (or continued) - [ ] Multiple sessions can run concurrently - [ ] Diagnostics: - [ ] `node scripts/list-active-sessions.js` to see all sessions - [ ] How to debug session contamination - [ ] Migration notes: - [ ] Existing `.claude/*.json` files still used - [ ] Backward compatible - [ ] Old sessions auto-migrated on first use - [ ] Update `CLAUDE_Tractatus_Maintenance_Guide.md` - [ ] Add section on concurrent session support - [ ] Document session ID usage - [ ] Update troubleshooting guide **Files Created:** - `docs/CONCURRENT_SESSIONS_GUIDE.md` **Files Modified:** - `CLAUDE_Tractatus_Maintenance_Guide.md` **Success Criteria:** - [ ] Clear documentation of architecture - [ ] Migration guide for users - [ ] Troubleshooting instructions --- ### 3.5.7 Testing & Validation (0.5 hour) **Tasks:** - [ ] Manual testing - [ ] Start two concurrent Claude Code sessions - [ ] Verify each gets unique session ID - [ ] Work in both sessions simultaneously - [ ] Check metrics don't contaminate - [ ] Run `scripts/list-active-sessions.js` - [ ] Production scenario testing - [ ] Run test suite in one session - [ ] Do development work in another session - [ ] Verify no duplicate key errors - [ ] Verify test isolation works - [ ] Framework fade detection - [ ] Simulate missed checkpoint in one session - [ ] Verify only that session reports fade (not others) - [ ] Cleanup testing - [ ] Create old sessions - [ ] Run cleanup script - [ ] Verify only old sessions removed **Success Criteria:** - [ ] Concurrent sessions work flawlessly - [ ] No state contamination observed - [ ] Framework components function correctly - [ ] Cleanup works as expected --- **Phase 3.5 Summary:** This phase solves the **single-tenant architecture limitation** by migrating to database-backed session state while preserving backward compatibility with file-based instruction history. After this phase: βœ… Multiple Claude Code sessions can run concurrently βœ… Each session has isolated metrics (tokens, messages, pressure) βœ… Shared instruction history remains accessible to all sessions βœ… Test suites can run without conflicts βœ… Framework fade detection works per-session βœ… Production + development can run simultaneously **References:** - [Concurrent Session Architecture Limitations](/home/theflow/projects/tractatus/docs/research/concurrent-session-architecture-limitations.md) - Database schemas: `sessions`, `sessionState`, `tokenCheckpoints` (defined above) --- ## **PHASE 4: Rule Validation Engine & Testing** (8-10 hours) **Goal:** Real-time rule validation using Tractatus framework services ### 4.1 Backend - Rule Validator Service (4 hours) **Tasks:** - [ ] Create `src/services/RuleValidator.service.js` - [ ] `validateRule(rule, projectContext)` β†’ comprehensive validation - [ ] **Classification Test** - [ ] Use InstructionPersistenceClassifier.classify() - [ ] Check if classified quadrant matches rule.quadrant - [ ] Check if classified persistence matches rule.persistence - [ ] Verify parameters extracted correctly - [ ] **Parameter Extraction Test** - [ ] Use InstructionPersistenceClassifier._extractParameters() - [ ] Verify expected parameters are found - [ ] Check for false positives (shouldn't extract non-params) - [ ] **Conflict Detection Test** - [ ] Use CrossReferenceValidator.validate() - [ ] Test rule against other active rules - [ ] Check for contradictions - [ ] **Boundary Test** - [ ] Use BoundaryEnforcer.enforce() - [ ] Verify rule doesn't violate Tractatus boundaries - [ ] Check for values decisions (should be flagged) - [ ] **Metacognitive Verification Test** (optional, for complex rules) - [ ] Use MetacognitiveVerifier.verify() - [ ] Check reasoning quality if rule has examples - [ ] Return comprehensive result: ```javascript { passed: true, tests: { classification: { passed: true, expected: { quadrant: 'SYSTEM', persistence: 'HIGH' }, actual: { quadrant: 'SYSTEM', persistence: 'HIGH' }, parameterMatch: true }, parameterExtraction: { passed: true, params: { port: '27017', db_type: 'MongoDB' } }, conflictDetection: { passed: true, conflicts: [] }, boundaryCheck: { passed: true, allowed: true } }, score: 95, // 0-100 warnings: [], errors: [] } ``` - [ ] `validateBatch(rules, projectContext)` β†’ validate multiple rules - [ ] `generateTestCase(rule)` β†’ auto-generate test for rule - [ ] Create instruction object - [ ] Create expected classification - [ ] Create conflicting action (for conflict test) - [ ] Return test case that can be run later **Integration:** - [ ] Use existing 5 core services: - [ ] InstructionPersistenceClassifier - [ ] CrossReferenceValidator - [ ] BoundaryEnforcer - [ ] ContextPressureMonitor (for pressure-aware validation) - [ ] MetacognitiveVerifier **Files Created:** - `src/services/RuleValidator.service.js` **Success Criteria:** - [ ] Validation integrates all 5 services - [ ] Catches classification mismatches - [ ] Detects conflicts between rules - [ ] Identifies boundary violations - [ ] Returns actionable results --- ### 4.2 Backend - Validation API Endpoints (1 hour) **Tasks:** - [ ] Add to `src/controllers/rules.controller.js` - [ ] `POST /api/admin/rules/:id/validate` - Validate single rule - [ ] Query param: `?projectId=tractatus` (optional) - [ ] Runs all validation tests - [ ] Updates rule's `validationStatus` and `validationResults` in DB - [ ] Returns results - [ ] `POST /api/admin/rules/validate-all` - Validate all rules - [ ] Query param: `?projectId=tractatus` (optional) - [ ] Runs validation for all active rules - [ ] Returns summary + individual results - [ ] `POST /api/admin/rules/:id/test` - Run generated test case - [ ] Executes auto-generated test - [ ] Returns pass/fail **Files Modified:** - `src/controllers/rules.controller.js` - `src/routes/rules.routes.js` **Success Criteria:** - [ ] Endpoints work and return validation results - [ ] Validation results are persisted to database - [ ] Can validate single or all rules --- ### 4.3 Frontend - Rule Validation UI (3 hours) **Tasks:** - [ ] Enhance `public/admin/rule-editor.html` - Add Validation Panel - [ ] Add "Validate" tab in right panel - [ ] "Run Validation" button - [ ] Validation results display: - [ ] Overall status: βœ… PASSED | ⚠️ WARNINGS | ❌ FAILED - [ ] Test results (expandable sections): - [ ] βœ… Classification Test - [ ] Expected vs Actual quadrant/persistence - [ ] Parameters extracted - [ ] βœ… Parameter Extraction Test - [ ] List of extracted parameters - [ ] βœ… Conflict Detection Test - [ ] No conflicts found / List conflicts - [ ] βœ… Boundary Check - [ ] Allowed / Blocked (reason) - [ ] Warnings (if any) - [ ] Errors (if any) - [ ] Overall score: 95/100 - [ ] "Fix Issues" button (if failures) - [ ] Opens AI optimizer with context - [ ] Create `public/admin/rule-validator.html` (standalone page) - [ ] Bulk validation interface - [ ] "Validate All Rules" button - [ ] Progress bar during validation - [ ] Results table: - [ ] Rule ID | Rule Text | Status | Score | Actions - [ ] Filter: Show All | Passed | Failed | Warnings - [ ] Can click rule to see details - [ ] Summary statistics: - [ ] Total rules validated - [ ] Passed: X (%) - [ ] Failed: Y (%) - [ ] Average score - [ ] Create `public/js/admin/rule-validator-ui.js` - [ ] Handle single rule validation - [ ] Call API - [ ] Display results in editor panel - [ ] Highlight issues in rule text - [ ] Handle bulk validation - [ ] Call API with progress tracking - [ ] Render results table - [ ] Update statistics - [ ] Interactive result exploration - [ ] Click to expand test details - [ ] Show diff for classification mismatches - [ ] Link to conflicting rules **Files Modified:** - `public/admin/rule-editor.html` **Files Created:** - `public/admin/rule-validator.html` - `public/js/admin/rule-validator-ui.js` **Success Criteria:** - [ ] Can validate rules from editor - [ ] Validation results are clear and actionable - [ ] Bulk validation works efficiently - [ ] Failed rules are easy to identify and fix --- ### 4.4 Integration Tests for Validator (2 hours) **Tasks:** - [ ] Create `tests/integration/rule-validator.test.js` - [ ] Test classification accuracy - [ ] Create rule with known quadrant - [ ] Validate - [ ] Verify classification matches - [ ] Test parameter extraction - [ ] Create rule with variables - [ ] Validate - [ ] Verify parameters extracted - [ ] Test conflict detection - [ ] Create two conflicting rules - [ ] Validate second rule - [ ] Verify conflict detected - [ ] Test boundary enforcement - [ ] Create rule about values decision - [ ] Validate - [ ] Verify boundary violation detected - [ ] Test validation persistence - [ ] Validate rule - [ ] Check DB for validation results - [ ] Verify validationStatus updated **Files Created:** - `tests/integration/rule-validator.test.js` **Success Criteria:** - [ ] All validation tests pass - [ ] Validator correctly identifies issues - [ ] Results are persisted --- ### 4.5 Testing & Polish (1 hour) **Tasks:** - [ ] Manual testing - [ ] Validate a well-formed rule (should pass) - [ ] Validate a poorly-formed rule (should fail) - [ ] Create conflicting rules and validate - [ ] Run bulk validation on all rules - [ ] Edge cases - [ ] Rule with no parameters - [ ] Rule with undefined variables - [ ] Rule that violates boundaries - [ ] Performance testing - [ ] Validate 100 rules - should complete in reasonable time - [ ] UI polish - [ ] Loading states during validation - [ ] Clear error messages - [ ] Success animations **Success Criteria:** - [ ] Validation is reliable and accurate - [ ] No performance issues - [ ] UI is polished and intuitive --- ## **PHASE 5: Project Templates & Cloning** (6-8 hours) **Goal:** Rapid project creation via templates and cloning ### 5.1 Backend - Template Model & Service (2 hours) **Tasks:** - [ ] Create `src/models/Template.model.js` - [ ] Schema (as shown in Database Schema section) - [ ] Static methods: - [ ] `findByCategory(category)` - [ ] `findPopular()` (most used) - [ ] Create `src/services/TemplateManager.service.js` - [ ] `createProjectFromTemplate(templateId, projectData)` β†’ creates project - [ ] Fetch template - [ ] Merge template defaults with user overrides - [ ] Create project in database - [ ] Link universal rules - [ ] Add template-suggested rules - [ ] Return created project - [ ] `cloneProject(sourceProjectId, newProjectData)` β†’ clones existing project - [ ] Fetch source project - [ ] Copy configuration - [ ] Copy custom rules - [ ] Apply variable overrides - [ ] Create new project - [ ] Return created project **Files Created:** - `src/models/Template.model.js` - `src/services/TemplateManager.service.js` **Success Criteria:** - [ ] Can create projects from templates - [ ] Can clone existing projects - [ ] New projects have correct rules and variables --- ### 5.2 Backend - Template & Cloning API (1 hour) **Tasks:** - [ ] Create `src/controllers/templates.controller.js` - [ ] `GET /api/admin/templates` - List all templates - [ ] `GET /api/admin/templates/:id` - Get template details - [ ] `POST /api/admin/projects/from-template` - Create from template - [ ] Body: `{ templateId, projectName, variables: {...} }` - [ ] `POST /api/admin/projects/:id/clone` - Clone project - [ ] Body: `{ newProjectName, variableOverrides: {...} }` - [ ] Create `src/routes/templates.routes.js` **Files Created:** - `src/controllers/templates.controller.js` - `src/routes/templates.routes.js` **Files Modified:** - `src/routes/index.js` **Success Criteria:** - [ ] Endpoints work and create projects - [ ] Template-based creation applies defaults - [ ] Cloning preserves configuration --- ### 5.3 Backend - Seed Templates (1 hour) **Tasks:** - [ ] Create `scripts/seed-templates.js` - [ ] Create "Node.js + Express + MongoDB" template - [ ] Matches Tractatus stack - [ ] Links 12 universal rules - [ ] Includes Node.js-specific suggested rules - [ ] Create "React + Firebase" template (for future) - [ ] Create "Python + FastAPI + PostgreSQL" template (for future) - [ ] Run seed script - [ ] Verify templates created - [ ] Test creating project from template **Files Created:** - `scripts/seed-templates.js` **Success Criteria:** - [ ] Templates exist in database - [ ] Can create project from template successfully --- ### 5.4 Frontend - New Project Wizard (2.5 hours) **Tasks:** - [ ] Create `public/admin/project-wizard.html` (modal/multi-step form) - [ ] **Step 1: Choose Source** - [ ] Radio buttons: - [ ] πŸ“‹ From Template - [ ] πŸ“‘ Clone Existing Project - [ ] ✨ Start from Scratch - [ ] **Step 2a: Select Template** (if "From Template") - [ ] Grid of template cards - [ ] Each shows: Name, Description, Tech stack, Rule count - [ ] Click to select - [ ] **Step 2b: Select Project** (if "Clone") - [ ] Dropdown of existing projects - [ ] **Step 3: Project Details** - [ ] Project Name (required) - [ ] Project Slug (auto-generated from name, editable) - [ ] Description - [ ] Production Domain - [ ] **Step 4: Infrastructure** (pre-filled from template/source) - [ ] VPS Host - [ ] Database Type & Port - [ ] SSH User & Key - [ ] Deploy Path - [ ] All editable - [ ] **Step 5: Variables** (pre-filled, can override) - [ ] List of variables from template - [ ] Can edit values - [ ] Preview how rules will look with these values - [ ] **Step 6: Review & Create** - [ ] Summary: - [ ] Project details - [ ] X universal rules will be inherited - [ ] Y template rules will be added - [ ] Infrastructure summary - [ ] "Create Project" button - [ ] Create `public/js/admin/project-wizard.js` - [ ] Multi-step form navigation - [ ] Load templates from API - [ ] Load projects for cloning - [ ] Auto-generate slug from name - [ ] Variable preview/interpolation - [ ] Submit to API - [ ] `/api/admin/projects/from-template` or - [ ] `/api/admin/projects/:id/clone` or - [ ] `/api/admin/projects` (from scratch) - [ ] Show progress/success - [ ] Redirect to new project config on success **Files Created:** - `public/admin/project-wizard.html` - `public/js/admin/project-wizard.js` **Success Criteria:** - [ ] Wizard guides user through project creation - [ ] Can create from template - [ ] Can clone existing project - [ ] Can start from scratch - [ ] Preview shows interpolated rules - [ ] Successfully creates project --- ### 5.5 Frontend - Template Library Page (Optional) (1 hour) **Tasks:** - [ ] Create `public/admin/project-templates.html` - [ ] Browse all templates - [ ] Filter by category - [ ] View template details - [ ] "Use Template" button β†’ opens wizard - [ ] Create `public/js/admin/template-selector.js` - [ ] Fetch templates - [ ] Render cards - [ ] Filter logic - [ ] Launch wizard with pre-selected template **Files Created:** - `public/admin/project-templates.html` - `public/js/admin/template-selector.js` **Success Criteria:** - [ ] Easy to browse templates - [ ] Can launch wizard from template page --- ### 5.6 Testing & Validation (0.5 hour) **Tasks:** - [ ] Test template creation - [ ] Create project from "Node.js + Express + MongoDB" template - [ ] Verify all defaults applied - [ ] Verify rules linked correctly - [ ] Test cloning - [ ] Clone Tractatus project - [ ] Change variables - [ ] Verify rules interpolated with new variables - [ ] Test from-scratch - [ ] Create project without template - [ ] Verify basic setup works - [ ] Edge cases - [ ] Template with missing rules - [ ] Cloning non-existent project - [ ] Invalid variable names **Success Criteria:** - [ ] All creation methods work - [ ] Projects are correctly configured - [ ] No data corruption --- ## **PHASE 6: Polish, Documentation & Deployment** (4-6 hours) **Goal:** Production-ready system with documentation ### 6.1 UI/UX Polish (2 hours) **Tasks:** - [ ] **Consistent Styling** - [ ] Ensure all pages use same Tailwind theme - [ ] Consistent button styles - [ ] Consistent form styles - [ ] Consistent card/panel styles - [ ] **Responsive Design** - [ ] Test all pages on mobile (320px+) - [ ] Test on tablet (768px+) - [ ] Adjust layouts for small screens - [ ] **Loading States** - [ ] Spinners for API calls - [ ] Skeleton loaders for lists - [ ] Progress bars for long operations - [ ] **Error Handling** - [ ] Toast notifications for errors - [ ] Inline validation messages - [ ] Clear error states - [ ] **Accessibility** - [ ] Keyboard navigation - [ ] ARIA labels - [ ] Focus management - [ ] Color contrast (WCAG AA) - [ ] **Animations** - [ ] Smooth transitions - [ ] Success animations (checkmarks, etc.) - [ ] Micro-interactions **Success Criteria:** - [ ] Professional, polished appearance - [ ] Works on all screen sizes - [ ] Accessible to all users - [ ] Smooth, delightful interactions --- ### 6.2 Documentation (2 hours) **Tasks:** - [ ] Create `docs/API_REFERENCE.md` - [ ] Document all API endpoints - [ ] Request/response examples - [ ] Error codes - [ ] Create `docs/RULE_OPTIMIZATION_GUIDE.md` - [ ] How clarity scoring works - [ ] How to write high-quality rules - [ ] Best practices - [ ] Create `docs/PROJECT_TEMPLATES_GUIDE.md` - [ ] How to create custom templates - [ ] Template schema reference - [ ] Create `docs/USER_GUIDE.md` - [ ] Getting started - [ ] Managing rules - [ ] Managing projects - [ ] CLAUDE.md migration - [ ] Screenshots/videos - [ ] Update `README.md` - [ ] Feature overview - [ ] Installation instructions - [ ] Quick start guide - [ ] Link to full documentation - [ ] Code comments - [ ] Add JSDoc comments to all public functions - [ ] Explain complex algorithms **Files Created:** - `docs/API_REFERENCE.md` - `docs/RULE_OPTIMIZATION_GUIDE.md` - `docs/PROJECT_TEMPLATES_GUIDE.md` - `docs/USER_GUIDE.md` **Files Modified:** - `README.md` **Success Criteria:** - [ ] Comprehensive documentation - [ ] Easy to understand - [ ] Code is well-commented --- ### 6.3 Security Audit (1 hour) **Tasks:** - [ ] **Authentication** - [ ] Verify all admin endpoints require auth - [ ] Check for auth bypasses - [ ] **Input Validation** - [ ] Verify all user inputs are validated - [ ] Check for SQL injection (N/A for MongoDB, but check NoSQL injection) - [ ] Check for XSS vulnerabilities - [ ] **CORS** - [ ] Verify CORS is properly configured - [ ] **Environment Variables** - [ ] Ensure sensitive data in .env, not codebase - [ ] Check .env.example is up to date - [ ] **Rate Limiting** - [ ] Add rate limiting to API endpoints - [ ] **HTTPS** - [ ] Ensure production uses HTTPS - [ ] No mixed content warnings **Success Criteria:** - [ ] No security vulnerabilities found - [ ] All sensitive data protected - [ ] Production-ready security posture --- ### 6.4 Performance Optimization (0.5 hour) **Tasks:** - [ ] **Database** - [ ] Verify all necessary indexes exist - [ ] Check slow queries - [ ] **Frontend** - [ ] Minify JavaScript - [ ] Compress images - [ ] Lazy load large lists - [ ] **API** - [ ] Add caching where appropriate - [ ] Optimize N+1 queries **Success Criteria:** - [ ] Pages load quickly - [ ] No performance bottlenecks - [ ] Database queries are optimized --- ### 6.5 Deployment (0.5 hour) **Tasks:** - [ ] **Database Migration** - [ ] Run all migration scripts on production DB - [ ] Verify data integrity - [ ] **Deploy Code** - [ ] Push to production server - [ ] Restart services - [ ] **Smoke Tests** - [ ] Login works - [ ] Can view rules - [ ] Can create rule - [ ] Can switch projects - [ ] No console errors - [ ] **Monitoring** - [ ] Set up error monitoring (Sentry, etc.) - [ ] Set up uptime monitoring **Success Criteria:** - [ ] System deployed to production - [ ] All features work in production - [ ] Monitoring is active --- ## πŸ“Š Summary ### Total Estimated Time: **46-58 hours** | Phase | Estimated Time | Key Deliverables | |-------|----------------|------------------| | Phase 1: Core Rule Manager | 8-10 hours | Rule CRUD, dashboard, editor | | Phase 2: AI Optimizer | 10-12 hours | Rule optimization, CLAUDE.md migration | | Phase 3: Multi-Project | 10-12 hours | Project management, variable interpolation | | Phase 4: Validation Engine | 8-10 hours | Real-time rule validation | | Phase 5: Templates & Cloning | 6-8 hours | Project templates, cloning | | Phase 6: Polish & Deployment | 4-6 hours | Documentation, security, deployment | ### Milestones **Milestone 1** (After Phase 1): Basic rule management working **Milestone 2** (After Phase 2): AI-powered optimization and CLAUDE.md migration **Milestone 3** (After Phase 3): Multi-project system operational **Milestone 4** (After Phase 4): Validation engine integrated **Milestone 5** (After Phase 5): Template system complete **Milestone 6** (After Phase 6): **Production-ready, world-class system** --- ## 🎯 Success Criteria **Product is ready when:** - [ ] All 18+ rules managed via UI - [ ] CLAUDE.md successfully migrated to rules - [ ] Can manage multiple projects (Tractatus + others) - [ ] Rules validated against framework in real-time - [ ] Can create projects from templates in <2 minutes - [ ] AI optimizer improves rule clarity measurably - [ ] Documentation is comprehensive - [ ] No security vulnerabilities - [ ] Deployed to production and stable **Commercialization Ready When:** - [ ] System is polished and professional - [ ] Documentation suitable for external users - [ ] Multi-tenant support (user authentication/authorization) - [ ] Pricing/billing system (if SaaS) - [ ] Marketing materials prepared - [ ] Support system in place --- ## 🚦 Next Steps **Immediate Actions:** 1. **Review this plan** - Confirm approach and priorities 2. **Fix MongoDB persistence issues** - Resolve 3 failing integration tests (quick win) 3. **Begin Phase 1** - Start with backend rule model enhancements 4. **Set up task tracking** - Use todo list to track granular progress **Questions to Resolve:** 1. Should we proceed with all phases, or focus on subset first? 2. Any features to add/remove/modify? 3. Priority order - does this sequence make sense? 4. Timeline - is this realistic for your schedule? --- Ready to start building? πŸš€