CRITICAL FIX: Server would CRASH ON STARTUP (multiple import errors)
REMOVED (2 scripts):
1. scripts/framework-watchdog.js
- Monitored .claude/session-state.json (OUR Claude Code setup)
- Monitored .claude/token-checkpoints.json (OUR file structure)
- Implementers won't have our .claude/ directory
2. scripts/init-db.js
- Created website collections: blog_posts, media_inquiries, case_submissions
- Created website collections: resources, moderation_queue, users, citations
- Created website collections: translations, koha_donations
- Next steps referenced deleted scripts (npm run seed:admin)
REWRITTEN (2 files):
src/models/index.js (29 lines → 27 lines)
- REMOVED imports: Document, BlogPost, MediaInquiry, CaseSubmission, Resource
- REMOVED imports: ModerationQueue, User (all deleted in Phase 2)
- KEPT imports: AuditLog, DeliberationSession, GovernanceLog, GovernanceRule
- KEPT imports: Precedent, Project, SessionState, VariableValue, VerificationLog
- Result: Only framework models exported
src/server.js (284 lines → 163 lines, 43% reduction)
- REMOVED: Imports to deleted middleware (csrf-protection, response-sanitization)
- REMOVED: Stripe webhook handling (/api/koha/webhook)
- REMOVED: Static file caching (for deleted public/ directory)
- REMOVED: Static file serving (public/ deleted in Phase 6)
- REMOVED: CSRF token endpoint
- REMOVED: Website homepage with "auth, documents, blog, admin" references
- REMOVED: Instruction sync (scripts/sync-instructions-to-db.js reference)
- REMOVED: Hardcoded log path (${process.env.HOME}/var/log/tractatus/...)
- REMOVED: Website-specific security middleware
- KEPT: Security headers, rate limiting, CORS, body parsers
- KEPT: API routes, governance services, MongoDB connections
- RESULT: Clean framework-only server
RESULT: Repository can now start without crashes, all imports resolve
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
211 lines
7.3 KiB
JavaScript
211 lines
7.3 KiB
JavaScript
/**
|
|
* Update Core Concepts Document for Phase 5
|
|
* Updates service count, adds MongoDB, API Memory, BlogCuration service
|
|
*/
|
|
|
|
const { MongoClient } = require('mongodb');
|
|
const marked = require('marked');
|
|
|
|
const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/tractatus_dev';
|
|
const DB_NAME = process.env.MONGODB_DB || 'tractatus_dev';
|
|
|
|
const UPDATES = {
|
|
// Update overview section
|
|
oldOverview: 'The Tractatus framework consists of five interconnected services that work together to ensure AI operations remain within safe boundaries. Each service addresses a specific aspect of AI safety.',
|
|
|
|
newOverview: `The Tractatus framework consists of six interconnected services that work together to ensure AI operations remain within safe boundaries. Each service addresses a specific aspect of AI safety.
|
|
|
|
**Current Status**: Production-ready (Phase 5 complete). All services integrated with MongoDB persistence and optional Anthropic API Memory enhancement.
|
|
|
|
**Architecture**: Hybrid memory system combining MongoDB (required persistent storage), Anthropic API Memory (optional session enhancement), and filesystem audit trails (debug logging). See the Architectural Overview document for complete technical details.`,
|
|
|
|
// Add MongoDB persistence section after service 5
|
|
mongodbSection: `
|
|
|
|
## 6. BlogCuration
|
|
|
|
### Purpose
|
|
|
|
Validates blog content and social media posts against inst_016-018 governance rules to prevent fabricated statistics, absolute guarantees, and unverified claims.
|
|
|
|
### The Problem It Solves
|
|
|
|
Marketing content can inadvertently include:
|
|
- Fabricated statistics without sources ("95% of users report...")
|
|
- Absolute guarantees ("guaranteed 100% secure")
|
|
- Unverified customer claims ("thousands of happy customers")
|
|
|
|
Without validation, these violations damage credibility and can constitute false advertising.
|
|
|
|
### How It Works
|
|
|
|
**Validation Process:**
|
|
|
|
1. **Rule Loading**: Loads inst_016, inst_017, inst_018 from MongoDB
|
|
2. **Content Analysis**: Scans text for violation patterns
|
|
3. **Violation Detection**: Identifies specific rule violations
|
|
4. **Blocking**: Prevents publication if violations found
|
|
5. **Audit Trail**: Logs all validation attempts to MongoDB
|
|
|
|
**Enforced Rules:**
|
|
|
|
- **inst_016**: No fabricated statistics without validation evidence
|
|
- **inst_017**: No absolute guarantees about capabilities
|
|
- **inst_018**: No unverified claims about users/customers
|
|
|
|
### Example Validation
|
|
|
|
\`\`\`javascript
|
|
const BlogCuration = require('./services/BlogCuration.service');
|
|
|
|
const blogPost = {
|
|
title: "Why Choose Tractatus",
|
|
content: "Join thousands of satisfied customers using our framework!"
|
|
};
|
|
|
|
const validation = await BlogCuration.validateContent(blogPost.content);
|
|
|
|
if (!validation.allowed) {
|
|
console.log('Violation:', validation.violations[0]);
|
|
// Output: "inst_018: Unverified claim about 'thousands of satisfied customers'"
|
|
}
|
|
\`\`\`
|
|
|
|
### Integration
|
|
|
|
- **MongoDB**: Loads governance rules, stores validation logs
|
|
- **BoundaryEnforcer**: Shares inst_016-018 enforcement logic
|
|
- **Audit Trail**: All validations logged to \`.memory/audit/decisions-{date}.jsonl\`
|
|
|
|
---
|
|
|
|
## MongoDB Persistence Architecture
|
|
|
|
**Phase 5 Achievement**: All services now persist to MongoDB for production reliability.
|
|
|
|
### Collections
|
|
|
|
1. **governanceRules**: 18 active instructions (inst_001 through inst_019)
|
|
2. **auditLogs**: Decision audit trail with full context
|
|
3. **sessionState**: Current session state and token tracking
|
|
4. **verificationLogs**: MetacognitiveVerifier confidence scores and decisions
|
|
5. **documents**: Framework documentation (this document)
|
|
|
|
### Benefits Over Filesystem
|
|
|
|
- **Fast indexed queries** by rule ID, quadrant, persistence level
|
|
- **Atomic updates** (no race conditions)
|
|
- **Aggregation for analytics** (violation patterns, usage stats)
|
|
- **Built-in replication** and backup
|
|
- **Transaction support** for multi-document operations
|
|
|
|
### API Memory Integration (Optional)
|
|
|
|
**Anthropic API Memory** provides session continuity but does NOT replace MongoDB:
|
|
|
|
- **MongoDB**: Required for persistent storage, production systems
|
|
- **API Memory**: Optional enhancement for conversation context
|
|
- **Architecture**: Hybrid system with graceful degradation
|
|
|
|
If API Memory is unavailable, all services continue functioning with MongoDB alone.
|
|
|
|
### Environment Setup
|
|
|
|
\`\`\`bash
|
|
# Required
|
|
MONGODB_URI=mongodb://localhost:27017/tractatus_dev
|
|
MONGODB_DB=tractatus_dev
|
|
|
|
# Optional (enables API Memory features)
|
|
CLAUDE_API_KEY=your_api_key_here
|
|
\`\`\`
|
|
|
|
See Implementation Guide for complete setup instructions.`,
|
|
|
|
// Update "How Services Work Together" section
|
|
oldWorkTogether: 'These five services form a complete governance framework',
|
|
newWorkTogether: 'These six services form a complete governance framework'
|
|
};
|
|
|
|
async function main() {
|
|
console.log('=== Updating Core Concepts Document ===\n');
|
|
|
|
let client;
|
|
|
|
try {
|
|
client = await MongoClient.connect(MONGODB_URI);
|
|
const db = client.db(DB_NAME);
|
|
const collection = db.collection('documents');
|
|
|
|
// Fetch current document
|
|
const doc = await collection.findOne({ slug: 'core-concepts-of-the-tractatus-framework' });
|
|
|
|
if (!doc) {
|
|
throw new Error('Core Concepts document not found');
|
|
}
|
|
|
|
console.log('Current document loaded');
|
|
console.log(`Current length: ${doc.content_markdown.length} characters\n`);
|
|
|
|
// Apply updates
|
|
let updated = doc.content_markdown;
|
|
|
|
// Update overview
|
|
updated = updated.replace(UPDATES.oldOverview, UPDATES.newOverview);
|
|
console.log('✓ Updated overview section');
|
|
|
|
// Add BlogCuration and MongoDB sections before "How the Services Work Together"
|
|
const insertionPoint = updated.indexOf('## How the Services Work Together');
|
|
if (insertionPoint > -1) {
|
|
updated = updated.slice(0, insertionPoint) + UPDATES.mongodbSection + '\n\n' + updated.slice(insertionPoint);
|
|
console.log('✓ Added BlogCuration service section');
|
|
console.log('✓ Added MongoDB Persistence Architecture section');
|
|
} else {
|
|
console.log('⚠ Could not find insertion point for BlogCuration section');
|
|
}
|
|
|
|
// Update "How the Services Work Together"
|
|
updated = updated.replace('These five services form a complete governance framework', 'These six services form a complete governance framework');
|
|
console.log('✓ Updated service count in integration section');
|
|
|
|
console.log(`\nNew length: ${updated.length} characters`);
|
|
console.log(`Change: +${updated.length - doc.content_markdown.length} characters\n`);
|
|
|
|
// Regenerate HTML
|
|
const content_html = marked.parse(updated);
|
|
|
|
// Update document
|
|
const result = await collection.updateOne(
|
|
{ slug: 'core-concepts-of-the-tractatus-framework' },
|
|
{
|
|
$set: {
|
|
content_markdown: updated,
|
|
content_html: content_html,
|
|
'metadata.date_updated': new Date(),
|
|
'metadata.version': '1.1'
|
|
}
|
|
}
|
|
);
|
|
|
|
if (result.modifiedCount > 0) {
|
|
console.log('✓ Document updated in MongoDB');
|
|
console.log('✓ Version updated to 1.1');
|
|
console.log('\n=== Update Complete ===');
|
|
} else {
|
|
console.log('⚠ No changes made');
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('\n✗ Error:', error.message);
|
|
console.error(error.stack);
|
|
process.exit(1);
|
|
} finally {
|
|
if (client) await client.close();
|
|
}
|
|
}
|
|
|
|
if (require.main === module) {
|
|
main();
|
|
}
|
|
|
|
module.exports = { main };
|