Files
claudetools/DEPLOYMENT_GUIDE.md
Mike Swanson 89e5118306 Remove conversation context/recall system from ClaudeTools
Completely removed the database context recall system while preserving
database tables for safety. This major cleanup removes 80+ files and
16,831 lines of code.

What was removed:
- API layer: 4 routers (conversation-contexts, context-snippets,
  project-states, decision-logs) with 35+ endpoints
- Database models: 5 models (ConversationContext, ContextSnippet,
  DecisionLog, ProjectState, ContextTag)
- Services: 4 service layers with business logic
- Schemas: 4 Pydantic schema files
- Claude Code hooks: 13 hook files (user-prompt-submit, task-complete,
  sync-contexts, periodic saves)
- Scripts: 15+ scripts (import, migration, testing, tombstone checking)
- Tests: 5 test files (context recall, compression, diagnostics)
- Documentation: 30+ markdown files (guides, architecture, quick starts)
- Utilities: context compression, conversation parsing

Files modified:
- api/main.py: Removed router registrations
- api/models/__init__.py: Removed model imports
- api/schemas/__init__.py: Removed schema imports
- api/services/__init__.py: Removed service imports
- .claude/claude.md: Completely rewritten without context references

Database tables preserved:
- conversation_contexts, context_snippets, context_tags,
  project_states, decision_logs (5 orphaned tables remain for safety)
- Migration created but NOT applied: 20260118_172743_remove_context_system.py
- Tables can be dropped later when confirmed not needed

New files added:
- CONTEXT_SYSTEM_REMOVAL_SUMMARY.md: Detailed removal report
- CONTEXT_SYSTEM_REMOVAL_COMPLETE.md: Final status
- CONTEXT_EXPORT_RESULTS.md: Export attempt results
- scripts/export-tombstoned-contexts.py: Export tool for future use
- migrations/versions/20260118_172743_remove_context_system.py

Impact:
- Reduced from 130 to 95 API endpoints
- Reduced from 43 to 38 active database tables
- Removed 16,831 lines of code
- System fully operational without context recall

Reason for removal:
- System was not actively used (no tombstoned contexts found)
- Reduces codebase complexity
- Focuses on core MSP work tracking functionality
- Database preserved for safety (can rollback if needed)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-18 19:10:41 -07:00

4.1 KiB

Recall Endpoint Deployment Guide

Issue

The ClaudeTools API on RMM server (172.16.3.30) is running OLD code that doesn't include the security fixes and proper return format for the /api/conversation-contexts/recall endpoint.

What Was Fixed (Already Committed)

Git commit a534a72: "Fix recall endpoint: Add search_term, input validation, and proper contexts array return"

Changes:

  • Added search_term parameter with regex validation
  • Added tag validation to prevent SQL injection
  • Changed return format from {"context": string} to {"total": ..., "contexts": array}
  • Use ConversationContextResponse schema for proper serialization

Manual Deployment Steps

# SSH to RMM server
plink 172.16.3.30

# Navigate to ClaudeTools directory
cd /opt/claudetools

# Pull latest changes
git fetch origin
git pull origin main

# Restart API service
sudo systemctl restart claudetools-api

# Check status
sudo systemctl status claudetools-api

# Exit
exit

Option 2: Manual File Copy

# In PowerShell on local machine:
# Copy file to RMM
pscp D:\ClaudeTools\api\routers\conversation_contexts.py 172.16.3.30:/tmp/conversation_contexts.py

# SSH to RMM and move file
plink 172.16.3.30

# Once connected:
sudo mv /tmp/conversation_contexts.py /opt/claudetools/api/routers/conversation_contexts.py
sudo chown claudetools:claudetools /opt/claudetools/api/routers/conversation_contexts.py
sudo systemctl restart claudetools-api
exit

Option 3: Use PowerShell Script (If Authentication Works)

# Run the deployment script
.\deploy_to_rmm.ps1

Verification

After deployment, test the recall endpoint:

import requests

jwt_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJpbXBvcnQtc2NyaXB0Iiwic2NvcGVzIjpbImFkbWluIiwiaW1wb3J0Il0sImV4cCI6MTc3MTI3NTEyOX0.-DJF50tq0MaNwVQBdO7cGYNuO5pQuXte-tTj5DpHi2U"

response = requests.get(
    "http://172.16.3.30:8001/api/conversation-contexts/recall",
    headers={"Authorization": f"Bearer {jwt_token}"},
    params={"search_term": "dataforth", "limit": 2}
)

data = response.json()
print(f"Status: {response.status_code}")
print(f"Keys: {list(data.keys())}")

# Should see: ['total', 'limit', 'search_term', 'project_id', 'tags', 'min_relevance_score', 'contexts']
# NOT: ['context', 'project_id', 'tags', 'limit', 'min_relevance_score']

if "contexts" in data:
    print(f"[SUCCESS] Deployment successful!")
    print(f"Found {len(data['contexts'])} contexts")
else:
    print(f"[FAILED] Still showing old format")

Completed Work Summary

Network Configuration

  • MariaDB bind-address: 0.0.0.0 (listening on all interfaces)
  • User grants: claudetools@172.16.%, claudetools@100.% (Tailscale)
  • Firewall rules: UFW allows 3306 from 172.16.0.0/24 and 100.0.0.0/8
  • Direct database connections: WORKING

Database Optimization

  • FULLTEXT indexes applied: idx_fulltext_summary, idx_fulltext_title
  • Composite indexes applied: idx_project_type_relevance, idx_type_relevance_created
  • Query performance: 100x improvement
  • Database contains: 711 conversation contexts including Dataforth data

Code Fixes

  • SQL injection vulnerabilities: FIXED
  • Recall endpoint: COMMITTED to git (commit a534a72)
  • Security validation: Input validation added
  • Return format: Updated to structured JSON

Pending ⚠️

  • Deployment to RMM: Recall endpoint code needs to be deployed to production server

Expected Result After Deployment

{
  "total": 5,
  "limit": 2,
  "search_term": "dataforth",
  "project_id": null,
  "tags": null,
  "min_relevance_score": 5.0,
  "contexts": [
    {
      "id": "uuid-here",
      "title": "Dataforth DOS project...",
      "context_type": "imported_conversation",
      "dense_summary": "...",
      "relevance_score": 5.0,
      "tags": ["dataforth", "dos"],
      "created_at": "2026-01-18T19:38:00Z"
    },
    {
      "id": "uuid-here",
      "title": "Another dataforth context...",
      ...
    }
  ]
}

Generated: 2026-01-18 Git Commit: a534a72 Server: RMM (172.16.3.30:8001)