- Create Economist SubmissionTracking package correctly:
* mainArticle = full blog post content
* coverLetter = 216-word SIR— letter
* Links to blog post via blogPostId
- Archive 'Letter to The Economist' from blog posts (it's the cover letter)
- Fix date display on article cards (use published_at)
- Target publication already displaying via blue badge
Database changes:
- Make blogPostId optional in SubmissionTracking model
- Economist package ID: 68fa85ae49d4900e7f2ecd83
- Le Monde package ID: 68fa2abd2e6acd5691932150
Next: Enhanced modal with tabs, validation, export
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed 16 sensitive files from git tracking to protect internal processes:
Root directory (5 files):
- CLAUDE_Tractatus_Maintenance_Guide.md
- DEPLOYMENT-2025-10-08.md
- NEXT_SESSION.md
- NEXT_SESSION_OPENING_PROMPT.md
- SESSION_CLOSEDOWN_20251006.md
docs/ directory (11 files):
- KOHA_PRODUCTION_DEPLOYMENT.md
- PHASE-2-DEPLOYMENT-GUIDE.md
- PRODUCTION_DEPLOYMENT_CHECKLIST.md
- SESSION-2025-10-07-AI-FEATURES.md
- SESSION-HANDOFF-2025-10-12.md
- SESSION_HANDOFF_2025-10-10.md
- SESSION_HANDOFF_2025-10-11.md
- SESSION_HANDOFF_2025_10_11.md
- SESSION_HANDOFF_2025_10_11_P3_P4.md
- SESSION_INIT_API_MEMORY_AUDIT.md
- planning/PHASE_3_SESSION_1_SUMMARY.md
These files contain:
- Internal workflow documentation
- Deployment procedures and server details
- Session handoff information
- Planning and strategy documents
Security posture:
✅ Files removed from tracking (won't appear in new commits)
✅ Files remain on disk for local use
✅ .gitignore already blocks these patterns
✅ .rsyncignore blocks deployment to production
⚠️ Files remain in git history (accessible via git log)
Note: This is low-risk remediation. Files remain in history but won't
be visible in file browser or future commits. For complete removal,
git history rewrite would be needed (high risk, requires force push).
Risk assessment: Medium exposure (internal processes visible) but no
credentials, keys, or direct access information exposed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Document PluralisticDeliberationOrchestrator as 6th mandatory service
- Update service initialization procedures
- Add value pluralism governance principles
- Update README with current framework status
Reflects production-ready 6-service architecture
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
**Cache-Busting Improvements:**
- Switched from timestamp-based to semantic versioning (v1.0.2)
- Updated all HTML files: index.html, docs.html, leader.html
- CSS: tailwind.css?v=1.0.2
- JS: navbar.js, document-cards.js, docs-app.js v1.0.2
- Professional versioning approach for production stability
**systemd Service Implementation:**
- Created tractatus-dev.service for development environment
- Created tractatus-prod.service for production environment
- Added install-systemd.sh script for easy deployment
- Security hardening: NoNewPrivileges, PrivateTmp, ProtectSystem
- Resource limits: 1GB dev, 2GB prod memory limits
- Proper logging integration with journalctl
- Automatic restart on failure (RestartSec=10)
**Why systemd over pm2:**
1. Native Linux integration, no additional dependencies
2. Better OS-level security controls (ProtectSystem, ProtectHome)
3. Superior logging with journalctl integration
4. Standard across Linux distributions
5. More robust process management for production
**Usage:**
# Development:
sudo ./scripts/install-systemd.sh dev
# Production:
sudo ./scripts/install-systemd.sh prod
# View logs:
sudo journalctl -u tractatus -f
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>