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>
95 lines
2.5 KiB
JavaScript
Executable file
95 lines
2.5 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
||
|
||
/**
|
||
* Migration: Add visibility and order to value pluralism documents
|
||
*
|
||
* This migration ensures the 3 value pluralism documents are properly
|
||
* configured to display in the docs.html sidebar.
|
||
*/
|
||
|
||
require('dotenv').config();
|
||
const { MongoClient } = require('mongodb');
|
||
|
||
const MONGO_URI = process.env.MONGODB_URI || process.env.MONGO_URI || 'mongodb://localhost:27017';
|
||
const DB_NAME = process.env.MONGODB_DB || process.env.MONGO_DB || 'tractatus_prod';
|
||
|
||
const UPDATES = [
|
||
{
|
||
slug: 'value-pluralism-faq',
|
||
category: 'getting-started',
|
||
visibility: 'public',
|
||
order: 3
|
||
},
|
||
{
|
||
slug: 'pluralistic-values-research-foundations',
|
||
category: 'research-theory',
|
||
visibility: 'public',
|
||
order: 1
|
||
},
|
||
{
|
||
slug: 'pluralistic-values-deliberation-plan-v2',
|
||
category: 'technical-reference',
|
||
visibility: 'public',
|
||
order: 12
|
||
}
|
||
];
|
||
|
||
async function migrate() {
|
||
console.log('🔧 Starting value pluralism documents migration...');
|
||
console.log(` Database: ${DB_NAME}`);
|
||
console.log('');
|
||
|
||
const client = new MongoClient(MONGO_URI);
|
||
|
||
try {
|
||
await client.connect();
|
||
const db = client.db(DB_NAME);
|
||
const collection = db.collection('documents');
|
||
|
||
for (const update of UPDATES) {
|
||
const { slug, ...fields } = update;
|
||
|
||
const result = await collection.updateOne(
|
||
{ slug },
|
||
{ $set: fields }
|
||
);
|
||
|
||
if (result.matchedCount === 0) {
|
||
console.log(` ⚠️ Document not found: ${slug}`);
|
||
} else if (result.modifiedCount === 0) {
|
||
console.log(` ℹ️ Already up to date: ${slug}`);
|
||
} else {
|
||
console.log(` ✅ Updated: ${slug}`);
|
||
console.log(` - category: ${fields.category}`);
|
||
console.log(` - visibility: ${fields.visibility}`);
|
||
console.log(` - order: ${fields.order}`);
|
||
}
|
||
console.log('');
|
||
}
|
||
|
||
// Verify
|
||
console.log('🔍 Verification:');
|
||
const docs = await collection.find(
|
||
{ slug: { $in: UPDATES.map(u => u.slug) } },
|
||
{ projection: { slug: 1, category: 1, visibility: 1, order: 1, _id: 0 } }
|
||
).toArray();
|
||
|
||
docs.forEach(doc => {
|
||
console.log(` ${doc.slug}:`);
|
||
console.log(` category: ${doc.category}`);
|
||
console.log(` visibility: ${doc.visibility}`);
|
||
console.log(` order: ${doc.order}`);
|
||
});
|
||
|
||
console.log('');
|
||
console.log('✨ Migration complete!');
|
||
|
||
} catch (error) {
|
||
console.error('❌ Migration failed:', error);
|
||
process.exit(1);
|
||
} finally {
|
||
await client.close();
|
||
}
|
||
}
|
||
|
||
migrate();
|