- 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>
717 lines
27 KiB
Markdown
717 lines
27 KiB
Markdown
# Tractatus Production - Comprehensive Testing Checklist
|
|
|
|
**Site:** https://agenticgovernance.digital
|
|
**Date Created:** 2025-10-07
|
|
**Phase:** Phase 2 - Week 5 (Post-Deployment)
|
|
**Purpose:** Ensure production site meets all quality, security, and governance standards
|
|
|
|
---
|
|
|
|
## Testing Instructions
|
|
|
|
**How to Use This Checklist:**
|
|
1. Work through each section sequentially
|
|
2. Mark items ✅ PASS, ❌ FAIL, or ⚠️ PARTIAL with notes
|
|
3. Document all failures with screenshots/logs
|
|
4. Create fix tickets for all ❌ FAIL items
|
|
5. Retest after fixes applied
|
|
|
|
**Testing Environment:**
|
|
- Production URL: https://agenticgovernance.digital
|
|
- Admin Login: admin@agenticgovernance.digital / TempAdmin@2025
|
|
- Browser: Chrome/Firefox/Safari (test all three)
|
|
- Devices: Desktop, Tablet, Mobile
|
|
|
|
---
|
|
|
|
## 1. Functional Testing
|
|
|
|
### 1.1 Homepage & Navigation
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Homepage loads at / | Shows hero section, navigation, three audience paths | ⬜ | |
|
|
| Navigation menu visible | All links present (Researcher/Implementer/Advocate/About/Blog/Contact) | ⬜ | |
|
|
| Logo links to homepage | Clicking logo returns to / | ⬜ | |
|
|
| Footer renders | Shows Te Tiriti acknowledgment, links, copyright | ⬜ | |
|
|
| Favicon displays | Browser tab shows Tractatus icon | ⬜ | |
|
|
| No console errors | Browser console clean on homepage | ⬜ | |
|
|
|
|
### 1.2 Three Audience Paths
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /researcher route works | Renders researcher landing page | ⬜ | |
|
|
| /implementer route works | Renders implementer landing page | ⬜ | |
|
|
| /advocate route works | Renders advocate landing page | ⬜ | |
|
|
| Path content distinct | Each path shows role-specific content | ⬜ | |
|
|
| Call-to-action buttons | Each path has clear next steps | ⬜ | |
|
|
|
|
### 1.3 Documentation Viewer
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /docs route works | Shows document library | ⬜ | |
|
|
| Search functionality | Can search documents by keyword | ⬜ | |
|
|
| Document rendering | Markdown renders correctly with formatting | ⬜ | |
|
|
| Code syntax highlighting | Code blocks have proper highlighting | ⬜ | |
|
|
| Anchor links work | Internal links navigate correctly | ⬜ | |
|
|
| PDF download available | Can download PDF versions | ⬜ | |
|
|
|
|
### 1.4 About & Values Pages
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /about route works | Renders about page | ⬜ | |
|
|
| /values route works | Renders values page | ⬜ | |
|
|
| Te Tiriti acknowledgment | Shows respectful acknowledgment | ⬜ | |
|
|
| Mission statement clear | Core values articulated | ⬜ | |
|
|
| Contact information | Email/social links present | ⬜ | |
|
|
|
|
### 1.5 Blog System
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /blog route works | Shows blog post list | ⬜ | |
|
|
| Blog posts render | Individual posts display correctly | ⬜ | |
|
|
| Metadata visible | Author, date, tags shown | ⬜ | |
|
|
| Pagination works | Can navigate between pages | ⬜ | |
|
|
| No posts shows message | Graceful empty state | ⬜ | |
|
|
|
|
---
|
|
|
|
## 2. Interactive Demonstrations
|
|
|
|
### 2.1 Instruction Classification Demo
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /demos/classification loads | Demo interface renders | ⬜ | |
|
|
| Text input field works | Can type instruction text | ⬜ | |
|
|
| "Classify" button functions | Triggers classification | ⬜ | |
|
|
| Quadrant result displays | Shows STRATEGIC/OPS/TAC/SYS/STO | ⬜ | |
|
|
| Persistence level shown | Shows HIGH/MEDIUM/LOW | ⬜ | |
|
|
| Temporal scope shown | Shows PROJECT/SESSION/TASK | ⬜ | |
|
|
| Verification requirement shown | Shows MANDATORY/RECOMMENDED/NONE | ⬜ | |
|
|
| Explicitness score shown | Shows 0.0-1.0 score | ⬜ | |
|
|
| Example instructions work | Pre-populated examples classify correctly | ⬜ | |
|
|
|
|
### 2.2 27027 Incident Visualizer
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /demos/27027 loads | Visualizer interface renders | ⬜ | |
|
|
| Timeline animation works | Shows incident progression | ⬜ | |
|
|
| "Replay" button functions | Can restart animation | ⬜ | |
|
|
| Instruction shown | Displays "MongoDB port 27017" | ⬜ | |
|
|
| Violation highlighted | Shows AI using 27027 instead | ⬜ | |
|
|
| CrossReferenceValidator demo | Shows how validator would catch it | ⬜ | |
|
|
| Code example present | Shows CrossReferenceValidator code | ⬜ | |
|
|
|
|
### 2.3 Boundary Enforcement Simulator
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /demos/boundary loads | Simulator interface renders | ⬜ | |
|
|
| Decision input works | Can type decision text | ⬜ | |
|
|
| "Check Boundary" button works | Triggers boundary analysis | ⬜ | |
|
|
| ALLOW result shown | Green indicator for automatable decisions | ⬜ | |
|
|
| BLOCK result shown | Red indicator for values decisions | ⬜ | |
|
|
| Section number cited | Shows boundary section (e.g., 12.1) | ⬜ | |
|
|
| Explanation provided | Clear reasoning for allow/block | ⬜ | |
|
|
| Example decisions work | Pre-populated examples analyze correctly | ⬜ | |
|
|
|
|
---
|
|
|
|
## 3. Admin Dashboard & Authentication
|
|
|
|
### 3.1 Login System
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /admin/login route works | Login form renders | ⬜ | |
|
|
| Valid credentials accepted | admin@agenticgovernance.digital / TempAdmin@2025 logs in | ⬜ | |
|
|
| Invalid credentials rejected | Wrong password shows error | ⬜ | |
|
|
| JWT token stored | localStorage has auth token | ⬜ | |
|
|
| Redirect to dashboard | Successful login goes to /admin/dashboard | ⬜ | |
|
|
| Logout functionality | "Logout" button clears token | ⬜ | |
|
|
| Protected routes secured | Cannot access /admin/* without login | ⬜ | |
|
|
|
|
### 3.2 Moderation Queue
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /admin/moderation route works | Moderation dashboard renders | ⬜ | |
|
|
| Queue items displayed | Shows pending items | ⬜ | |
|
|
| "Approve" button works | Approves item, updates status | ⬜ | |
|
|
| "Reject" button works | Rejects item, updates status | ⬜ | |
|
|
| Filtering works | Can filter by type (blog/media/case) | ⬜ | |
|
|
| Empty state shown | Graceful message when no items | ⬜ | |
|
|
|
|
### 3.3 User Management
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /admin/users route works | User list renders | ⬜ | |
|
|
| Admin user visible | Shows admin@agenticgovernance.digital | ⬜ | |
|
|
| Create user form works | Can add new user | ⬜ | |
|
|
| Edit user works | Can modify user details | ⬜ | |
|
|
| Delete user works | Can remove user | ⬜ | |
|
|
| Role assignment works | Can assign admin/moderator roles | ⬜ | |
|
|
|
|
---
|
|
|
|
## 4. API Endpoints
|
|
|
|
### 4.1 Health & Monitoring
|
|
|
|
| Test Case | Command | Expected Result | Status | Notes |
|
|
|-----------|---------|----------------|--------|-------|
|
|
| Health endpoint | `curl https://agenticgovernance.digital/health` | {"status":"ok","timestamp":"...","database":"connected","services":"operational"} | ⬜ | |
|
|
| Response time | Health check | <200ms response | ⬜ | |
|
|
| HTTPS enforced | `curl http://agenticgovernance.digital/health` | 301 redirect to HTTPS | ⬜ | |
|
|
|
|
### 4.2 Documents API
|
|
|
|
| Test Case | Command | Expected Result | Status | Notes |
|
|
|-----------|---------|----------------|--------|-------|
|
|
| List documents | `curl https://agenticgovernance.digital/api/documents` | JSON array of documents | ⬜ | |
|
|
| Get single document | `curl https://agenticgovernance.digital/api/documents/:id` | JSON document object | ⬜ | |
|
|
| Search documents | `curl https://agenticgovernance.digital/api/documents/search?q=boundary` | Filtered results | ⬜ | |
|
|
| Invalid ID returns 404 | `curl https://agenticgovernance.digital/api/documents/invalid` | 404 Not Found | ⬜ | |
|
|
|
|
### 4.3 Governance API
|
|
|
|
| Test Case | Command | Expected Result | Status | Notes |
|
|
|-----------|---------|----------------|--------|-------|
|
|
| Classify instruction | `curl -X POST https://agenticgovernance.digital/api/governance/classify -d '{"text":"Use port 27017"}'` | {"quadrant":"SYSTEM","persistence":"HIGH",...} | ⬜ | |
|
|
| Check boundary | `curl -X POST https://agenticgovernance.digital/api/governance/boundary -d '{"decision":"Update privacy policy"}'` | {"allowed":false,"section":"12.1",...} | ⬜ | |
|
|
| Get audit log | `curl https://agenticgovernance.digital/api/governance/audit` | JSON array of audit entries | ⬜ | |
|
|
|
|
### 4.4 Blog API
|
|
|
|
| Test Case | Command | Expected Result | Status | Notes |
|
|
|-----------|---------|----------------|--------|-------|
|
|
| List blog posts | `curl https://agenticgovernance.digital/api/blog` | JSON array of posts | ⬜ | |
|
|
| Get single post | `curl https://agenticgovernance.digital/api/blog/:slug` | JSON post object | ⬜ | |
|
|
| Create post (auth required) | `curl -X POST https://agenticgovernance.digital/api/blog -H "Authorization: Bearer TOKEN"` | 201 Created | ⬜ | |
|
|
| Unauthenticated create fails | `curl -X POST https://agenticgovernance.digital/api/blog` | 401 Unauthorized | ⬜ | |
|
|
|
|
---
|
|
|
|
## 5. Performance Testing
|
|
|
|
### 5.1 Lighthouse Scores (Desktop)
|
|
|
|
| Metric | Target | Actual | Status | Notes |
|
|
|--------|--------|--------|--------|-------|
|
|
| Performance | ≥90 | | ⬜ | |
|
|
| Accessibility | ≥90 | | ⬜ | |
|
|
| Best Practices | ≥90 | | ⬜ | |
|
|
| SEO | ≥90 | | ⬜ | |
|
|
|
|
**Run Command:**
|
|
```bash
|
|
npx lighthouse https://agenticgovernance.digital --view
|
|
```
|
|
|
|
### 5.2 Core Web Vitals
|
|
|
|
| Metric | Target | Actual | Status | Notes |
|
|
|--------|--------|--------|--------|-------|
|
|
| Largest Contentful Paint (LCP) | ≤2.5s | | ⬜ | |
|
|
| First Input Delay (FID) | ≤100ms | | ⬜ | |
|
|
| Cumulative Layout Shift (CLS) | ≤0.1 | | ⬜ | |
|
|
| First Contentful Paint (FCP) | ≤1.8s | | ⬜ | |
|
|
| Time to Interactive (TTI) | ≤3.8s | | ⬜ | |
|
|
|
|
**Test with:**
|
|
- Chrome DevTools > Lighthouse
|
|
- PageSpeed Insights: https://pagespeed.web.dev/
|
|
|
|
### 5.3 Page Load Times
|
|
|
|
| Page | Target | Actual | Status | Notes |
|
|
|------|--------|--------|--------|-------|
|
|
| Homepage (/) | <2s | | ⬜ | |
|
|
| /researcher | <2s | | ⬜ | |
|
|
| /docs | <2s | | ⬜ | |
|
|
| /blog | <2s | | ⬜ | |
|
|
| /demos/classification | <2s | | ⬜ | |
|
|
|
|
**Test with:**
|
|
```bash
|
|
curl -w "@curl-format.txt" -o /dev/null -s https://agenticgovernance.digital
|
|
```
|
|
|
|
**curl-format.txt:**
|
|
```
|
|
time_namelookup: %{time_namelookup}\n
|
|
time_connect: %{time_connect}\n
|
|
time_starttransfer: %{time_starttransfer}\n
|
|
time_total: %{time_total}\n
|
|
```
|
|
|
|
### 5.4 Asset Optimization
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| CSS minified | /css/tailwind.css is compressed | ⬜ | |
|
|
| JS minified | All .js files compressed | ⬜ | |
|
|
| Images optimized | All images <200KB | ⬜ | |
|
|
| Gzip enabled | Response has Content-Encoding: gzip | ⬜ | |
|
|
| Static caching | CSS/JS have Cache-Control: 1 year | ⬜ | |
|
|
|
|
---
|
|
|
|
## 6. Accessibility Testing (WCAG AA)
|
|
|
|
### 6.1 Keyboard Navigation
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Tab through navigation | All links reachable via Tab | ⬜ | |
|
|
| Focus indicators visible | Clear outline on focused elements | ⬜ | |
|
|
| Skip to content link | "Skip to main content" present | ⬜ | |
|
|
| Forms keyboard accessible | All form fields navigable | ⬜ | |
|
|
| Interactive demos keyboard accessible | Can use demos without mouse | ⬜ | |
|
|
| No keyboard traps | Can navigate in/out of all sections | ⬜ | |
|
|
|
|
### 6.2 Screen Reader Compatibility
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Semantic HTML | Proper heading hierarchy (h1 → h6) | ⬜ | |
|
|
| Alt text on images | All images have descriptive alt attributes | ⬜ | |
|
|
| ARIA labels | Interactive elements have aria-label | ⬜ | |
|
|
| Form labels | All inputs have associated labels | ⬜ | |
|
|
| Landmark regions | header, nav, main, footer present | ⬜ | |
|
|
| Link purpose clear | Link text describes destination | ⬜ | |
|
|
|
|
**Test with:**
|
|
- macOS VoiceOver: Cmd+F5
|
|
- NVDA (Windows)
|
|
- ChromeVox extension
|
|
|
|
### 6.3 Color & Contrast
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Text contrast ratio | ≥4.5:1 for normal text | ⬜ | |
|
|
| Large text contrast | ≥3:1 for large text (18pt+) | ⬜ | |
|
|
| No color-only information | Meaning not conveyed by color alone | ⬜ | |
|
|
| Focus indicators high contrast | Visible against all backgrounds | ⬜ | |
|
|
|
|
**Test with:**
|
|
- WebAIM Contrast Checker: https://webaim.org/resources/contrastchecker/
|
|
- Axe DevTools browser extension
|
|
|
|
### 6.4 Responsive Text
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Zoom to 200% | Content remains readable | ⬜ | |
|
|
| Font resizing works | Text scales without breaking layout | ⬜ | |
|
|
| No horizontal scrolling | Content reflows at 200% zoom | ⬜ | |
|
|
|
|
---
|
|
|
|
## 7. Security Testing
|
|
|
|
### 7.1 SSL/TLS Configuration
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| HTTPS enforced | HTTP redirects to HTTPS | ⬜ | |
|
|
| SSL certificate valid | Let's Encrypt cert expires 2026-01-05 | ⬜ | |
|
|
| Certificate chain complete | No chain errors | ⬜ | |
|
|
| TLS 1.2+ only | No SSL3, TLS 1.0/1.1 | ⬜ | |
|
|
| Strong ciphers | Only secure cipher suites | ⬜ | |
|
|
| A+ rating | SSL Labs score A or A+ | ⬜ | |
|
|
|
|
**Test with:**
|
|
- SSL Labs: https://www.ssllabs.com/ssltest/analyze.html?d=agenticgovernance.digital
|
|
|
|
### 7.2 Security Headers
|
|
|
|
| Header | Expected Value | Status | Notes |
|
|
|--------|---------------|--------|-------|
|
|
| Strict-Transport-Security | max-age=31536000; includeSubDomains | ⬜ | |
|
|
| X-Frame-Options | DENY | ⬜ | |
|
|
| X-Content-Type-Options | nosniff | ⬜ | |
|
|
| X-XSS-Protection | 1; mode=block | ⬜ | |
|
|
| Referrer-Policy | strict-origin-when-cross-origin | ⬜ | |
|
|
| Permissions-Policy | camera=(), microphone=(), geolocation=() | ⬜ | |
|
|
| Content-Security-Policy | See detailed CSP check below | ⬜ | |
|
|
|
|
**Test with:**
|
|
```bash
|
|
curl -I https://agenticgovernance.digital
|
|
```
|
|
|
|
### 7.3 Content Security Policy
|
|
|
|
| Directive | Expected Value | Status | Notes |
|
|
|-----------|---------------|--------|-------|
|
|
| default-src | 'self' | ⬜ | |
|
|
| script-src | 'self' | ⬜ | |
|
|
| style-src | 'self' 'unsafe-inline' | ⬜ | Phase 3: Remove 'unsafe-inline' |
|
|
| img-src | 'self' data: | ⬜ | |
|
|
| font-src | 'self' | ⬜ | |
|
|
| connect-src | 'self' | ⬜ | |
|
|
| frame-ancestors | 'none' | ⬜ | |
|
|
|
|
### 7.4 Authentication Security
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Password hashing | Bcrypt with 10+ rounds | ⬜ | |
|
|
| JWT signature valid | Token signed with strong secret | ⬜ | |
|
|
| JWT expiry set | Token expires in 7 days | ⬜ | |
|
|
| Session cookies secure | httpOnly, secure, sameSite flags | ⬜ | |
|
|
| Login rate limiting | Max 5 attempts per 15 minutes | ⬜ | |
|
|
| Password requirements | Min 12 chars, complexity enforced | ⬜ | |
|
|
|
|
### 7.5 Vulnerability Scanning
|
|
|
|
| Test Case | Command | Expected Result | Status | Notes |
|
|
|-----------|---------|----------------|--------|-------|
|
|
| npm audit | `npm audit` | 0 high/critical vulnerabilities | ⬜ | |
|
|
| OWASP ZAP scan | Run automated scan | 0 high/medium vulnerabilities | ⬜ | |
|
|
| SQL injection test | Test form inputs | No database errors | ⬜ | |
|
|
| XSS test | Test <script> in inputs | Input sanitized | ⬜ | |
|
|
|
|
---
|
|
|
|
## 8. Mobile & Cross-Browser
|
|
|
|
### 8.1 Responsive Design (Mobile)
|
|
|
|
| Test Case | Device | Expected Result | Status | Notes |
|
|
|-----------|--------|----------------|--------|-------|
|
|
| Homepage renders | iPhone 13 (390x844) | No horizontal scroll, readable text | ⬜ | |
|
|
| Navigation menu | Mobile | Hamburger menu works | ⬜ | |
|
|
| Forms usable | Mobile | Input fields large enough to tap | ⬜ | |
|
|
| Demos functional | Mobile | Interactive demos work on touch | ⬜ | |
|
|
| Tables responsive | Mobile | Tables scroll or stack | ⬜ | |
|
|
|
|
### 8.2 Tablet Testing
|
|
|
|
| Test Case | Device | Expected Result | Status | Notes |
|
|
|-----------|--------|----------------|--------|-------|
|
|
| Homepage renders | iPad (768x1024) | Proper layout, no overflow | ⬜ | |
|
|
| Navigation menu | Tablet | Desktop or mobile nav (design choice) | ⬜ | |
|
|
| Interactive demos | Tablet | Touch interactions work | ⬜ | |
|
|
|
|
### 8.3 Cross-Browser Testing
|
|
|
|
| Browser | Version | Expected Result | Status | Notes |
|
|
|---------|---------|----------------|--------|-------|
|
|
| Chrome | Latest | All features work | ⬜ | |
|
|
| Firefox | Latest | All features work | ⬜ | |
|
|
| Safari | Latest | All features work | ⬜ | |
|
|
| Edge | Latest | All features work | ⬜ | |
|
|
| Mobile Safari | iOS 15+ | All features work | ⬜ | |
|
|
| Mobile Chrome | Android 12+ | All features work | ⬜ | |
|
|
|
|
**Known Issues to Check:**
|
|
- CSS Grid support
|
|
- Flexbox behavior
|
|
- ES6 JavaScript features
|
|
- Fetch API availability
|
|
|
|
---
|
|
|
|
## 9. Governance Compliance
|
|
|
|
### 9.1 Tractatus Policies Visible
|
|
|
|
| Policy | Location | Expected Content | Status | Notes |
|
|
|--------|----------|------------------|--------|-------|
|
|
| TRA-OPS-0001 | /about/governance | Strategic decisions require human approval | ⬜ | |
|
|
| TRA-OPS-0002 | /about/governance | Blog content human-written, AI suggests topics | ⬜ | |
|
|
| TRA-OPS-0003 | /about/governance | Media triage AI classifies, human responds | ⬜ | |
|
|
| TRA-OPS-0004 | /about/governance | Case studies AI analyzes, human moderates | ⬜ | |
|
|
| TRA-OPS-0005 | /about/governance | Resource directory AI curates, human approves | ⬜ | |
|
|
|
|
### 9.2 Boundary Enforcement Active
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Privacy decision blocked | Cannot update privacy policy via API | ⬜ | |
|
|
| Values decision blocked | Cannot change core values via API | ⬜ | |
|
|
| User agency protected | Cannot disable user controls via API | ⬜ | |
|
|
| Technical config allowed | Can update non-values settings | ⬜ | |
|
|
|
|
### 9.3 Audit Trail Functionality
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Governance logs exist | Database has governance_logs collection | ⬜ | |
|
|
| Actions recorded | Blog post creation logged | ⬜ | |
|
|
| Timestamps present | All logs have ISO 8601 timestamps | ⬜ | |
|
|
| User attribution | Logs show which user performed action | ⬜ | |
|
|
| Query audit trail | Can retrieve logs via /api/governance/audit | ⬜ | |
|
|
|
|
### 9.4 Human Oversight Enforced
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Blog posts require approval | Cannot publish without moderation | ⬜ | |
|
|
| Media responses require approval | Cannot send without review | ⬜ | |
|
|
| Case studies require approval | Cannot publish without moderation | ⬜ | |
|
|
| Resource additions require approval | Cannot add without review | ⬜ | |
|
|
| Moderation queue populates | Pending items appear in queue | ⬜ | |
|
|
|
|
---
|
|
|
|
## 10. Content Quality
|
|
|
|
### 10.1 Document Migration
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| All markdown files migrated | Document count matches source | ⬜ | |
|
|
| Formatting preserved | Headers, lists, code blocks correct | ⬜ | |
|
|
| Links functional | Internal links resolve | ⬜ | |
|
|
| Images displayed | All images render | ⬜ | |
|
|
| Citations present | Academic references intact | ⬜ | |
|
|
|
|
### 10.2 About/Values Content
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Te Tiriti acknowledgment | Respectful, non-tokenistic | ⬜ | |
|
|
| Mission statement clear | Core purpose articulated | ⬜ | |
|
|
| Values explained | Sovereignty, transparency, harmlessness, community | ⬜ | |
|
|
| No placeholder text | All lorem ipsum removed | ⬜ | |
|
|
| Contact information accurate | admin@agenticgovernance.digital present | ⬜ | |
|
|
|
|
### 10.3 Interactive Demo Content
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Classification demo has instructions | Clear "how to use" text | ⬜ | |
|
|
| 27027 visualizer has context | Explains the incident | ⬜ | |
|
|
| Boundary simulator has examples | Pre-populated test cases | ⬜ | |
|
|
| Code examples accurate | All code snippets valid | ⬜ | |
|
|
|
|
---
|
|
|
|
## 11. Error Handling
|
|
|
|
### 11.1 404 Not Found
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| /nonexistent route | Shows custom 404 page | ⬜ | |
|
|
| Invalid document ID | Shows "Document not found" | ⬜ | |
|
|
| Invalid blog post slug | Shows "Post not found" | ⬜ | |
|
|
| 404 page has navigation | Can return to homepage | ⬜ | |
|
|
|
|
### 11.2 500 Internal Server Error
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Database connection failure | Shows generic error, no stack trace | ⬜ | |
|
|
| API endpoint error | Returns JSON error, not HTML | ⬜ | |
|
|
| Error logged | Server logs contain error details | ⬜ | |
|
|
| User-friendly message | No technical jargon exposed | ⬜ | |
|
|
|
|
### 11.3 Form Validation
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Empty required field | Shows "This field is required" | ⬜ | |
|
|
| Invalid email format | Shows "Invalid email address" | ⬜ | |
|
|
| Password too short | Shows "Password must be at least 12 characters" | ⬜ | |
|
|
| Duplicate email | Shows "Email already registered" | ⬜ | |
|
|
| Validation errors highlighted | Red border on invalid fields | ⬜ | |
|
|
|
|
---
|
|
|
|
## 12. Monitoring & Logging
|
|
|
|
### 12.1 Application Logs
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Logs exist | /var/www/tractatus/logs/ has files | ⬜ | |
|
|
| PM2 logs accessible | `pm2 logs tractatus` shows output | ⬜ | |
|
|
| Error logging works | Errors appear in logs | ⬜ | |
|
|
| Log rotation configured | Logs don't grow indefinitely | ⬜ | |
|
|
| Sensitive data not logged | No passwords/tokens in logs | ⬜ | |
|
|
|
|
### 12.2 Nginx Logs
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Access log exists | /var/log/nginx/tractatus-access.log | ⬜ | |
|
|
| Error log exists | /var/log/nginx/tractatus-error.log | ⬜ | |
|
|
| Requests logged | See incoming HTTP requests | ⬜ | |
|
|
| 404s logged | Failed requests recorded | ⬜ | |
|
|
|
|
### 12.3 MongoDB Logs
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| MongoDB logs accessible | `journalctl -u mongod` shows logs | ⬜ | |
|
|
| Connection events logged | See tractatus_user connections | ⬜ | |
|
|
| Slow queries logged | Queries >100ms appear | ⬜ | |
|
|
| Authentication failures logged | Failed login attempts recorded | ⬜ | |
|
|
|
|
---
|
|
|
|
## 13. Backup & Recovery
|
|
|
|
### 13.1 Database Backups
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| OVHCloud snapshot configured | Daily automatic snapshots | ⬜ | |
|
|
| Manual backup works | `mongodump` completes successfully | ⬜ | |
|
|
| Backup size reasonable | <100MB for Phase 2 data | ⬜ | |
|
|
| Restore tested | Can restore from backup | ⬜ | |
|
|
|
|
**Test Manual Backup:**
|
|
```bash
|
|
ssh -i ~/.ssh/tractatus_deploy ubuntu@vps-93a693da.vps.ovh.net \
|
|
"mongodump --uri='mongodb://tractatus_user:PASSWORD@localhost:27017/tractatus_prod' --out=/tmp/backup-test"
|
|
```
|
|
|
|
### 13.2 Application Code Backups
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| Git repository up to date | Latest code pushed to GitHub | ⬜ | |
|
|
| .env not in git | Secrets excluded from repository | ⬜ | |
|
|
| Local backup exists | Code backed up to local machine | ⬜ | |
|
|
|
|
---
|
|
|
|
## 14. Infrastructure Health
|
|
|
|
### 14.1 Server Resources
|
|
|
|
| Metric | Threshold | Actual | Status | Notes |
|
|
|--------|-----------|--------|--------|-------|
|
|
| CPU usage | <50% average | | ⬜ | |
|
|
| Memory usage | <70% | | ⬜ | |
|
|
| Disk usage | <50% | | ⬜ | |
|
|
| Disk I/O | <80% | | ⬜ | |
|
|
|
|
**Check with:**
|
|
```bash
|
|
ssh -i ~/.ssh/tractatus_deploy ubuntu@vps-93a693da.vps.ovh.net "top -bn1 | head -n 5 && df -h && free -h"
|
|
```
|
|
|
|
### 14.2 Service Status
|
|
|
|
| Service | Expected Status | Status | Notes |
|
|
|---------|----------------|--------|-------|
|
|
| MongoDB | Active (running) | ⬜ | |
|
|
| Nginx | Active (running) | ⬜ | |
|
|
| PM2 Tractatus | Online, uptime >0 | ⬜ | |
|
|
| UFW Firewall | Active | ⬜ | |
|
|
| Fail2ban | Active | ⬜ | |
|
|
|
|
**Check with:**
|
|
```bash
|
|
ssh -i ~/.ssh/tractatus_deploy ubuntu@vps-93a693da.vps.ovh.net \
|
|
"systemctl status mongod nginx ufw fail2ban --no-pager && pm2 status"
|
|
```
|
|
|
|
### 14.3 Network Connectivity
|
|
|
|
| Test Case | Expected Result | Status | Notes |
|
|
|-----------|----------------|--------|-------|
|
|
| DNS resolves | dig returns 91.134.240.3 | ⬜ | |
|
|
| Port 80 open | HTTP accessible | ⬜ | |
|
|
| Port 443 open | HTTPS accessible | ⬜ | |
|
|
| Port 22 open | SSH accessible | ⬜ | |
|
|
| Other ports closed | Only 22, 80, 443 accessible | ⬜ | |
|
|
|
|
**Test with:**
|
|
```bash
|
|
nmap -p 22,80,443,27017,9000 agenticgovernance.digital
|
|
```
|
|
|
|
---
|
|
|
|
## 15. Known Issues & Deferred Items
|
|
|
|
### 15.1 Phase 3 Items (Not Tested)
|
|
|
|
| Item | Reason Deferred | Target Phase |
|
|
|------|----------------|--------------|
|
|
| Koha donation system | Not implemented yet | Phase 3 |
|
|
| Multi-language support | Not implemented yet | Phase 3+ |
|
|
| Email notifications | ProtonBridge not configured | Phase 3 |
|
|
| Advanced analytics | Not implemented yet | Phase 3+ |
|
|
|
|
### 15.2 Acceptable Temporary Conditions
|
|
|
|
| Condition | Reason | Fix Timeline |
|
|
|-----------|--------|--------------|
|
|
| CSP allows 'unsafe-inline' styles | Inline styles in HTML | Phase 3 - Extract to external CSS |
|
|
| Single admin user | No user registration yet | Phase 2 Week 6 - Add user creation |
|
|
| No blog posts | Content being written | Phase 2 Week 7-8 - Publish 3-5 posts |
|
|
| TempAdmin@2025 password | Placeholder admin password | Phase 2 Week 5 - User changes on first login |
|
|
|
|
---
|
|
|
|
## Summary Report Template
|
|
|
|
**Date Tested:** ___________
|
|
**Tested By:** ___________
|
|
**Environment:** Production (https://agenticgovernance.digital)
|
|
|
|
### Overall Results
|
|
|
|
| Category | Total Tests | Passed | Failed | Partial | Pass Rate |
|
|
|----------|-------------|--------|--------|---------|-----------|
|
|
| 1. Functional Testing | | | | | |
|
|
| 2. Interactive Demos | | | | | |
|
|
| 3. Admin & Auth | | | | | |
|
|
| 4. API Endpoints | | | | | |
|
|
| 5. Performance | | | | | |
|
|
| 6. Accessibility | | | | | |
|
|
| 7. Security | | | | | |
|
|
| 8. Mobile & Browser | | | | | |
|
|
| 9. Governance Compliance | | | | | |
|
|
| 10. Content Quality | | | | | |
|
|
| 11. Error Handling | | | | | |
|
|
| 12. Monitoring & Logging | | | | | |
|
|
| 13. Backup & Recovery | | | | | |
|
|
| 14. Infrastructure Health | | | | | |
|
|
| **TOTAL** | | | | | **%** |
|
|
|
|
### Critical Failures (Must Fix Before Soft Launch)
|
|
|
|
1.
|
|
2.
|
|
3.
|
|
|
|
### Medium Priority Failures (Should Fix)
|
|
|
|
1.
|
|
2.
|
|
3.
|
|
|
|
### Low Priority / Enhancements
|
|
|
|
1.
|
|
2.
|
|
3.
|
|
|
|
### Next Steps
|
|
|
|
1.
|
|
2.
|
|
3.
|
|
|
|
---
|
|
|
|
**Checklist Version:** 1.0
|
|
**Last Updated:** 2025-10-07
|
|
**Next Review:** After Phase 2 Week 8 (pre-soft-launch)
|