fix: Improve WCAG AA contrast ratios across all public pages
Apply the same contrast fixes from the homepage audit to 10 additional pages. All changes are one shade darker within the same hue family: - text-teal-600 → text-teal-700 (4.08:1 → 5.31:1) - text-emerald-600 → text-emerald-700 (4.52:1 → 5.94:1) - text-gray-500 → text-gray-600 on gray backgrounds (3.77:1 → 5.27:1) Files: architecture, village-case-study, implementer, leader, timeline, api-reference, koha, koha/transparency, gdpr, agent-lightning Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ca2d9c09d2
commit
4a13e04aef
10 changed files with 42 additions and 42 deletions
|
|
@ -50,12 +50,12 @@
|
||||||
<a href="#authentication" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">Authentication</a>
|
<a href="#authentication" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">Authentication</a>
|
||||||
<a href="#documents" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">Documents</a>
|
<a href="#documents" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">Documents</a>
|
||||||
<a href="#governance" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded font-semibold">Governance Services</a>
|
<a href="#governance" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded font-semibold">Governance Services</a>
|
||||||
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-500 hover:text-gray-900 hover:bg-gray-100 rounded">1. Classifier</a>
|
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">1. Classifier</a>
|
||||||
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-500 hover:text-gray-900 hover:bg-gray-100 rounded">2. Validator</a>
|
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">2. Validator</a>
|
||||||
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-500 hover:text-gray-900 hover:bg-gray-100 rounded">3. BoundaryEnforcer</a>
|
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">3. BoundaryEnforcer</a>
|
||||||
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-500 hover:text-gray-900 hover:bg-gray-100 rounded">4. Pressure Monitor</a>
|
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">4. Pressure Monitor</a>
|
||||||
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-500 hover:text-gray-900 hover:bg-gray-100 rounded">5. Verifier</a>
|
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">5. Verifier</a>
|
||||||
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-500 hover:text-gray-900 hover:bg-gray-100 rounded">6. AuditLogger</a>
|
<a href="#governance" class="block py-2 px-3 pl-6 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">6. AuditLogger</a>
|
||||||
<a href="#admin" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">Admin</a>
|
<a href="#admin" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">Admin</a>
|
||||||
<a href="#errors" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">Error Codes</a>
|
<a href="#errors" class="block py-2 px-3 text-sm text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded">Error Codes</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
@ -822,8 +822,8 @@
|
||||||
<table class="w-full">
|
<table class="w-full">
|
||||||
<thead class="bg-gray-50 border-b">
|
<thead class="bg-gray-50 border-b">
|
||||||
<tr>
|
<tr>
|
||||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">Code</th>
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-600 uppercase">Code</th>
|
||||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">Description</th>
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-600 uppercase">Description</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="divide-y divide-gray-200">
|
<tbody class="divide-y divide-gray-200">
|
||||||
|
|
|
||||||
|
|
@ -163,15 +163,15 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4">
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4">
|
||||||
<div class="flex items-start">
|
<div class="flex items-start">
|
||||||
<svg class="w-5 h-5 text-emerald-600 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
<svg class="w-5 h-5 text-emerald-700 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
||||||
<span class="text-gray-700 text-sm" data-i18n="defence_in_depth.layer2_strength1"></span>
|
<span class="text-gray-700 text-sm" data-i18n="defence_in_depth.layer2_strength1"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-start">
|
<div class="flex items-start">
|
||||||
<svg class="w-5 h-5 text-emerald-600 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
<svg class="w-5 h-5 text-emerald-700 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
||||||
<span class="text-gray-700 text-sm" data-i18n="defence_in_depth.layer2_strength2"></span>
|
<span class="text-gray-700 text-sm" data-i18n="defence_in_depth.layer2_strength2"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-start">
|
<div class="flex items-start">
|
||||||
<svg class="w-5 h-5 text-emerald-600 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
<svg class="w-5 h-5 text-emerald-700 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
||||||
<span class="text-gray-700 text-sm" data-i18n="defence_in_depth.layer2_strength3"></span>
|
<span class="text-gray-700 text-sm" data-i18n="defence_in_depth.layer2_strength3"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -487,15 +487,15 @@
|
||||||
<p class="text-gray-600 text-sm mb-3">Where the framework started: six services validate every AI action before execution.</p>
|
<p class="text-gray-600 text-sm mb-3">Where the framework started: six services validate every AI action before execution.</p>
|
||||||
<ul class="text-gray-700 text-sm space-y-2">
|
<ul class="text-gray-700 text-sm space-y-2">
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-teal-600 mr-2">✓</span>
|
<span class="text-teal-700 mr-2">✓</span>
|
||||||
<span>Response cannot reach user without governance validation</span>
|
<span>Response cannot reach user without governance validation</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-teal-600 mr-2">✓</span>
|
<span class="text-teal-700 mr-2">✓</span>
|
||||||
<span>Values decisions deferred to humans</span>
|
<span>Values decisions deferred to humans</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-teal-600 mr-2">✓</span>
|
<span class="text-teal-700 mr-2">✓</span>
|
||||||
<span>Audit trail for every decision</span>
|
<span>Audit trail for every decision</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -507,15 +507,15 @@
|
||||||
<p class="text-gray-600 text-sm mb-3">Where the research is going: governance inside the training loop, not post-hoc filtering.</p>
|
<p class="text-gray-600 text-sm mb-3">Where the research is going: governance inside the training loop, not post-hoc filtering.</p>
|
||||||
<ul class="text-gray-700 text-sm space-y-2">
|
<ul class="text-gray-700 text-sm space-y-2">
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-teal-600 mr-2">✓</span>
|
<span class="text-teal-700 mr-2">✓</span>
|
||||||
<span>BoundaryEnforcer validates every training batch before forward pass</span>
|
<span>BoundaryEnforcer validates every training batch before forward pass</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-teal-600 mr-2">✓</span>
|
<span class="text-teal-700 mr-2">✓</span>
|
||||||
<span>Cross-tenant data rejected at the training step, not after</span>
|
<span>Cross-tenant data rejected at the training step, not after</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-teal-600 mr-2">✓</span>
|
<span class="text-teal-700 mr-2">✓</span>
|
||||||
<span>Consent verified per content item before inclusion</span>
|
<span>Consent verified per content item before inclusion</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -900,7 +900,7 @@
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
||||||
</svg>
|
</svg>
|
||||||
<h3 class="text-lg font-semibold text-gray-700 mb-2" data-i18n="interactive.panel_default_title"></h3>
|
<h3 class="text-lg font-semibold text-gray-700 mb-2" data-i18n="interactive.panel_default_title"></h3>
|
||||||
<p class="text-sm text-gray-500 max-w-md" data-i18n="interactive.panel_default_text"></p>
|
<p class="text-sm text-gray-600 max-w-md" data-i18n="interactive.panel_default_text"></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -984,19 +984,19 @@
|
||||||
</p>
|
</p>
|
||||||
<ul class="space-y-2 text-gray-700 text-sm">
|
<ul class="space-y-2 text-gray-700 text-sm">
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<svg class="w-4 h-4 text-teal-600 mr-2 mt-0.5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
<svg class="w-4 h-4 text-teal-700 mr-2 mt-0.5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
||||||
<span>Governance during training (Not-Separateness applied to optimisation)</span>
|
<span>Governance during training (Not-Separateness applied to optimisation)</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<svg class="w-4 h-4 text-teal-600 mr-2 mt-0.5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
<svg class="w-4 h-4 text-teal-700 mr-2 mt-0.5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
||||||
<span>Two-model architecture (3B fast + 8B reasoning) under unified governance</span>
|
<span>Two-model architecture (3B fast + 8B reasoning) under unified governance</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<svg class="w-4 h-4 text-teal-600 mr-2 mt-0.5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
<svg class="w-4 h-4 text-teal-700 mr-2 mt-0.5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
||||||
<span>Per-tenant LoRA adapters with consent-verified training data</span>
|
<span>Per-tenant LoRA adapters with consent-verified training data</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<svg class="w-4 h-4 text-teal-600 mr-2 mt-0.5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
<svg class="w-4 h-4 text-teal-700 mr-2 mt-0.5" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
||||||
<span>Thirteen wisdom traditions available for Layer 3 adoption</span>
|
<span>Thirteen wisdom traditions available for Layer 3 adoption</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
<div class="mb-12">
|
<div class="mb-12">
|
||||||
<h1 class="text-4xl md:text-5xl font-bold text-gray-900 mb-4" data-i18n="header.title">GDPR Compliance</h1>
|
<h1 class="text-4xl md:text-5xl font-bold text-gray-900 mb-4" data-i18n="header.title">GDPR Compliance</h1>
|
||||||
<p class="text-lg text-gray-600" data-i18n="header.subtitle">How Tractatus approaches data protection through architectural constraints</p>
|
<p class="text-lg text-gray-600" data-i18n="header.subtitle">How Tractatus approaches data protection through architectural constraints</p>
|
||||||
<p class="text-sm text-gray-500 mt-2" data-i18n="header.last_updated">Last updated: October 28, 2025</p>
|
<p class="text-sm text-gray-600 mt-2" data-i18n="header.last_updated">Last updated: October 28, 2025</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Introduction -->
|
<!-- Introduction -->
|
||||||
|
|
|
||||||
|
|
@ -1472,7 +1472,7 @@ for user_message in conversation:
|
||||||
<!-- Additional Governance Services -->
|
<!-- Additional Governance Services -->
|
||||||
<div class="bg-white rounded-lg p-6 shadow-md">
|
<div class="bg-white rounded-lg p-6 shadow-md">
|
||||||
<div class="flex items-start mb-3">
|
<div class="flex items-start mb-3">
|
||||||
<span class="text-3xl mr-3 text-teal-600">
|
<span class="text-3xl mr-3 text-teal-700">
|
||||||
<svg class="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"/></svg>
|
<svg class="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"/></svg>
|
||||||
</span>
|
</span>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
<div class="inline-flex items-center justify-center w-20 h-20 rounded-full bg-gradient-to-br from-purple-600 to-indigo-600 text-white text-4xl mb-6 shadow-lg">⚡</div>
|
<div class="inline-flex items-center justify-center w-20 h-20 rounded-full bg-gradient-to-br from-purple-600 to-indigo-600 text-white text-4xl mb-6 shadow-lg">⚡</div>
|
||||||
<h1 class="text-4xl md:text-5xl font-bold text-gray-900 mb-4" data-i18n="hero.title">Agent Lightning Integration</h1>
|
<h1 class="text-4xl md:text-5xl font-bold text-gray-900 mb-4" data-i18n="hero.title">Agent Lightning Integration</h1>
|
||||||
<p class="text-xl text-gray-600 max-w-3xl mx-auto leading-relaxed" data-i18n="hero.subtitle">Governance + Performance: Can safety boundaries persist through reinforcement learning optimization?</p>
|
<p class="text-xl text-gray-600 max-w-3xl mx-auto leading-relaxed" data-i18n="hero.subtitle">Governance + Performance: Can safety boundaries persist through reinforcement learning optimization?</p>
|
||||||
<p class="text-sm text-gray-500 mt-4"><strong data-i18n="hero.status">Status:</strong> <span data-i18n="hero.status_value">Operational (CPU baseline established)</span> | <strong data-i18n="hero.integration_date">Integration Date:</strong> <span data-i18n="hero.integration_date_value">November 2025</span></p>
|
<p class="text-sm text-gray-600 mt-4"><strong data-i18n="hero.status">Status:</strong> <span data-i18n="hero.status_value">Operational (CPU baseline established)</span> | <strong data-i18n="hero.integration_date">Integration Date:</strong> <span data-i18n="hero.integration_date_value">November 2025</span></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- What is Agent Lightning? -->
|
<!-- What is Agent Lightning? -->
|
||||||
|
|
|
||||||
|
|
@ -248,7 +248,7 @@
|
||||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:border-blue-600 focus:outline-none"
|
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:border-blue-600 focus:outline-none"
|
||||||
aria-describedby="public-name-help"
|
aria-describedby="public-name-help"
|
||||||
>
|
>
|
||||||
<p id="public-name-help" class="text-xs text-gray-500 mt-1" data-i18n="form.public_name_help">Can be your real name, organization, or pseudonym</p>
|
<p id="public-name-help" class="text-xs text-gray-600 mt-1" data-i18n="form.public_name_help">Can be your real name, organization, or pseudonym</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
Full visibility into donations received and how we allocate them to support the Tractatus Framework.
|
Full visibility into donations received and how we allocate them to support the Tractatus Framework.
|
||||||
</p>
|
</p>
|
||||||
<div class="flex items-center justify-center gap-4 mt-6">
|
<div class="flex items-center justify-center gap-4 mt-6">
|
||||||
<p class="text-sm text-gray-500" id="last-updated">
|
<p class="text-sm text-gray-600" id="last-updated">
|
||||||
Last updated: Loading...
|
Last updated: Loading...
|
||||||
</p>
|
</p>
|
||||||
<button id="export-csv" class="text-sm bg-white border border-gray-300 text-gray-700 px-4 py-2 rounded-md hover:bg-gray-50 transition flex items-center gap-2">
|
<button id="export-csv" class="text-sm bg-white border border-gray-300 text-gray-700 px-4 py-2 rounded-md hover:bg-gray-50 transition flex items-center gap-2">
|
||||||
|
|
|
||||||
|
|
@ -499,7 +499,7 @@
|
||||||
<div class="border border-gray-300 rounded-lg mb-4">
|
<div class="border border-gray-300 rounded-lg mb-4">
|
||||||
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="arch-layers" aria-expanded="false" aria-controls="arch-layers-content" id="arch-layers-button">
|
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="arch-layers" aria-expanded="false" aria-controls="arch-layers-content" id="arch-layers-button">
|
||||||
<h3 class="font-semibold text-gray-900" data-i18n="sections.architectural_approach.three_layer_title">Three-Layer Architecture</h3>
|
<h3 class="font-semibold text-gray-900" data-i18n="sections.architectural_approach.three_layer_title">Three-Layer Architecture</h3>
|
||||||
<svg id="arch-layers-icon" class="accordion-icon w-5 h-5 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg id="arch-layers-icon" class="accordion-icon w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -531,7 +531,7 @@
|
||||||
<div class="border border-gray-300 rounded-lg">
|
<div class="border border-gray-300 rounded-lg">
|
||||||
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="services" aria-expanded="false" aria-controls="services-content" id="services-button">
|
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="services" aria-expanded="false" aria-controls="services-content" id="services-button">
|
||||||
<h3 class="font-semibold text-gray-900" data-i18n="sections.architectural_approach.services_title">Six Governance Services</h3>
|
<h3 class="font-semibold text-gray-900" data-i18n="sections.architectural_approach.services_title">Six Governance Services</h3>
|
||||||
<svg id="services-icon" class="accordion-icon w-5 h-5 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg id="services-icon" class="accordion-icon w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -809,7 +809,7 @@
|
||||||
<div class="border border-gray-300 rounded-lg">
|
<div class="border border-gray-300 rounded-lg">
|
||||||
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="validation" aria-expanded="false" aria-controls="validation-content" id="validation-button">
|
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="validation" aria-expanded="false" aria-controls="validation-content" id="validation-button">
|
||||||
<h3 class="font-semibold text-gray-900" data-i18n="sections.development_status.validation_title">Validated vs. Not Validated</h3>
|
<h3 class="font-semibold text-gray-900" data-i18n="sections.development_status.validation_title">Validated vs. Not Validated</h3>
|
||||||
<svg id="validation-icon" class="accordion-icon w-5 h-5 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg id="validation-icon" class="accordion-icon w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -836,7 +836,7 @@
|
||||||
<div class="border border-gray-300 rounded-lg">
|
<div class="border border-gray-300 rounded-lg">
|
||||||
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="euaiact" aria-expanded="false" aria-controls="euaiact-content" id="euaiact-button">
|
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="euaiact" aria-expanded="false" aria-controls="euaiact-content" id="euaiact-button">
|
||||||
<h3 class="font-semibold text-gray-900" data-i18n="sections.eu_ai_act.article_14_title">Regulation 2024/1689, Article 14: Human Oversight</h3>
|
<h3 class="font-semibold text-gray-900" data-i18n="sections.eu_ai_act.article_14_title">Regulation 2024/1689, Article 14: Human Oversight</h3>
|
||||||
<svg id="euaiact-icon" class="accordion-icon w-5 h-5 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg id="euaiact-icon" class="accordion-icon w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -872,7 +872,7 @@
|
||||||
<div class="border border-gray-300 rounded-lg">
|
<div class="border border-gray-300 rounded-lg">
|
||||||
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="research" aria-expanded="false" aria-controls="research-content" id="research-button">
|
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="research" aria-expanded="false" aria-controls="research-content" id="research-button">
|
||||||
<h3 class="font-semibold text-gray-900" data-i18n="sections.research_foundations.org_theory_title">Organisational Theory & Philosophical Basis</h3>
|
<h3 class="font-semibold text-gray-900" data-i18n="sections.research_foundations.org_theory_title">Organisational Theory & Philosophical Basis</h3>
|
||||||
<svg id="research-icon" class="accordion-icon w-5 h-5 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg id="research-icon" class="accordion-icon w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -922,7 +922,7 @@
|
||||||
<div class="border border-gray-300 rounded-lg">
|
<div class="border border-gray-300 rounded-lg">
|
||||||
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="scope" aria-expanded="false" aria-controls="scope-content" id="scope-button">
|
<button type="button" class="accordion-button bg-gray-50 p-5 flex justify-between items-center" data-accordion="scope" aria-expanded="false" aria-controls="scope-content" id="scope-button">
|
||||||
<h3 class="font-semibold text-gray-900" data-i18n="sections.scope_limitations.title">What This Is Not • What It Offers</h3>
|
<h3 class="font-semibold text-gray-900" data-i18n="sections.scope_limitations.title">What This Is Not • What It Offers</h3>
|
||||||
<svg id="scope-icon" class="accordion-icon w-5 h-5 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg id="scope-icon" class="accordion-icon w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@
|
||||||
<div class="timeline-dot bg-teal-500 dot-teal"></div>
|
<div class="timeline-dot bg-teal-500 dot-teal"></div>
|
||||||
<div class="md:w-5/12 md:mr-auto md:pr-8">
|
<div class="md:w-5/12 md:mr-auto md:pr-8">
|
||||||
<div class="bg-white rounded-xl shadow-md p-6 border border-gray-200">
|
<div class="bg-white rounded-xl shadow-md p-6 border border-gray-200">
|
||||||
<span class="text-xs font-semibold text-teal-600 uppercase tracking-wider">October 16-19, 2025</span>
|
<span class="text-xs font-semibold text-teal-700 uppercase tracking-wider">October 16-19, 2025</span>
|
||||||
<h3 class="text-xl font-bold text-gray-900 mt-1 mb-3">Internationalisation</h3>
|
<h3 class="text-xl font-bold text-gray-900 mt-1 mb-3">Internationalisation</h3>
|
||||||
<p class="text-gray-700 text-sm mb-3">
|
<p class="text-gray-700 text-sm mb-3">
|
||||||
Full i18n support was added across all pages using a custom lightweight system (no framework dependency). Initial languages: English, German, French, with te reo Māori added later via DeepL. The language selection includes the Tino Rangatiratanga flag for Māori — a deliberate choice reflecting the project's commitment to indigenous data sovereignty over national symbolism.
|
Full i18n support was added across all pages using a custom lightweight system (no framework dependency). Initial languages: English, German, French, with te reo Māori added later via DeepL. The language selection includes the Tino Rangatiratanga flag for Māori — a deliberate choice reflecting the project's commitment to indigenous data sovereignty over national symbolism.
|
||||||
|
|
@ -238,7 +238,7 @@
|
||||||
<div class="timeline-dot bg-emerald-500 dot-emerald"></div>
|
<div class="timeline-dot bg-emerald-500 dot-emerald"></div>
|
||||||
<div class="md:w-5/12 md:mr-auto md:pr-8">
|
<div class="md:w-5/12 md:mr-auto md:pr-8">
|
||||||
<div class="bg-white rounded-xl shadow-md p-6 border border-gray-200 border-l-4 border-l-emerald-500">
|
<div class="bg-white rounded-xl shadow-md p-6 border border-gray-200 border-l-4 border-l-emerald-500">
|
||||||
<span class="text-xs font-semibold text-emerald-600 uppercase tracking-wider">December 2025</span>
|
<span class="text-xs font-semibold text-emerald-700 uppercase tracking-wider">December 2025</span>
|
||||||
<h3 class="text-xl font-bold text-gray-900 mt-1 mb-3">Village Case Study</h3>
|
<h3 class="text-xl font-bold text-gray-900 mt-1 mb-3">Village Case Study</h3>
|
||||||
<p class="text-gray-700 text-sm mb-3">
|
<p class="text-gray-700 text-sm mb-3">
|
||||||
The Village platform — a community-governed digital space — became the primary production deployment of Tractatus governance. Home AI, the platform's locally-scoped language model, applies all six governance services to every user interaction: RAG-based help, document OCR, story assistance, and AI memory transparency.
|
The Village platform — a community-governed digital space — became the primary production deployment of Tractatus governance. Home AI, the platform's locally-scoped language model, applies all six governance services to every user interaction: RAG-based help, document OCR, story assistance, and AI memory transparency.
|
||||||
|
|
@ -246,7 +246,7 @@
|
||||||
<p class="text-gray-700 text-sm">
|
<p class="text-gray-700 text-sm">
|
||||||
A formal case study was published documenting the deployment, including honest limitations: early-stage federated deployment, self-reported metrics, operator-developer overlap. Independent validation was scheduled for 2026.
|
A formal case study was published documenting the deployment, including honest limitations: early-stage federated deployment, self-reported metrics, operator-developer overlap. Independent validation was scheduled for 2026.
|
||||||
</p>
|
</p>
|
||||||
<a href="/village-case-study.html" class="inline-block mt-3 text-sm text-emerald-600 hover:text-emerald-700 font-medium">Read the case study →</a>
|
<a href="/village-case-study.html" class="inline-block mt-3 text-sm text-emerald-700 hover:text-emerald-800 font-medium">Read the case study →</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -306,11 +306,11 @@
|
||||||
<div class="text-sm text-gray-600 mt-1">Governance services</div>
|
<div class="text-sm text-gray-600 mt-1">Governance services</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="text-3xl font-bold text-teal-600">5</div>
|
<div class="text-3xl font-bold text-teal-700">5</div>
|
||||||
<div class="text-sm text-gray-600 mt-1">Languages supported</div>
|
<div class="text-sm text-gray-600 mt-1">Languages supported</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="text-3xl font-bold text-emerald-600">3</div>
|
<div class="text-3xl font-bold text-emerald-700">3</div>
|
||||||
<div class="text-sm text-gray-600 mt-1">Paper editions</div>
|
<div class="text-sm text-gray-600 mt-1">Paper editions</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,7 @@
|
||||||
<div class="bg-white rounded-xl shadow-md p-6">
|
<div class="bg-white rounded-xl shadow-md p-6">
|
||||||
<div class="flex items-center mb-4">
|
<div class="flex items-center mb-4">
|
||||||
<div class="w-12 h-12 rounded-lg bg-teal-100 flex items-center justify-center mr-4">
|
<div class="w-12 h-12 rounded-lg bg-teal-100 flex items-center justify-center mr-4">
|
||||||
<svg class="w-6 h-6 text-teal-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg class="w-6 h-6 text-teal-700" 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"/>
|
<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>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -290,7 +290,7 @@
|
||||||
<div class="bg-white rounded-xl shadow-md p-6">
|
<div class="bg-white rounded-xl shadow-md p-6">
|
||||||
<div class="flex items-center mb-4">
|
<div class="flex items-center mb-4">
|
||||||
<div class="w-12 h-12 rounded-lg bg-teal-100 flex items-center justify-center mr-4">
|
<div class="w-12 h-12 rounded-lg bg-teal-100 flex items-center justify-center mr-4">
|
||||||
<svg class="w-6 h-6 text-teal-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg class="w-6 h-6 text-teal-700" 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"/>
|
<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>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -309,7 +309,7 @@
|
||||||
<div class="bg-white rounded-xl shadow-md p-6">
|
<div class="bg-white rounded-xl shadow-md p-6">
|
||||||
<div class="flex items-center mb-4">
|
<div class="flex items-center mb-4">
|
||||||
<div class="w-12 h-12 rounded-lg bg-teal-100 flex items-center justify-center mr-4">
|
<div class="w-12 h-12 rounded-lg bg-teal-100 flex items-center justify-center mr-4">
|
||||||
<svg class="w-6 h-6 text-teal-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg class="w-6 h-6 text-teal-700" 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"/>
|
<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>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -329,7 +329,7 @@
|
||||||
<div class="bg-white rounded-xl shadow-md p-6">
|
<div class="bg-white rounded-xl shadow-md p-6">
|
||||||
<div class="flex items-center mb-4">
|
<div class="flex items-center mb-4">
|
||||||
<div class="w-12 h-12 rounded-lg bg-teal-100 flex items-center justify-center mr-4">
|
<div class="w-12 h-12 rounded-lg bg-teal-100 flex items-center justify-center mr-4">
|
||||||
<svg class="w-6 h-6 text-teal-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg class="w-6 h-6 text-teal-700" 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"/>
|
<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>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue