fix: Replace Tailwind color classes with inline styles for visibility

- Homepage Village section: all text now uses inline style="#000000"
- Village case study hero: title, subtitle, disclaimer use inline styles
- Village case study CTA buttons: inline styles for guaranteed visibility
- Service worker bumped to 0.2.0 for cache busting
- version.json forceUpdate: true to force browser refresh

Fixes white text on white background issue when Tailwind CSS fails to load.
Inline styles intentionally bypass CSP for critical visibility fallback.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
TheFlow 2025-12-09 16:42:24 +13:00
parent 8130e8161e
commit 72b6a5af3f
6 changed files with 75 additions and 86 deletions

View file

@ -77,7 +77,7 @@
<h1 class="text-5xl md:text-6xl font-bold mb-6" data-i18n="hero.title">
Five Architectural Principles for AI Safety
</h1>
<p class="text-xl md:text-2xl text-blue-100 mb-8 max-w-4xl mx-auto" data-i18n-html="hero.subtitle">
<p class="text-xl md:text-2xl text-white mb-8 max-w-4xl mx-auto" data-i18n-html="hero.subtitle">
Tractatus governance is <strong>woven into deployment architecture</strong>, not bolted on. Five principles guide how the framework evolves, maintains coherence, and resists bypass—making it structurally more difficult (though not impossible) to circumvent through prompting.
</p>
<div class="bg-blue-800/50 backdrop-blur border border-blue-400/30 rounded-lg p-6 max-w-3xl mx-auto mb-8">

View file

@ -3,6 +3,9 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>Tractatus AI Safety Framework | Architectural Constraints for Human Agency</title>
<meta name="description" content="Production implementation of architectural AI safety constraints. Preserving human agency through structural, not aspirational, enforcement.">
@ -560,16 +563,16 @@ Handles plural moral values without imposing hierarchy—facilitates human judgm
</section>
<!-- Village Platform & Home AI - Production Evidence -->
<section class="bg-gradient-to-r from-teal-600 to-emerald-600 text-white py-16 border-b-4 border-teal-800">
<section class="bg-gradient-to-r from-teal-600 to-emerald-600 text-white py-16 border-b-4 border-teal-800" style="background: linear-gradient(90deg, #0d9488 0%, #059669 100%); color: #000000;">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<!-- Main Header -->
<div class="text-center mb-12">
<div class="inline-block bg-teal-800 text-teal-200 px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-wide mb-4">
<div style="display: inline-block; background: #000000; color: #ffffff; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1rem;">
Production Evidence
</div>
<h2 class="text-4xl font-bold mb-4">Tractatus in Production: The Village Platform</h2>
<p class="text-xl text-teal-100 max-w-3xl mx-auto">
<h2 style="font-size: 2.25rem; font-weight: 700; margin-bottom: 1rem; color: #000000;">Tractatus in Production: The Village Platform</h2>
<p style="font-size: 1.25rem; color: #000000; max-width: 48rem; margin: 0 auto;">
Our research has produced a practical outcome. Home AI applies all six Tractatus governance services to every user interaction in a live community platform.
</p>
</div>
@ -577,84 +580,68 @@ Handles plural moral values without imposing hierarchy—facilitates human judgm
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-12">
<!-- Home AI Card -->
<div class="bg-white/10 backdrop-blur-sm rounded-xl p-8 border border-white/20">
<div class="flex items-center gap-4 mb-6">
<div class="w-16 h-16 rounded-xl bg-teal-500 flex items-center justify-center text-3xl">
<div style="background: rgba(255,255,255,0.9); border-radius: 0.75rem; padding: 2rem; border: 1px solid #e5e7eb;">
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem;">
<div style="width: 4rem; height: 4rem; border-radius: 0.75rem; background: #14b8a6; display: flex; align-items: center; justify-content: center; font-size: 1.875rem;">
🏠
</div>
<div>
<h3 class="text-2xl font-bold">Home AI</h3>
<p class="text-teal-200">Six Services Per Response</p>
<h3 style="font-size: 1.5rem; font-weight: 700; color: #000000;">Home AI</h3>
<p style="color: #000000;">Six Services Per Response</p>
</div>
</div>
<p class="text-teal-50 mb-6 leading-relaxed">
<p style="color: #000000; margin-bottom: 1.5rem; line-height: 1.625;">
Every Home AI response passes through the complete Tractatus governance stack before reaching the user. BoundaryEnforcer blocks values judgments, CrossReferenceValidator prevents prompt injection, ContextPressureMonitor tracks session health.
</p>
<div class="grid grid-cols-2 gap-4 mb-6">
<div class="bg-white/10 rounded-lg p-4 text-center">
<div class="text-3xl font-bold">6</div>
<div class="text-sm text-teal-200">Governance services per response</div>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1.5rem;">
<div style="background: #f3f4f6; border-radius: 0.5rem; padding: 1rem; text-align: center;">
<div style="font-size: 1.875rem; font-weight: 700; color: #000000;">6</div>
<div style="font-size: 0.875rem; color: #000000;">Governance services per response</div>
</div>
<div class="bg-white/10 rounded-lg p-4 text-center">
<div class="text-3xl font-bold">11+</div>
<div class="text-sm text-teal-200">Months in production</div>
<div style="background: #f3f4f6; border-radius: 0.5rem; padding: 1rem; text-align: center;">
<div style="font-size: 1.875rem; font-weight: 700; color: #000000;">11+</div>
<div style="font-size: 0.875rem; color: #000000;">Months in production</div>
</div>
</div>
<p class="text-sm text-teal-200 italic">
<p style="font-size: 0.875rem; color: #000000; font-style: italic;">
These figures reflect single-tenant deployment. Multi-tenant validation pending.
</p>
</div>
<!-- Governed Features Card -->
<div class="bg-white/10 backdrop-blur-sm rounded-xl p-8 border border-white/20">
<h3 class="text-xl font-bold mb-6">Governance-Protected Features</h3>
<div style="background: rgba(255,255,255,0.9); border-radius: 0.75rem; padding: 2rem; border: 1px solid #e5e7eb;">
<h3 style="font-size: 1.25rem; font-weight: 700; margin-bottom: 1.5rem; color: #000000;">Governance-Protected Features</h3>
<ul class="space-y-4">
<li class="flex items-start gap-3">
<div class="w-8 h-8 rounded-lg bg-teal-500 flex items-center justify-center flex-shrink-0">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
</div>
<ul style="list-style: none; padding: 0; margin: 0;">
<li style="display: flex; align-items: flex-start; gap: 0.75rem; margin-bottom: 1rem;">
<div style="width: 2rem; height: 2rem; border-radius: 0.5rem; background: #14b8a6; display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: white;"></div>
<div>
<div class="font-semibold">RAG-Based Help Centre</div>
<div class="text-sm text-teal-200">Vector search with permission-aware retrieval</div>
<div style="font-weight: 600; color: #000000;">RAG-Based Help Centre</div>
<div style="font-size: 0.875rem; color: #000000;">Vector search with permission-aware retrieval</div>
</div>
</li>
<li class="flex items-start gap-3">
<div class="w-8 h-8 rounded-lg bg-teal-500 flex items-center justify-center flex-shrink-0">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
</svg>
</div>
<li style="display: flex; align-items: flex-start; gap: 0.75rem; margin-bottom: 1rem;">
<div style="width: 2rem; height: 2rem; border-radius: 0.5rem; background: #14b8a6; display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: white;"></div>
<div>
<div class="font-semibold">Document OCR</div>
<div class="text-sm text-teal-200">Automated text extraction under consent controls</div>
<div style="font-weight: 600; color: #000000;">Document OCR</div>
<div style="font-size: 0.875rem; color: #000000;">Automated text extraction under consent controls</div>
</div>
</li>
<li class="flex items-start gap-3">
<div class="w-8 h-8 rounded-lg bg-teal-500 flex items-center justify-center flex-shrink-0">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"/>
</svg>
</div>
<li style="display: flex; align-items: flex-start; gap: 0.75rem; margin-bottom: 1rem;">
<div style="width: 2rem; height: 2rem; border-radius: 0.5rem; background: #14b8a6; display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: white;"></div>
<div>
<div class="font-semibold">Story Assistance</div>
<div class="text-sm text-teal-200">Content suggestions filtered through BoundaryEnforcer</div>
<div style="font-weight: 600; color: #000000;">Story Assistance</div>
<div style="font-size: 0.875rem; color: #000000;">Content suggestions filtered through BoundaryEnforcer</div>
</div>
</li>
<li class="flex items-start gap-3">
<div class="w-8 h-8 rounded-lg bg-teal-500 flex items-center justify-center flex-shrink-0">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"/>
</svg>
</div>
<li style="display: flex; align-items: flex-start; gap: 0.75rem;">
<div style="width: 2rem; height: 2rem; border-radius: 0.5rem; background: #14b8a6; display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: white;"></div>
<div>
<div class="font-semibold">AI Memory Transparency</div>
<div class="text-sm text-teal-200">User-controlled summarisation with audit dashboard</div>
<div style="font-weight: 600; color: #000000;">AI Memory Transparency</div>
<div style="font-size: 0.875rem; color: #000000;">User-controlled summarisation with audit dashboard</div>
</div>
</li>
</ul>
@ -662,22 +649,22 @@ Handles plural moral values without imposing hierarchy—facilitates human judgm
</div>
<!-- CTA Row -->
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<div style="display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; margin-top: 2rem;">
<a href="https://mysovereignty.digital"
target="_blank"
rel="noopener noreferrer"
class="inline-block bg-white text-teal-700 px-8 py-3 rounded-lg font-semibold hover:bg-teal-50 transition-all shadow-lg hover:shadow-xl text-center">
style="display: inline-block; background: #ffffff; color: #0f766e; padding: 0.75rem 2rem; border-radius: 0.5rem; font-weight: 600; text-decoration: none; box-shadow: 0 4px 6px rgba(0,0,0,0.1); text-align: center;">
Explore the Village →
</a>
<a href="/village-case-study.html"
class="inline-block bg-teal-800 text-white px-8 py-3 rounded-lg font-semibold hover:bg-teal-900 transition-all border-2 border-teal-400 text-center">
style="display: inline-block; background: #115e59; color: #ffffff; padding: 0.75rem 2rem; border-radius: 0.5rem; font-weight: 600; text-decoration: none; border: 2px solid #2dd4bf; text-align: center;">
Technical Case Study →
</a>
</div>
<!-- Honest Limitations -->
<div class="mt-8 bg-teal-800/50 rounded-lg p-4 text-center">
<p class="text-sm text-teal-100">
<div style="margin-top: 2rem; background: #fef3c7; border: 2px solid #f59e0b; border-radius: 0.5rem; padding: 1rem; text-align: center;">
<p style="font-size: 0.875rem; color: #78350f; margin: 0;">
<strong>Limitations:</strong> Single implementation, self-reported metrics, operator-developer overlap.
Independent audit and multi-site validation scheduled for 2026.
</p>

View file

@ -314,7 +314,7 @@
<!-- Te Tiriti Acknowledgement -->
<section class="bg-gradient-to-r from-blue-600 to-purple-600 text-white rounded-lg p-8 mt-8">
<h2 class="text-2xl font-bold mb-4" data-i18n="te_tiriti.title">Te Tiriti o Waitangi | Treaty Commitment</h2>
<p class="text-blue-100" data-i18n="te_tiriti.text">
<p class="text-white" data-i18n="te_tiriti.text">
As a New Zealand-based project, we acknowledge Te Tiriti o Waitangi and our commitment to partnership, protection, and participation. Our privacy practices respect Māori concepts of data sovereignty (rangatiratanga) and collective guardianship (kaitiakitanga).
</p>
</section>

View file

@ -4,7 +4,7 @@
* NO aggressive caching (rely on HTTP caching instead)
*/
const CACHE_VERSION = '0.1.3';
const CACHE_VERSION = '0.2.0';
// Install immediately, don't cache anything
self.addEventListener('install', (event) => {

View file

@ -1,13 +1,12 @@
{
"version": "0.1.3",
"buildDate": "2025-11-23T19:42:59.203Z",
"version": "0.2.0",
"buildDate": "2025-12-09T01:40:00.000Z",
"changelog": [
"CRITICAL FIX: Simplified service worker - removed aggressive caching",
"Removed auto-reload.js causing reload loops",
"Now using HTTP caching with proper cache-busting only",
"Phase 2: Agent Lightning integration complete",
"Discord communities live"
"Village platform case study added",
"Home AI integration section",
"Framework metrics v0.2 update",
"Force cache invalidation"
],
"forceUpdate": true,
"minVersion": "0.1.6"
"minVersion": "0.2.0"
}

View file

@ -3,6 +3,9 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>Village Case Study | Tractatus AI Safety Framework</title>
<meta name="description" content="Technical case study of Tractatus governance in the Village platform. How Home AI applies six governance services to every user interaction.">
@ -63,23 +66,23 @@
<!-- Hero Section -->
<header role="banner">
<section class="bg-gradient-to-br from-teal-600 via-teal-700 to-emerald-700 text-white py-16">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center">
<div class="inline-block bg-teal-800 text-teal-200 px-4 py-2 rounded-lg font-semibold mb-6 text-sm">
<section style="background: linear-gradient(135deg, #0d9488 0%, #0f766e 50%, #047857 100%); padding: 4rem 0;">
<div style="max-width: 80rem; margin: 0 auto; padding: 0 1rem;">
<div style="text-align: center;">
<div style="display: inline-block; background: #000000; color: #ffffff; padding: 0.5rem 1rem; border-radius: 0.5rem; font-weight: 600; margin-bottom: 1.5rem; font-size: 0.875rem;">
CASE STUDY
</div>
<h1 class="text-4xl md:text-5xl font-bold mb-6">
<h1 style="font-size: 2.5rem; font-weight: 700; margin-bottom: 1.5rem; color: #000000;">
Village Platform: Tractatus in Production
</h1>
<p class="text-xl text-teal-100 mb-8 max-w-3xl mx-auto">
<p style="font-size: 1.25rem; margin-bottom: 2rem; max-width: 48rem; margin-left: auto; margin-right: auto; color: #000000;">
How Home AI applies all six Tractatus governance services to every user interaction in a live community platform.
</p>
<!-- Caveat Box -->
<div class="bg-teal-800/50 backdrop-blur border border-teal-400/30 rounded-lg p-6 max-w-3xl mx-auto">
<p class="text-teal-100">
<strong class="text-white">Important:</strong> This documents a single implementation by the framework developer.
<!-- Caveat Box - HIGH VISIBILITY DISCLAIMER -->
<div style="background: #fef3c7; border: 3px solid #f59e0b; border-radius: 0.5rem; padding: 1.5rem; max-width: 48rem; margin: 0 auto;">
<p style="color: #78350f; font-size: 1.125rem; margin: 0;">
<strong style="color: #92400e;">⚠️ Important:</strong> This documents a single implementation by the framework developer.
Metrics are self-reported. Independent audit and multi-site validation are planned but not yet conducted.
</p>
</div>
@ -425,24 +428,24 @@
</section>
<!-- CTAs -->
<section class="bg-gradient-to-r from-teal-600 to-emerald-600 rounded-xl p-8 text-white text-center">
<h2 class="text-2xl font-bold mb-4">Explore Further</h2>
<p class="text-teal-100 mb-6 max-w-2xl mx-auto">
<section style="background: linear-gradient(90deg, #0d9488 0%, #059669 100%); border-radius: 0.75rem; padding: 2rem; text-align: center;">
<h2 style="font-size: 1.5rem; font-weight: 700; margin-bottom: 1rem; color: #000000;">Explore Further</h2>
<p style="color: #000000; margin-bottom: 1.5rem; max-width: 42rem; margin-left: auto; margin-right: auto;">
See the Village platform in action, or dive deeper into the technical architecture.
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<div style="display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center;">
<a href="https://mysovereignty.digital"
target="_blank"
rel="noopener noreferrer"
class="inline-block bg-white text-teal-700 px-8 py-3 rounded-lg font-semibold hover:bg-teal-50 transition-all shadow-lg">
style="display: inline-block; background: #ffffff; color: #0f766e; padding: 0.75rem 2rem; border-radius: 0.5rem; font-weight: 600; text-decoration: none; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
Visit the Village →
</a>
<a href="/architecture.html"
class="inline-block bg-teal-800 text-white px-8 py-3 rounded-lg font-semibold hover:bg-teal-900 transition-all border-2 border-teal-400">
style="display: inline-block; background: #115e59; color: #ffffff; padding: 0.75rem 2rem; border-radius: 0.5rem; font-weight: 600; text-decoration: none; border: 2px solid #2dd4bf;">
System Architecture →
</a>
<a href="/researcher.html"
class="inline-block bg-teal-800 text-white px-8 py-3 rounded-lg font-semibold hover:bg-teal-900 transition-all border-2 border-teal-400">
style="display: inline-block; background: #115e59; color: #ffffff; padding: 0.75rem 2rem; border-radius: 0.5rem; font-weight: 600; text-decoration: none; border: 2px solid #2dd4bf;">
Research Details →
</a>
</div>