Flips the "how to add a License section" template block from Apache 2.0
wording to the project's current EUPL-1.2 licence. Now that hygiene commit
db788548 cleared inst_069/070 and inst_084 on both Maintenance_Guide
copies, this licence swap lands atomically on a clean base.
Applied identically to both CLAUDE_Tractatus_Maintenance_Guide.md copies
(root + For Claude Web bundle); 4 edits per file:
L788 prose: "Complete Apache 2.0 license section at end:"
-> "Complete EUPL-1.2 licence section at end:"
L790 heading: "## License" -> "## Licence"
(British spelling matches EUPL official style)
L794 template: "Licensed under the Apache License, Version 2.0
(the \"License\")..."
-> "Licensed under the European Union Public Licence,
Version 1.2 (the \"Licence\")..."
L795 template: "[Full Apache 2.0 text with additional terms]"
-> "[Full EUPL-1.2 text with additional terms]"
Commit 2/5 in the revised sequence for the out-of-scope hygiene + licence
sweep. Plan: community repo
docs/plans/PLAN_TRACTATUS_OUT_OF_SCOPE_HYGIENE_LICENCE_20260420.md
Phase A precedent: c85f310f (LICENSE + README relicense)
Phase B precedent: d600f6ed (source-file header flips)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bundles the plan's commits 1 + 2 into one atomic commit. Pre-commit hook
scans whole file content, so a credential-only commit cannot pass inst_084
while port exposures remain unflipped on the same file. Sibling-concern
bundling matches precedent 4ddc54a0 (README hygiene follow-on to c85f310f).
Applied identically to both CLAUDE_Tractatus_Maintenance_Guide.md copies
(root + For Claude Web bundle):
inst_069/070 — credential-scan false-positive:
L1101 "Password location" -> "Credential reference"
(describes WHERE creds live, not any credential value)
inst_084 — port redactions, 9 distinct line positions per file, using
generic descriptors so the "port \d{4,5}" regex no longer matches:
L40, L63 Port 27017 (MongoDB) -> default MongoDB port / default port
L64 on port 9000 -> on the project HTTP port
L65 Port 9001 (WebSocket) -> the project WebSocket port
L103 "Check port 27027" -> verify a non-default MongoDB port
L104 Used port 27017 -> used the standard default MongoDB port
L1324/1260, L1325/1261 -> (default port) / (project HTTP port)
L1437/1373 summary line -> default port / HTTP port descriptors
Intentionally preserved (non-triggering):
L99 section title "What is a '27027 Failure?'" (bare digits, no "port"
prefix, regex doesn't match)
L41 "Separate application port: 9000" (colon breaks "port\s+\d" regex)
All code-block port refs (exempted by removeExemptedSections())
Revised sequence: commit 1/5 (plan originally 1/6, merged 1+2).
Plan: community repo docs/plans/PLAN_TRACTATUS_OUT_OF_SCOPE_HYGIENE_LICENCE_20260420.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 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>