**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>
22 KiB
Tractatus - Claude Code Maintenance Guide
Comprehensive reference for Claude Code sessions on the Tractatus project
Last Updated: 2025-10-08 Version: 2.0.0 (Enforcement-First Architecture)
Table of Contents
- Project Identity
- Tractatus Framework Governance
- Session Management
- Development Conventions
- Directory Structure
- Phase 1 Deliverables
- Human Approval Requirements
- Te Tiriti & Indigenous Perspective
- Links & References
Project Identity
Core Information
- Project Name: Tractatus Website Platform
- Domain: agenticgovernance.digital
- Repository: GitHub (primary) + Codeberg/Gitea (mirrors)
- Status: Development - Phase 1 Implementation
- Created: 2025-10-06
- Primary Developer: Claude Code (Anthropic Sonnet 4.5)
- Project Owner: John Stroh
⚠️ Critical: Project Isolation
THIS IS A SEPARATE PROJECT FROM family-history AND sydigital
- Separate MongoDB instance: Port 27017, database
tractatus_dev - Separate application port: 9000
- Separate Git repository: Local + GitHub account
- Separate systemd services: mongodb-tractatus.service, tractatus.service
- No shared code/data: Patterns may be adapted, but no dependencies
Sessions must maintain clear separation. Always verify which project context you're in.
Project Purpose
Build a world-class platform demonstrating the Tractatus-Based LLM Safety Framework through:
- Three Audience Paths: Researcher, Implementer, Advocate
- AI-Powered Features: Blog curation, media triage, case studies (all with human oversight)
- Interactive Demonstrations: Classification, 27027 incident, boundary enforcement
- Dogfooding: The website implements Tractatus to govern its own AI operations
- Values Alignment: Sovereignty, Transparency, Harmlessness, Community
Timeline: 3-4 months for complete Phase 1 local prototype (no rush, no shortcuts, world-class quality)
Technical Architecture
Infrastructure
- MongoDB: Port 27017, database
tractatus_dev - Application: Node.js/Express on port 9000
- WebSocket: Port 9001 (if needed)
- Data Directory:
/home/theflow/projects/tractatus/data/mongodb - Logs:
/home/theflow/projects/tractatus/logs/
Technology Stack
- Backend: Node.js 18+, Express 4.x, MongoDB 7+
- Frontend: Vanilla JavaScript, Tailwind CSS (no framework dependency)
- Authentication: JWT for admin/moderation
- AI Integration: Claude API (Sonnet 4.5) - Phase 2+
- File Storage: GridFS for PDFs, documents
- Testing: Jest + Supertest
Database Collections
tractatus_dev.documents // Technical papers, framework docs
tractatus_dev.blog_posts // AI-curated, human-approved
tractatus_dev.media_inquiries // Press/media with AI triage
tractatus_dev.case_submissions // Community case studies
tractatus_dev.resources // External links, aligned projects
tractatus_dev.moderation_queue // Human oversight queue
tractatus_dev.users // Admin accounts
tractatus_dev.citations // Academic citation tracking
tractatus_dev.translations // Multi-language content (future)
tractatus_dev.koha_donations // Phase 3
Tractatus Framework Governance
Core Services - Five Mandatory Components
All five MUST be active throughout every session. Framework fade = critical failure.
What is a "27027 Failure"?
Named after the port number 27027 from an October 2025 incident:
User instruction: "Check port 27027" (explicit, non-standard MongoDB port) Claude's action: Used port 27017 (standard default) Root cause: Pattern recognition bias - training data's "MongoDB = 27017" association overrode explicit instruction immediately
Key insight: This is NOT about forgetting. Claude never truly "heard" the instruction because the learned pattern was so strong it autocorrected the explicit input, like a spell-checker changing a deliberately unusual word.
Why this matters: As AI capabilities increase, training data creates stronger patterns, making this problem WORSE, not better. The framework must architecturally prevent pattern recognition from overriding explicit human instructions.
1. ContextPressureMonitor
Purpose: Session quality management through multi-factor pressure analysis
When to invoke:
- Session start (baseline: 0/200000 tokens)
- Every 25% tokens (50k, 100k, 150k)
- After complex multi-file operations
- After any error or unexpected behavior
- Every ~20 messages or 40k tokens
Pressure Levels:
| Level | Score | Action | What to Do |
|---|---|---|---|
| NORMAL | 0-30% | PROCEED | Continue normally |
| ELEVATED | 30-50% | INCREASE_VERIFICATION | More careful, verify outputs |
| HIGH | 50-70% | SUGGEST_CONTEXT_REFRESH | Consider session handoff |
| CRITICAL | 70-85% | MANDATORY_VERIFICATION | Verify all actions, prepare handoff |
| DANGEROUS | 85%+ | IMMEDIATE_HALT | Stop, create handoff, refresh context |
Monitored Factors (Weighted):
- Token Usage (35% weight) - Context window pressure
- Conversation Length (25% weight) - Attention decay over long sessions
- Task Complexity (15% weight) - Number of simultaneous tasks, dependencies, file modifications
- Error Frequency (15% weight) - Recent errors indicate degraded state
- Instruction Density (10% weight) - Too many competing directives
Command:
node scripts/check-session-pressure.js --tokens <current>/<budget> --messages <count> --tasks <num> --errors <num>
Files updated:
.claude/session-state.json(last_framework_activity.ContextPressureMonitor).claude/token-checkpoints.json(completed checkpoints)
2. InstructionPersistenceClassifier
Purpose: Make explicit instructions override learned patterns to prevent 27027 failures (pattern recognition bias)
When to invoke:
- User gives explicit instruction
- Configuration specifications
- Architectural constraints
- Port/database requirements
- Coding standards
- Project-specific rules
Quadrant Mapping:
| Function | Quadrant | Human Oversight | Example |
|---|---|---|---|
| Mission/values changes | STRATEGIC | Mandatory approval | "Always prioritize privacy" |
| Blog editorial guidelines | OPERATIONAL | Quarterly review | "All posts must cite sources" |
| Publish approved post | TACTICAL | Pre-approved | Execute after human approval |
| Technical config | SYSTEM | Technical review | MongoDB ports, API keys |
| AI suggests blog topics | STOCHASTIC | Always human approval | "Write about GDPR" |
Classification process:
- Identify explicit instruction from user
- Classify quadrant (STR/OPS/TAC/SYS/STO)
- Determine persistence level (LOW/MEDIUM/HIGH/CRITICAL)
- Assign temporal scope (SESSION/SPRINT/PROJECT/PERMANENT)
- Set verification requirement (NONE/ADVISORY/MANDATORY)
- Calculate explicitness score (0.0-1.0)
- Store in
.claude/instruction-history.json
Files updated:
.claude/instruction-history.json(append new instruction).claude/session-state.json(last_framework_activity.InstructionPersistenceClassifier)
3. CrossReferenceValidator
Purpose: Validate proposed actions against instruction history to prevent conflicts
When to invoke:
- Before database schema changes
- Before configuration modifications
- Before architectural decisions
- Before changing established patterns
- Before modifying system-level settings
Validation process:
- Load
.claude/instruction-history.json - Identify relevant instructions (by quadrant, scope, keywords)
- Check for conflicts with proposed action
- If HIGH/CRITICAL persistence conflicts: BLOCK action
- Report conflicts to user with instruction details
- Require user override for conflicting actions
Blocking criteria:
- HIGH persistence instruction + direct conflict = BLOCK
- CRITICAL persistence instruction + any conflict = BLOCK
- MANDATORY verification required + no verification = BLOCK
Files updated:
.claude/session-state.json(last_framework_activity.CrossReferenceValidator)
4. BoundaryEnforcer
Purpose: Ensure AI never makes values decisions without human approval
When to invoke:
- Before privacy policy decisions
- Before ethical trade-off decisions
- Before user agency changes
- Before mission/values modifications
- Before governance document changes
Values boundaries (from Tractatus framework):
- Privacy vs. performance trade-offs
- User autonomy vs. safety
- Transparency vs. security
- Community vs. individual rights
- Indigenous sovereignty vs. technical expediency
Enforcement actions:
- Detect values-sensitive decision domain
- Report boundary violation to user
- BLOCK automatic decision
- Provide alternatives/research/analysis only
- Require explicit human decision
- Document decision in instruction history
Files updated:
.claude/session-state.json(last_framework_activity.BoundaryEnforcer)
5. MetacognitiveVerifier
Purpose: AI self-checks reasoning before proposing complex actions
When to invoke (selective use):
- Operations with >3 file modifications
- Operations with >5 sequential steps
- Architecture changes (structural modifications)
- Security implementations
- Complex refactoring
- Multi-system integrations
Verification dimensions:
- Alignment (0.0-1.0): Does action align with project goals?
- Coherence (0.0-1.0): Is reasoning internally consistent?
- Completeness (0.0-1.0): Are edge cases considered?
- Safety (0.0-1.0): What are the risks?
- Alternatives (0.0-1.0): Have alternatives been explored?
Overall Confidence:
- 0.90-1.0: HIGH - Proceed
- 0.75-0.89: MEDIUM - Proceed with caution
- 0.60-0.74: LOW - Reconsider approach
- <0.60: VERY LOW - Stop and rethink
Files updated:
.claude/session-state.json(last_framework_activity.MetacognitiveVerifier)
Session Management
Session Start Protocol (MANDATORY)
Automated initialization (ALWAYS run this at session start):
# ONE COMMAND - Automated framework initialization
node scripts/session-init.js
# OR using npm script:
npm run framework:init
What this does automatically:
- ✅ Detects if new session or continued session
- ✅ Initializes
.claude/session-state.json(new session ID, timestamp) - ✅ Resets
.claude/token-checkpoints.json(25%, 50%, 75% milestones) - ✅ Loads
.claude/instruction-history.json(displays active instruction counts) - ✅ Runs baseline pressure check via ContextPressureMonitor
- ✅ Verifies all 5 framework components operational
- ✅ Outputs formatted report with framework status
Then start dev server:
npm run dev # Runs both server AND framework-watchdog.js
Manual fallback (if automated script fails):
# 1. Pressure baseline
node scripts/check-session-pressure.js --tokens 0/200000 --messages 0
# 2. Load instruction database
cat .claude/instruction-history.json | grep -c '"active": true'
# 3. Report to user
echo "Framework operational. Baseline: NORMAL (0%). Instructions loaded: X active."
Continuous Monitoring (THROUGHOUT SESSION)
Every ~10 messages OR ~20k tokens:
- Check
.claude/token-checkpoints.jsonfor overdue checkpoints - Review
.claude/session-state.jsonfor component staleness - Verify watchdog has not reported alerts
At 25%, 50%, 75% token usage:
- STOP current work
- Run
node scripts/check-session-pressure.js - Update both state files
- Report pressure level + recommendations to user
- Resume with adjusted behavior
Before major actions:
# Run pre-action check (blocking)
node scripts/pre-action-check.js <action-type> <description>
# Action types: file-edit, database, architecture, config, security, values, complex
# Exit codes: 0=PASS, 1=FAIL, 2=ERROR
Framework Fade Detection & Recovery
Framework fade = Components not being used = CRITICAL FAILURE
Automated detection (framework-watchdog.js):
- Monitors
.claude/session-state.jsonevery 30 seconds - Detects staleness: component not used in 20 messages OR 30k tokens
- Detects overdue checkpoints
- Outputs visible warnings to terminal
Manual detection signs:
- No pressure check in 50k+ tokens
- Explicit instruction given but not classified
- Major change without cross-reference validation
- Values decision without boundary check
- Complex operation without metacognitive verification
Recovery protocol:
# 1. STOP all work immediately
# 2. Run recovery diagnostic
node scripts/recover-framework.js
# 3. Review issues reported
# 4. Address CRITICAL and HIGH issues
# 5. Resume with increased monitoring
Session Handoff (When to create)
Create handoff document when:
- Pressure reaches CRITICAL (70-85%) or DANGEROUS (85%+)
- Token usage exceeds 75% (150k/200k)
- Complex multi-phase work remains
- Errors clustering (3+ in short period)
- User requests session break
Handoff document should include:
- Current session state (tokens, pressure, components used)
- Completed tasks (with verification)
- In-progress tasks (with blockers)
- Pending tasks (prioritized)
- Recent instruction additions
- Known issues / challenges
- Framework health assessment
- Recommendations for next session
Development Conventions
Code Style
- ES6+ JavaScript: Modern syntax, async/await patterns
- Modular architecture: Small, focused functions/classes
- Explicit naming: No abbreviations, clear intent
- Comments: Explain WHY, not WHAT
- Error handling: Comprehensive try/catch, meaningful error messages
File Naming
- Routes:
src/routes/blog.routes.js - Controllers:
src/controllers/blog.controller.js - Models:
src/models/BlogPost.model.js - Services:
src/services/BlogCuration.service.js - Middleware:
src/middleware/auth.middleware.js - Tests:
tests/unit/blog.test.js
Git Conventions
- Commits: Conventional commits format
feat:New featurefix:Bug fixdocs:Documentationrefactor:Code restructuretest:Test additionschore:Maintenance
- Branches:
feature/blog-curation,fix/auth-token,docs/api-reference - No commits to main: Always use feature branches
Environment Variables
# Application
NODE_ENV=development
PORT=9000
APP_NAME=Tractatus
# MongoDB
MONGODB_URI=mongodb://localhost:27017/tractatus_dev
MONGODB_PORT=27017
# JWT
JWT_SECRET=<generate_secure_secret>
JWT_EXPIRY=7d
# Claude API (Phase 2+)
CLAUDE_API_KEY=<anthropic_api_key>
CLAUDE_MODEL=claude-sonnet-4-5
# Admin
ADMIN_EMAIL=john.stroh.nz@pm.me
Directory Structure
/home/theflow/projects/tractatus/
├── .claude/ # Claude Code project config
│ ├── instruction-history.json # Persistent instruction database
│ ├── session-state.json # Current session framework state
│ ├── token-checkpoints.json # Token milestone tracking
│ ├── audit/ # Framework audit logs
│ └── sessions/ # Session handoff documents
├── .git/ # Git repository
├── docs/ # Source markdown documents
│ ├── markdown/ # Raw markdown files (migration source)
│ └── governance/ # TRA-VAL-*, TRA-GOV-* documents
├── public/ # Frontend assets
│ ├── css/
│ │ └── tailwind.css
│ ├── js/
│ │ ├── components/ # Reusable UI components
│ │ ├── demos/ # Interactive demonstrations
│ │ └── utils/
│ ├── images/
│ └── downloads/ # Generated PDFs
├── src/ # Backend code
│ ├── server.js # Express app entry point
│ ├── routes/
│ ├── controllers/
│ ├── models/
│ ├── middleware/
│ │ └── tractatus/ # Framework enforcement middleware
│ ├── services/
│ │ ├── InstructionClassifier.service.js
│ │ ├── CrossReferenceValidator.service.js
│ │ ├── BoundaryEnforcer.service.js
│ │ ├── ContextPressureMonitor.service.js
│ │ └── MetacognitiveVerifier.service.js
│ ├── utils/
│ └── config/
├── scripts/ # Setup & migration
│ ├── init-db.js
│ ├── migrate-documents.js
│ ├── generate-pdfs.js
│ ├── seed-admin.js
│ ├── check-session-pressure.js # Pressure monitoring
│ ├── framework-watchdog.js # Background monitoring
│ ├── pre-action-check.js # Blocking validator
│ └── recover-framework.js # Fade recovery
├── tests/
│ ├── unit/
│ ├── integration/
│ └── security/
├── data/ # MongoDB data directory
├── logs/ # Application & MongoDB logs
├── CLAUDE.md # Session start instructions (50-60 lines)
├── CLAUDE_Tractatus_Maintenance_Guide.md # This file
├── README.md
└── LICENSE
Phase 1 Deliverables
Must-Have for Complete Prototype
-
✅ Infrastructure
- MongoDB instance (port 27017)
- Express application (port 9000)
- Systemd services
- Directory structure
-
Core Features
- Document migration pipeline
- Three audience paths (Researcher/Implementer/Advocate)
- Documentation viewer with search
- About/values pages (Te Tiriti acknowledgment)
-
Tractatus Governance Services
- InstructionPersistenceClassifier
- CrossReferenceValidator
- BoundaryEnforcer
- ContextPressureMonitor
- MetacognitiveVerifier
-
AI-Powered Features (with human oversight)
- Blog curation system
- Media inquiry triage
- Case study submission portal
- Resource directory curation
-
Interactive Demonstrations
- Instruction classification demo
- 27027 incident visualizer
- Boundary enforcement simulator
-
Human Oversight
- Moderation queue dashboard
- Admin authentication
- Approval workflows
-
Quality Assurance
- Comprehensive testing suite
- Security audit
- Performance optimization
- Accessibility compliance (WCAG AA)
Not in Phase 1
- Production deployment (OVHCloud)
- Domain configuration (agenticgovernance.digital)
- ProtonBridge email integration
- Koha donations (Phase 3)
- Public launch
Human Approval Requirements
All Major Decisions
- Architectural changes
- Database schema modifications
- Security implementations
- Third-party integrations
- Cost-incurring services
Content & Values
- Governance document adaptations (TRA-VAL-, TRA-GOV-)
- Te Tiriti acknowledgment wording
- About/mission pages
- Editorial guidelines
- Any values-sensitive content
Phase Transitions
- Completion of Phase 1 prototype
- Decision to proceed to production deployment
- Budget approval for Claude API (Phase 2)
- Launch timing and strategy
Te Tiriti & Indigenous Perspective
Strategic Commitment
The framework acknowledges Te Tiriti o Waitangi and indigenous leadership in digital sovereignty.
Implementation Approach
- Respect without tokenism: Follow documented indigenous data sovereignty principles (CARE Principles)
- No premature engagement: Do not approach Māori organizations until we have something valuable to offer
- Well-documented standards: Use published research and frameworks (Te Mana Raraunga, CARE Principles)
- Baseline integration: Te Tiriti forms part of strategic foundation, not dominant cultural overlay
Content Placement
- Footer acknowledgment (subtle, respectful)
/about/valuespage (detailed explanation)- Resource directory (links to Māori data sovereignty organizations)
- No meetings/consultations until post-launch
Links & References
Source Documents
/home/theflow/projects/tractatus/Tractatus-Website-Complete-Specification-v2.0.md/home/theflow/projects/tractatus/ClaudeWeb conversation transcription.md/home/theflow/projects/sydigital/stochastic/innovation-exploration/STO-INN-0010-tractatus-llm-architecture-safety-framework-i1.md
Governance References
/home/theflow/projects/sydigital/strategic/values-principles/STR-VAL-0001-core-values-principles-v1-0.md/home/theflow/projects/sydigital/strategic/governance/STR-GOV-0001-strategic-review-protocol-v1-0.md/home/theflow/projects/sydigital/strategic/governance/STR-GOV-0002-values-alignment-framework-v1-0.md
Framework Documentation
/home/theflow/projects/sydigital/strategic/frameworks/STR-FRM-0001-agentic-workflow-framework-v1-0.md
Session Reminders
Always
- Verify you're in
/home/theflow/projects/tractatuscontext - Check MongoDB port 27017, application port 9000
- No shortcuts, no fake data, world-class quality
- Human approval for major decisions
- Use all five framework components continuously
- Update session state after each component use
- Run pressure checks at milestones
Never
- Mix tractatus code with family-history or sydigital
- Make values decisions without human approval
- Deploy to production during Phase 1
- Rush implementation to meet arbitrary deadlines
- Use placeholder/lorem ipsum content
- Let framework components fade from active use
- Skip pre-action checks before major changes
End of Maintenance Guide