tractatus/docs/planning/PHASE_3_SUMMARY.md
TheFlow c96ad31046 feat: implement Rule Manager and Project Manager admin systems
Major Features:
- Multi-project governance with Rule Manager web UI
- Project Manager for organizing governance across projects
- Variable substitution system (${VAR_NAME} in rules)
- Claude.md analyzer for instruction extraction
- Rule quality scoring and optimization

Admin UI Components:
- /admin/rule-manager.html - Full-featured rule management interface
- /admin/project-manager.html - Multi-project administration
- /admin/claude-md-migrator.html - Import rules from Claude.md files
- Dashboard enhancements for governance analytics

Backend Implementation:
- Controllers: projects, rules, variables
- Models: Project, VariableValue, enhanced GovernanceRule
- Routes: /api/projects, /api/rules with full CRUD
- Services: ClaudeMdAnalyzer, RuleOptimizer, VariableSubstitution
- Utilities: mongoose helpers

Documentation:
- User guides for Rule Manager and Projects
- Complete API documentation (PROJECTS_API, RULES_API)
- Phase 3 planning and architecture diagrams
- Test results and error analysis
- Coding best practices summary

Testing & Scripts:
- Integration tests for projects API
- Unit tests for variable substitution
- Database migration scripts
- Seed data generation
- Test token generator

Key Capabilities:
 UNIVERSAL scope rules apply across all projects
 PROJECT_SPECIFIC rules override for individual projects
 Variable substitution per-project (e.g., ${DB_PORT} → 27017)
 Real-time validation and quality scoring
 Advanced filtering and search
 Import from existing Claude.md files

Technical Details:
- MongoDB-backed governance persistence
- RESTful API with Express
- JWT authentication for admin endpoints
- CSP-compliant frontend (no inline handlers)
- Responsive Tailwind UI

This implements Phase 3 architecture as documented in planning docs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 17:16:51 +13:00

7.4 KiB

Phase 3: Project Context Awareness - Quick Reference

Status: PLANNING → READY TO START Estimated Duration: 3-4 sessions (12-16 hours)


🎯 Goal

Transform Tractatus from single-project to multi-project governance system with context-aware variable substitution.


📊 Architecture at a Glance

USER ACTION:                  SYSTEM RESPONSE:
┌─────────────────┐          ┌────────────────────────────────┐
│ Select Project  │          │ 1. Load applicable rules       │
│ "tractatus"     │──────────>│ 2. Fetch variable values       │
└─────────────────┘          │ 3. Substitute ${VAR} → value   │
                             │ 4. Display rendered text       │
                             └────────────────────────────────┘

BEFORE (Template):
"MongoDB database MUST be named ${DB_NAME} in ${ENVIRONMENT}"

AFTER (Rendered for "tractatus"):
"MongoDB database MUST be named tractatus_dev in development"

AFTER (Rendered for "family-history"):
"MongoDB database MUST be named family_history in production"

🏗️ What We're Building

Backend (Session 1-2)

Models

  • Project - Store project metadata (id, name, tech stack)
  • VariableValue - Store variable values per project

Services

  • VariableSubstitution - Replace ${VAR} with actual values

APIs

  • Projects API - CRUD for projects
  • Variables API - CRUD for variable values
  • Enhanced Rules API - Return rules with substituted values

Frontend (Session 3)

Components

  • Project Selector - Dropdown in navbar
  • Project Manager - Table view of all projects
  • Project Editor - Form for project details + variable values
  • Variable Editor - Modal for editing individual variables

Enhancements

  • Rule Manager - Show rendered text for selected project

📋 Task Breakdown (4 Sessions)

Session 1: Backend Foundation (3-4 hours)

1. Create Project.model.js
2. Create VariableValue.model.js
3. Create VariableSubstitution.service.js
4. Write unit tests for substitution logic

Session 2: Backend APIs (3-4 hours)

5. Create projects.controller.js + routes
6. Create variables.controller.js + routes
7. Enhance rules.controller.js (add project context)
8. Write API integration tests

Session 3: Frontend UI (4-5 hours)

9. Create project-manager.html
10. Create project-editor.js
11. Create project-selector.js component
12. Enhance rule-manager.js (show rendered text)
13. Create variable-editor.js modal

Session 4: Testing & Docs (2-3 hours)

14. Create seed-projects.js (sample data)
15. Frontend integration testing
16. Write docs/api/PROJECTS_API.md
17. Write docs/USER_GUIDE_PROJECTS.md

🔑 Key Features

1. Variable Substitution

// Template Rule
text: "Use port ${APP_PORT} for ${APP_NAME}"
variables: ["APP_PORT", "APP_NAME"]

// Project: tractatus
variables: {
  APP_PORT: "9000",
  APP_NAME: "Tractatus"
}

// Rendered
"Use port 9000 for Tractatus"

2. Project Filtering

// Rule with scope
{
  scope: "PROJECT_SPECIFIC",
  applicableProjects: ["tractatus", "family-history"]
}

// When project="tractatus" selected
// Show: UNIVERSAL rules + rules with "tractatus" in applicableProjects

3. Context-Aware Display

┌─────────────────────────────────────────────────┐
│ Rule Manager          [Project: Tractatus ▼]   │
├─────────────────────────────────────────────────┤
│ inst_019 | SYSTEM | HIGH                        │
│                                                  │
│ Rendered (for Tractatus):                       │
│ MongoDB database MUST be named tractatus_dev    │
│                                                  │
│ Template: ...${DB_NAME}...                      │
│ Variables: DB_NAME=tractatus_dev                │
└─────────────────────────────────────────────────┘

💾 Database Schema

Project

{
  id: 'tractatus',                    // PK, unique
  name: 'Tractatus Framework',
  description: 'Agentic governance framework',
  techStack: {
    language: 'JavaScript',
    framework: 'Node.js/Express',
    database: 'MongoDB',
    frontend: 'Vanilla JS'
  },
  active: true
}

VariableValue

{
  projectId: 'tractatus',             // FK to Project.id
  variableName: 'DB_NAME',            // Variable name
  value: 'tractatus_dev',             // Actual value
  description: 'Development database name',
  category: 'database'                // database/config/path/url
}

Compound Unique Index: (projectId, variableName)


🔄 Data Flow Example

Creating a Project with Variables

# 1. Create project
POST /api/admin/projects
{
  "id": "tractatus",
  "name": "Tractatus Framework",
  "techStack": { "database": "MongoDB" }
}

# 2. Add variable values
POST /api/admin/projects/tractatus/variables
{
  "variableName": "DB_NAME",
  "value": "tractatus_dev",
  "category": "database"
}

# 3. Get rules with substitution
GET /api/admin/rules?project=tractatus

# Response includes rendered text
{
  "rules": [{
    "id": "inst_019",
    "text": "...${DB_NAME}...",
    "renderedText": "...tractatus_dev...",
    "variables": [{"name": "DB_NAME", "value": "tractatus_dev"}]
  }]
}

Success Criteria

Functional

  • Create/edit/delete projects
  • Set variable values per project
  • View rules with substituted values
  • Switch between projects
  • Detect missing variables

Technical

  • Substitution performance < 50ms
  • All APIs tested (integration)
  • Frontend components functional
  • Database indexes optimized

UX

  • Intuitive project switching
  • Clear template vs rendered distinction
  • Easy variable editing
  • Helpful error messages

🚀 Getting Started

Session 1 Tasks

  1. Create src/models/Project.model.js
  2. Create src/models/VariableValue.model.js
  3. Create src/services/VariableSubstitution.service.js
  4. Write tests: tests/unit/VariableSubstitution.test.js

Start Command:

# Create model files
touch src/models/Project.model.js
touch src/models/VariableValue.model.js
touch src/services/VariableSubstitution.service.js
touch tests/unit/VariableSubstitution.test.js

📚 Reference Documents

  • Full Plan: docs/planning/PHASE_3_PROJECT_CONTEXT_PLAN.md
  • Phase 1 Complete: docs/USER_GUIDE_RULE_MANAGER.md
  • Phase 2 Complete: docs/testing/PHASE_2_TEST_RESULTS.md
  • Coding Best Practices: docs/governance/CODING_BEST_PRACTICES_SUMMARY.md

🎯 Next Actions

Ready to start? Say:

  • "Start Phase 3 Session 1" - Begin backend foundation
  • "Show me the full plan" - Review detailed plan
  • "Modify the plan" - Adjust scope or approach

Plan Status: APPROVED - READY TO BUILD Est. Completion: 3-4 sessions from now Dependencies: None (Phase 1 & 2 complete)