- 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>
25 KiB
Phase 2 Kickoff Checklist
Project: Tractatus AI Safety Framework Phase: 2 - Production Deployment & AI Features Duration: 2-3 months (12 weeks) Status: APPROVED - Ready to Execute Domain: agenticgovernance.digital
Overview
This checklist provides a step-by-step guide for executing Phase 2 deployment. Complete each section sequentially to ensure smooth deployment and avoid missing critical steps.
Color Coding:
- ✅ Complete
- 🔄 In Progress
- ⏳ Pending (blocked or scheduled for later)
- ❌ Not Started
Pre-Kickoff (Week 0)
Administrative Setup
-
Sign TRA-OPS- Governance Documents*
- TRA-OPS-0001: AI Content Generation Policy
- TRA-OPS-0002: Blog Editorial Guidelines
- TRA-OPS-0003: Media Inquiry Response Protocol
- TRA-OPS-0004: Case Study Moderation Standards
- TRA-OPS-0005: Human Oversight Requirements
- Action: Add digital signature or email confirmation to John Stroh
-
Budget Approval Documentation
- Phase 2 total: $550 USD (~$900 NZD)
- Monthly ongoing: $100-150 USD
- Action: Document approval (email, spreadsheet, or formal doc)
-
Payment Methods Setup
- OVHCloud account created
- Payment method added (credit card or PayPal)
- Anthropic account created (for Claude API)
- Payment method added to Anthropic
- Action: Verify both accounts have valid payment methods
Account Creation
-
OVHCloud Account
- Account created: ___________
- Email verified: ___________
- 2FA enabled: ___________
- Login: Save credentials securely (password manager)
-
Anthropic Claude API Account
- Account created: ___________
- Email verified: ___________
- Production API key generated: ___________
- Security: Store API key in password manager (NEVER commit to Git)
-
Domain Configuration
- Domain: agenticgovernance.digital ✅ (already registered)
- Registrar: OVHCloud ✅
- Auto-renewal enabled: ___________
- Registrar lock enabled: ___________
Security Preparation
-
SSH Key Generation
- Generate ED25519 key:
ssh-keygen -t ed25519 -C "tractatus-deploy" - Key location:
~/.ssh/tractatus_ed25519 - Public key copied:
~/.ssh/tractatus_ed25519.pub - Action: Save private key securely, NEVER share
- Generate ED25519 key:
-
Secret Generation
- JWT_SECRET (64 chars):
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))" - MongoDB password (32 chars):
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))" - Action: Store in password manager, ready for .env.production
- JWT_SECRET (64 chars):
-
Email Configuration
- ProtonMail account: john.stroh.nz@pm.me ✅ (existing)
- ProtonBridge installed: ___________
- SMTP credentials ready: ___________
Week 1: Infrastructure Setup
Day 1-2: Server Provisioning
-
Provision OVHCloud VPS
- Login to OVHCloud control panel
- Select: VPS Essential (2 vCore, 4GB RAM, 80GB SSD)
- Region: Singapore or Australia (preferred)
- OS: Ubuntu 22.04 LTS
- Generate root password (save securely)
- Provision server (5-10 minutes)
- Server IP: ...
-
Initial Server Access
- SSH to server as root:
ssh root@<server_ip> - Update system:
apt update && apt upgrade -y - Verify Ubuntu version:
lsb_release -a(should be 22.04)
- SSH to server as root:
-
Create Non-Root User
- Create user:
adduser tractatus - Add to sudo:
usermod -aG sudo tractatus - Set up SSH dir:
mkdir -p /home/tractatus/.ssh && chmod 700 /home/tractatus/.ssh - Copy public key:
ssh-copy-id tractatus@<server_ip> - Test login:
ssh tractatus@<server_ip> - Verify: Can login as tractatus with SSH key
- Create user:
Day 3: Security Hardening
-
SSH Hardening
- Edit config:
sudo nano /etc/ssh/sshd_config - Set:
PermitRootLogin no - Set:
PasswordAuthentication no - Set:
PubkeyAuthentication yes - Set:
AllowUsers tractatus - Restart SSH:
sudo systemctl restart sshd - Test: Try SSH as root (should FAIL)
- Edit config:
-
Firewall Setup (UFW)
- Allow SSH from your IP:
sudo ufw allow from <your_ip> to any port 22 - Allow HTTP:
sudo ufw allow 80/tcp - Allow HTTPS:
sudo ufw allow 443/tcp - Enable:
sudo ufw enable - Verify:
sudo ufw status verbose - Check: Port 22 restricted, 80/443 open
- Allow SSH from your IP:
-
Fail2ban Installation
- Install:
sudo apt install -y fail2ban - Copy config:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local - Enable SSH jail: Edit
/etc/fail2ban/jail.local, set[sshd] enabled = true - Restart:
sudo systemctl restart fail2ban - Verify:
sudo fail2ban-client status
- Install:
-
Automatic Security Updates
- Install:
sudo apt install -y unattended-upgrades - Configure:
sudo dpkg-reconfigure -plow unattended-upgrades(select Yes) - Verify:
cat /etc/apt/apt.conf.d/20auto-upgrades
- Install:
Day 4-5: Application Stack Installation
-
Install Node.js 18 LTS
- Add repository:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - - Install:
sudo apt install -y nodejs - Verify:
node --version(should be v18.x.x) - Verify:
npm --version(should be 9.x.x or higher)
- Add repository:
-
Install MongoDB 7.x
- Add GPG key:
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-server-7.0.gpg - Add repository:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list - Update:
sudo apt update - Install:
sudo apt install -y mongodb-org - Start:
sudo systemctl start mongod - Enable:
sudo systemctl enable mongod - Verify:
mongosh --eval 'db.version()'(should be 7.0.x)
- Add GPG key:
-
Install Nginx
- Install:
sudo apt install -y nginx - Start:
sudo systemctl start nginx - Enable:
sudo systemctl enable nginx - Verify:
curl http://<server_ip>(should see "Welcome to nginx")
- Install:
-
Install Additional Tools
- Install:
sudo apt install -y git curl wget vim htop certbot python3-certbot-nginx - Verify Git:
git --version - Verify Certbot:
certbot --version
- Install:
Week 2: Application Deployment
Day 6-7: DNS Configuration
-
Configure OVHCloud DNS
- Login to OVHCloud control panel
- Navigate to: Domains → agenticgovernance.digital → DNS Zone
- Add A record:
- Type: A
- Subdomain: @ (root)
- Target: <server_ip>
- TTL: 3600
- Add A record for www:
- Type: A
- Subdomain: www
- Target: <server_ip>
- TTL: 3600
- Add AAAA record (IPv6, if available):
- Type: AAAA
- Subdomain: @
- Target: <server_ipv6>
- Wait: DNS propagation (24-48 hours max, usually <2 hours)
-
Verify DNS Propagation
- Check A record:
dig agenticgovernance.digital +short - Check www:
dig www.agenticgovernance.digital +short - Online check: https://dnschecker.org
- Confirm: Both @ and www resolve to server IP
- Check A record:
Day 8-9: Application Code Deployment
-
Create Application Directory
- Create:
sudo mkdir -p /var/www/tractatus - Ownership:
sudo chown tractatus:tractatus /var/www/tractatus - Permissions:
sudo chmod 755 /var/www/tractatus
- Create:
-
Clone Repository
- Navigate:
cd /var/www/tractatus - Clone:
git clone https://github.com/your-org/tractatus.git . - If private repo: Set up deploy key first
- Verify:
ls -la(should see package.json, src/, public/, etc.)
- Navigate:
-
Install Dependencies
- Install production:
npm install --production - Wait: 2-5 minutes for npm install
- Verify:
ls -la node_modules/(should have packages)
- Install production:
-
Configure Environment
- Copy template:
cp .env.example .env.production - Edit:
nano .env.production - Set variables:
NODE_ENV=production PORT=9000 MONGODB_URI=mongodb://localhost:27017/tractatus_prod JWT_SECRET=<generated_64_char_secret> JWT_EXPIRY=7d CLAUDE_API_KEY=<anthropic_api_key> CLAUDE_MODEL=claude-sonnet-4-5-20250929 ADMIN_EMAIL=john.stroh.nz@pm.me - Secure permissions:
chmod 600 .env.production - Verify:
cat .env.production(secrets present, file readable only by owner)
- Copy template:
-
Build Assets
- Build Tailwind CSS:
npm run build:css - Verify:
ls -lh public/css/tailwind.css(should be ~24KB)
- Build Tailwind CSS:
Day 10: Database Initialization
-
Configure MongoDB Authentication
- Edit config:
sudo nano /etc/mongod.conf - Set:
security: authorization: enabled net: bindIp: 127.0.0.1 port: 27017 - Restart:
sudo systemctl restart mongod - Verify:
sudo systemctl status mongod(should be running)
- Edit config:
-
Create Database & User
- Connect:
mongosh - Create user:
use tractatus_prod db.createUser({ user: 'tractatus', pwd: '<secure_mongodb_password>', roles: [{ role: 'readWrite', db: 'tractatus_prod' }] }) - Exit:
exit
- Connect:
-
Initialize Database
- Run migration:
npm run init:db - Seed admin user:
npm run seed:admin - Verify:
mongosh tractatus_prod -u tractatus -p(should connect)
- Run migration:
Week 3: Service Configuration
Day 11-12: Systemd Service
-
Create Systemd Service File
- Create:
sudo nano /etc/systemd/system/tractatus.service - Content:
[Unit] Description=Tractatus AI Safety Framework After=network.target mongod.service [Service] Type=simple User=tractatus WorkingDirectory=/var/www/tractatus Environment=NODE_ENV=production EnvironmentFile=/var/www/tractatus/.env.production ExecStart=/usr/bin/node src/server.js Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target - Reload:
sudo systemctl daemon-reload
- Create:
-
Enable & Start Service
- Enable:
sudo systemctl enable tractatus.service - Start:
sudo systemctl start tractatus.service - Check status:
sudo systemctl status tractatus.service - View logs:
sudo journalctl -u tractatus.service -f - Verify: Service running, no errors in logs
- Enable:
-
Test Application
- Test locally:
curl http://localhost:9000/health - Expected:
{"status":"healthy","database":"connected"}
- Test locally:
Day 13-14: Nginx Configuration
-
Create Nginx Site Config
- Create:
sudo nano /etc/nginx/sites-available/tractatus - Content: (Use configuration from PHASE-2-INFRASTRUCTURE-PLAN.md)
- Enable site:
sudo ln -s /etc/nginx/sites-available/tractatus /etc/nginx/sites-enabled/ - Remove default:
sudo rm /etc/nginx/sites-enabled/default
- Create:
-
Test Nginx Configuration
- Test config:
sudo nginx -t - Expected: "syntax is ok", "test is successful"
- Test config:
-
Reload Nginx
- Reload:
sudo systemctl reload nginx - Check status:
sudo systemctl status nginx - Verify: Nginx running, no errors
- Reload:
Day 15: SSL/TLS Setup
-
Obtain Let's Encrypt Certificate
- Run Certbot:
sudo certbot --nginx -d agenticgovernance.digital -d www.agenticgovernance.digital - Enter email: john.stroh.nz@pm.me
- Agree to terms: Y
- Share email: N (optional)
- Redirect HTTP to HTTPS: Y (option 2)
- Wait: Certificate issuance (30-60 seconds)
- Run Certbot:
-
Verify SSL Certificate
- Test HTTPS:
curl https://agenticgovernance.digital/health - Browser test: Open https://agenticgovernance.digital
- SSL Labs test: https://www.ssllabs.com/ssltest/ (should be A+)
- Test HTTPS:
-
Test Auto-Renewal
- Dry run:
sudo certbot renew --dry-run - Expected: "Congratulations, all renewals succeeded"
- Verify timer:
sudo systemctl list-timers | grep certbot
- Dry run:
Week 4: Monitoring & Testing
Day 16-17: Logging & Monitoring
-
Configure Log Rotation
- Create:
sudo nano /etc/logrotate.d/tractatus - Content:
/var/log/tractatus/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 tractatus tractatus } - Test:
sudo logrotate -f /etc/logrotate.d/tractatus
- Create:
-
Create Healthcheck Script
- Create:
sudo nano /usr/local/bin/tractatus-healthcheck.sh - Content: (Use script from PHASE-2-INFRASTRUCTURE-PLAN.md)
- Make executable:
sudo chmod +x /usr/local/bin/tractatus-healthcheck.sh - Test:
/usr/local/bin/tractatus-healthcheck.sh
- Create:
-
Configure Cron for Monitoring
- Edit crontab:
sudo crontab -e - Add:
*/5 * * * * /usr/local/bin/tractatus-healthcheck.sh - Verify:
sudo crontab -l
- Edit crontab:
Day 18-19: Backup Configuration
-
Create Backup Script
- Create:
nano ~/backup-mongodb.sh - Content: (Use script from PHASE-2-INFRASTRUCTURE-PLAN.md)
- Make executable:
chmod +x ~/backup-mongodb.sh - Test:
./backup-mongodb.sh - Verify:
ls -lh /var/backups/tractatus/mongodb/
- Create:
-
Schedule Daily Backups
- Edit crontab:
crontab -e - Add:
0 2 * * * /home/tractatus/backup-mongodb.sh >> /var/log/tractatus/backup.log 2>&1 - Verify:
crontab -l
- Edit crontab:
Day 20-21: Production Testing
-
Smoke Tests
- Homepage: https://agenticgovernance.digital/
- Docs viewer: https://agenticgovernance.digital/docs-viewer.html
- API health: https://agenticgovernance.digital/health
- Admin login: https://agenticgovernance.digital/admin/login.html
- Researcher path: https://agenticgovernance.digital/researcher.html
- Implementer path: https://agenticgovernance.digital/implementer.html
- Advocate path: https://agenticgovernance.digital/advocate.html
- Verify: All pages load, no console errors
-
Performance Testing
- Lighthouse audit: Run from Chrome DevTools
- Target: Performance >90, Accessibility 100, Best Practices 100, SEO >90
- WebPageTest: https://www.webpagetest.org
- Target: <3s load time (95th percentile)
-
Security Testing
- SSL Labs: https://www.ssllabs.com/ssltest/
- Target: A+ rating
- Security Headers: https://securityheaders.com
- Target: A rating
- CSP check: Browser console (no violations)
Milestone 1 Complete: ✅ Infrastructure deployed, site live at https://agenticgovernance.digital
Week 5-8: AI Features Implementation
Week 5: Claude API Integration
-
API Key Configuration
- Add to .env.production:
CLAUDE_API_KEY=<key> - Restart service:
sudo systemctl restart tractatus.service - Verify: No errors in logs
- Add to .env.production:
-
Rate Limiting Setup
- Configure in ClaudeAPI.service.js:
- Requests/minute: 60
- Tokens/day: 500,000
- Monthly budget: $200
- Test limits: (unit test)
- Configure in ClaudeAPI.service.js:
-
Cost Monitoring
- Create dashboard view: /admin/api-usage
- Show: tokens used today, cost estimate, budget remaining
- Alert threshold: 80% of monthly budget
- Test: View dashboard, verify metrics
Week 6: Blog Curation System
-
Blog Database Schema
- Create BlogPost model: src/models/BlogPost.model.js
- Fields: title, slug, content, author, published_at, ai_assisted, etc.
- Indexes: slug (unique), published_at, category
-
Topic Suggestion Pipeline
- Implement: src/services/BlogCuration.service.js
- Method: suggestTopics(newsFeeds) → topics[]
- Test: Generate 5-10 topics from mock data
-
Outline Generation
- Method: generateOutline(topic) → outline
- Test: Generate outline for approved topic
-
Blog UI
- Create: public/blog/index.html (list view)
- Create: public/blog/[slug].html (single post view)
- Create: public/blog/feed.xml (RSS)
- Test: View blog list, single post, RSS feed
-
Seed Content (3-5 posts)
- Post 1: "Introducing the Tractatus Framework"
- Post 2: "The 27027 Incident: A Case Study"
- Post 3: "Why AI Safety Needs Architecture"
- Post 4: "Boundary Enforcement in Practice"
- Post 5: "Human Oversight: Not Optional"
- Publish: All posts live on blog
Week 7: Media Inquiry Triage
-
Media Inquiry Form
- Create: public/contact.html
- Fields: name, email, organization, message, type (press/academic/commercial)
- Validation: Required fields, email format
-
AI Classification
- Implement: src/services/MediaTriage.service.js
- Method: classifyInquiry(text) → {category, priority, confidence}
- Test: Classify sample inquiries
-
Priority Scoring
- Method: calculatePriority(inquiry) → score (0.0-1.0)
- Factors: reach, relevance, urgency, alignment
- Test: Verify scores for sample inquiries
-
Draft Response Generation
- Method: generateDraft(inquiry, category) → draft
- Templates: Press, Academic, Commercial, Community
- Test: Generate drafts for each category
-
Admin Triage Dashboard
- View: /admin/media-triage
- Features: List inquiries, view AI analysis, approve/edit/reject drafts
- Test: Submit inquiry, review in dashboard
Week 8: Case Study Portal
-
Case Study Form
- Create: public/submit-case-study.html
- Fields: title, summary, date, AI system, source URL, failure mode, description, consent
- Validation: Required fields, URL format, consent checkbox
-
AI Relevance Analysis
- Implement: src/services/CaseStudyAnalysis.service.js
- Method: assessRelevance(submission) → {relevant, confidence, reasoning}
- Test: Analyze sample submissions
-
Tractatus Mapping
- Method: mapToFramework(submission) → {components[], prevention_strategy}
- Test: Map sample failures to framework components
-
Moderation Queue
- View: /admin/case-studies
- Features: List submissions, view AI analysis, approve/reject/request changes
- Test: Submit case study, review in queue
-
Public Case Study Viewer
- Create: public/case-studies/index.html (list)
- Create: public/case-studies/[slug].html (single)
- Test: View published case studies
-
Seed Case Studies (3-5 examples)
- Case 1: "The 27027 Incident" (instruction override)
- Case 2: "ChatGPT Medical Hallucination" (boundary violation)
- Case 3: "GitHub Copilot Code Injection" (context pressure)
- Case 4: "Bing Chat Sydney Persona" (metacognitive failure)
- Case 5: "Jasper AI Copyright Violation" (boundary violation)
- Publish: All case studies live
Milestone 2 Complete: ✅ All AI features operational, human oversight enforced
Week 9-10: Polish & Testing
Week 9: Governance Audit
-
Review All AI Prompts
- Blog topic suggestion prompt: Aligned with TRA-OPS-0002? ___
- Blog outline prompt: Aligned with TRA-OPS-0002? ___
- Media classification prompt: Aligned with TRA-OPS-0003? ___
- Case study analysis prompt: Aligned with TRA-OPS-0004? ___
- Action: Update prompts if needed
-
Test Boundary Enforcement
- Attempt to auto-publish blog post (should FAIL) ___
- Attempt to auto-send media response (should FAIL) ___
- Attempt to auto-publish case study (should FAIL) ___
- Verify: All blocked by BoundaryEnforcer
-
Audit Trail Verification
- Check database: All AI decisions logged? ___
- Fields present: input, output, human_decision, reviewer, timestamp? ___
- Retention: 2-year policy documented? ___
Week 10: End-to-End Testing
-
User Journey Testing
- Journey 1: Researcher explores docs, views demos, submits feedback
- Journey 2: Implementer reviews API docs, tests integration, submits case study
- Journey 3: Advocate reads blog, understands principles, shares on social media
- Verify: All journeys complete without errors
-
Mobile Testing
- Test on iPhone (Safari)
- Test on Android (Chrome)
- Verify: Responsive design, readable text, functional buttons
- Target: All pages usable on mobile
-
Browser Compatibility
- Test on Chrome (latest)
- Test on Firefox (latest)
- Test on Safari (latest)
- Test on Edge (latest)
- Verify: No console errors, all features work
-
Accessibility Re-Audit
- Run WAVE: https://wave.webaim.org
- Run Lighthouse: Accessibility score 100
- Manual keyboard navigation: All interactive elements accessible
- Screen reader test: NVDA or VoiceOver
- Target: WCAG AA compliant
-
Load Testing
- Tool: k6 or Artillery
- Scenario: 100 concurrent users, 5-minute test
- Metrics: Response time <3s, error rate <1%
- Verify: System handles load without degradation
Week 11-12: Soft Launch
Week 11: Launch Preparation
-
Finalize Soft Launch List
- Identify 8-12 researchers (names + emails)
- Identify 8-12 implementers (names + emails)
- Identify 4-6 advocates (names + emails)
- Total: 20-30 users
-
Create Feedback Survey
- Tool: Google Forms or TypeForm
- Questions: (Use template from PHASE-2-EMAIL-TEMPLATES.md)
- Test: Complete survey yourself, verify all questions work
- Link: _________________________
-
Prepare Invitation Emails
- Personalize Template A (Researcher) for each researcher
- Personalize Template B (Implementer) for each implementer
- Personalize Template C (Advocate) for each advocate
- Review: All names correct, specific reasons included
-
Platform Final Check
- All blog posts published? ___
- All case studies published? ___
- All demos working? ___
- Feedback form linked? ___
- No broken links? ___
- Status: Ready for users
Week 12: Launch & Feedback
-
Send Invitations
- Send all emails (BCC for privacy)
- Track: Spreadsheet with sent date, opened (if tracked), responded
- Date sent: _____________
-
Monitor Platform
- Daily: Check server logs for errors
- Daily: Review uptime monitoring (target: 99%+)
- Daily: Check feedback form responses
- Action: Respond to issues within 24 hours
-
Respond to Feedback
- Thank all respondents within 48 hours
- Address critical issues immediately
- Log all feedback themes in spreadsheet
- Target: >30% response rate (9+ responses from 30 invitations)
-
Follow-Up Reminders
- Week 1: Send reminder (Template E)
- Week 2: Send final reminder (Template G)
- Track: Response rate after each reminder
-
Compile Feedback Report
- Themes: What users liked, what confused them, what's missing
- Quantitative: Satisfaction scores, recommendation rate
- Action items: Prioritized list of improvements
- Share: Email summary to all participants
Milestone 3 Complete: ✅ Soft launch complete, feedback collected
Post-Phase 2: Transition to Phase 3
Evaluation
-
Review Success Criteria
- Technical success: Uptime 99%+, performance <3s, zero vulnerabilities ___
- Governance success: 100% human approval, zero violations ___
- User success: 20-50 users, 4+/5 rating, 50+ readers/post ___
- Business success: Costs <$150/month, zero breaches ___
-
Decision: Proceed to Phase 3?
- All criteria met? ___
- Critical bugs resolved? ___
- Positive user feedback? ___
- John Stroh approval? ___
- Decision: GO / NO-GO / EXTEND
Knowledge Transfer
-
Document Lessons Learned
- What went well? ___
- What didn't go well? ___
- What would we do differently? ___
- Action: Create Phase 2 retrospective document
-
Update Documentation
- Update CLAUDE.md with Phase 2 completion
- Update README.md if needed
- Archive planning documents
- Status: Documentation current
Handoff (if hiring admin reviewer)
- Admin Onboarding
- Share TRA-OPS-* governance documents
- Train on moderation workflows
- Grant access to admin dashboard
- Shadow for 2 weeks
- Status: Admin ready for independent work
Emergency Contacts
Server Issues:
- OVHCloud Support: support.ovh.com
- Server IP: ...
- SSH:
ssh tractatus@<server_ip>
API Issues:
- Anthropic Support: support@anthropic.com
- API Dashboard: https://console.anthropic.com
Domain/DNS Issues:
- OVHCloud DNS: ovh.com (control panel)
- DNS Checker: https://dnschecker.org
Security Incidents:
- Immediate:
sudo systemctl stop tractatus.service(shut down application) - Review logs:
sudo journalctl -u tractatus.service -n 1000 - Contact: John Stroh (john.stroh.nz@pm.me)
Progress Tracking
Week-by-Week Summary:
| Week | Focus | Status | Notes |
|---|---|---|---|
| 0 | Pre-Kickoff | ☐ | Administrative setup, accounts |
| 1 | Infrastructure | ☐ | Server provisioning, security |
| 2 | Deployment | ☐ | DNS, app code, database |
| 3 | Services | ☐ | Systemd, Nginx, SSL |
| 4 | Monitoring | ☐ | Logs, backups, testing |
| 5 | Claude API | ☐ | Integration, rate limits |
| 6 | Blog System | ☐ | Curation pipeline, seed content |
| 7 | Media Triage | ☐ | Forms, classification, dashboard |
| 8 | Case Studies | ☐ | Submissions, analysis, moderation |
| 9 | Governance | ☐ | Audit, boundary tests |
| 10 | Testing | ☐ | E2E, mobile, accessibility |
| 11 | Prep Launch | ☐ | User list, survey, emails |
| 12 | Soft Launch | ☐ | Send invitations, collect feedback |
Completion Percentage: ___% (update weekly)
Revision History
| Date | Version | Changes |
|---|---|---|
| 2025-10-07 | 1.0 | Initial Phase 2 kickoff checklist |
Checklist Owner: John Stroh Last Updated: 2025-10-07 Next Review: Weekly during Phase 2 execution