# 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 - [ ] **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 - [ ] **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@` - Update system: `apt update && apt upgrade -y` - Verify Ubuntu version: `lsb_release -a` (should be 22.04) - [ ] **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@` - Test login: `ssh tractatus@` - **Verify**: Can login as tractatus with SSH key ### 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) - [ ] **Firewall Setup (UFW)** - Allow SSH from your IP: `sudo ufw allow from 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 - [ ] **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` - [ ] **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` ### 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) - [ ] **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) - [ ] **Install Nginx** - Install: `sudo apt install -y nginx` - Start: `sudo systemctl start nginx` - Enable: `sudo systemctl enable nginx` - Verify: `curl http://` (should see "Welcome to nginx") - [ ] **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` --- ## 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: - TTL: 3600 - Add A record for www: - Type: A - Subdomain: www - Target: - TTL: 3600 - Add AAAA record (IPv6, if available): - Type: AAAA - Subdomain: @ - Target: - **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 ### 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` - [ ] **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.) - [ ] **Install Dependencies** - Install production: `npm install --production` - **Wait**: 2-5 minutes for npm install - Verify: `ls -la node_modules/` (should have packages) - [ ] **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= JWT_EXPIRY=7d CLAUDE_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) - [ ] **Build Assets** - Build Tailwind CSS: `npm run build:css` - Verify: `ls -lh public/css/tailwind.css` (should be ~24KB) ### Day 10: Database Initialization - [ ] **Configure MongoDB Authentication** - Edit config: `sudo nano /etc/mongod.conf` - Set: ```yaml security: authorization: enabled net: bindIp: 127.0.0.1 port: 27017 ``` - Restart: `sudo systemctl restart mongod` - Verify: `sudo systemctl status mongod` (should be running) - [ ] **Create Database & User** - Connect: `mongosh` - Create user: ```javascript use tractatus_prod db.createUser({ user: 'tractatus', pwd: '', roles: [{ role: 'readWrite', db: 'tractatus_prod' }] }) ``` - Exit: `exit` - [ ] **Initialize Database** - Run migration: `npm run init:db` - Seed admin user: `npm run seed:admin` - **Verify**: `mongosh tractatus_prod -u tractatus -p` (should connect) --- ## Week 3: Service Configuration ### Day 11-12: Systemd Service - [ ] **Create Systemd Service File** - Create: `sudo nano /etc/systemd/system/tractatus.service` - Content: ```ini [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` - [ ] **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 - [ ] **Test Application** - Test locally: `curl http://localhost:9000/health` - **Expected**: `{"status":"healthy","database":"connected"}` ### 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` - [ ] **Test Nginx Configuration** - Test config: `sudo nginx -t` - **Expected**: "syntax is ok", "test is successful" - [ ] **Reload Nginx** - Reload: `sudo systemctl reload nginx` - Check status: `sudo systemctl status nginx` - **Verify**: Nginx running, no errors ### 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) - [ ] **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 Auto-Renewal** - Dry run: `sudo certbot renew --dry-run` - **Expected**: "Congratulations, all renewals succeeded" - Verify timer: `sudo systemctl list-timers | grep certbot` --- ## 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 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` - [ ] **Configure Cron for Monitoring** - Edit crontab: `sudo crontab -e` - Add: `*/5 * * * * /usr/local/bin/tractatus-healthcheck.sh` - Verify: `sudo crontab -l` ### 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/` - [ ] **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` ### 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=` - Restart service: `sudo systemctl restart tractatus.service` - **Verify**: No errors in logs - [ ] **Rate Limiting Setup** - Configure in ClaudeAPI.service.js: - Requests/minute: 60 - Tokens/day: 500,000 - Monthly budget: $200 - Test limits: (unit test) - [ ] **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@` **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