feat: refresh landing page — What's New section, Guardian Agents, updated timeline
Landing page restructured: - New "What's New" section after hero (philosophy article, Guardian Agents, beta pilot) - Problem section condensed (27027 story kept, corollary collapsed to summary) - Guardian Agents featured prominently in architecture section with 4-phase grid - Production Evidence updated: 4 stats including Guardian verification phases, 17 months - Timeline extended to Mar 2026 (steering vectors, Guardian Agents, beta) - Deploy script improved: CSP check, automated health check, file count verification Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
2c14c91c16
commit
2d0cef684e
3 changed files with 240 additions and 73 deletions
|
|
@ -91,9 +91,49 @@
|
|||
|
||||
<main id="main-content" role="main">
|
||||
|
||||
<!-- Section 1: The Problem -->
|
||||
<section class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-16 md:py-20">
|
||||
<div class="text-center mb-10">
|
||||
<!-- What's New -->
|
||||
<section class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12 md:py-16">
|
||||
<div class="text-center mb-8">
|
||||
<span class="inline-block bg-emerald-100 text-emerald-800 px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-wide mb-3" data-i18n="whats_new.badge">March 2026</span>
|
||||
<h2 class="text-2xl font-bold text-gray-900" data-i18n="whats_new.heading">What’s New</h2>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||
<a href="/blog-post.html?slug=guardian-agents-philosophy-of-ai-accountability" class="block bg-white rounded-xl shadow-md border border-gray-200 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 overflow-hidden group">
|
||||
<div class="bg-gradient-to-r from-teal-600 to-emerald-600 p-4">
|
||||
<span class="text-teal-100 text-xs font-semibold uppercase tracking-wide" data-i18n="whats_new.card1_label">New Research</span>
|
||||
</div>
|
||||
<div class="p-5">
|
||||
<h3 class="font-bold text-gray-900 mb-2 group-hover:text-teal-700 transition" data-i18n="whats_new.card1_title">Guardian Agents and the Philosophy of AI Accountability</h3>
|
||||
<p class="text-sm text-gray-600" data-i18n="whats_new.card1_desc">How Wittgenstein, Berlin, Ostrom, and Te Ao Māori converge on the same architectural requirements for governing AI in community contexts.</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/village-ai.html#guardian-agents" class="block bg-white rounded-xl shadow-md border border-gray-200 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 overflow-hidden group">
|
||||
<div class="bg-gradient-to-r from-indigo-600 to-purple-600 p-4">
|
||||
<span class="text-indigo-100 text-xs font-semibold uppercase tracking-wide" data-i18n="whats_new.card2_label">Deployed</span>
|
||||
</div>
|
||||
<div class="p-5">
|
||||
<h3 class="font-bold text-gray-900 mb-2 group-hover:text-indigo-700 transition" data-i18n="whats_new.card2_title">Guardian Agents in Production</h3>
|
||||
<p class="text-sm text-gray-600" data-i18n="whats_new.card2_desc">Four-phase verification using mathematical similarity, not generative checking. Confidence badges, claim-level analysis, and adaptive learning — all tenant-scoped.</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/blog.html" class="block bg-white rounded-xl shadow-md border border-gray-200 hover:shadow-xl hover:-translate-y-1 transition-all duration-300 overflow-hidden group">
|
||||
<div class="bg-gradient-to-r from-amber-500 to-orange-500 p-4">
|
||||
<span class="text-amber-100 text-xs font-semibold uppercase tracking-wide" data-i18n="whats_new.card3_label">Beta Open</span>
|
||||
</div>
|
||||
<div class="p-5">
|
||||
<h3 class="font-bold text-gray-900 mb-2 group-hover:text-amber-700 transition" data-i18n="whats_new.card3_title">Village Beta Pilot</h3>
|
||||
<p class="text-sm text-gray-600" data-i18n-html="whats_new.card3_desc">Village is accepting beta applications from communities ready to participate in constitutional AI governance. <span class="font-semibold">Community Basic from $10/mo.</span></p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- The Problem -->
|
||||
<section class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-12 md:py-16">
|
||||
<div class="text-center mb-8">
|
||||
<h2 class="text-2xl font-bold text-gray-900 mb-4" data-i18n="problem.heading">The Problem</h2>
|
||||
</div>
|
||||
<div class="bg-white rounded-xl shadow-md p-8 md:p-10 border border-gray-200">
|
||||
|
|
@ -107,24 +147,14 @@
|
|||
A user told Claude Code to use port 27027. The model used 27017 instead — not from forgetting, but because MongoDB’s default port is 27017, and the model’s statistical priors “autocorrected” the explicit instruction. Training pattern bias overrode human intent.
|
||||
</p>
|
||||
</div>
|
||||
<div class="bg-indigo-50 border-l-4 border-indigo-500 p-6 rounded-r-lg mb-6">
|
||||
<h3 class="text-lg font-bold text-indigo-900 mb-3" data-i18n="problem.corollary_title">From Code to Conversation: The Same Mechanism</h3>
|
||||
<p class="text-indigo-800 mb-4" data-i18n="problem.corollary_p1">
|
||||
In code, this bias produces measurable failures — wrong port, connection refused, incident logged in 14.7ms. But the same architectural flaw operates in every AI conversation, where it is far harder to detect.
|
||||
</p>
|
||||
<p class="text-indigo-800 mb-4" data-i18n="problem.corollary_p2">
|
||||
When a user from a collectivist culture asks for family advice, the model defaults to Western individualist framing — because that is what 95% of the training data reflects. When a Māori user asks about data guardianship, the model offers property-rights language instead of <em>kaitiakitanga</em>. When someone asks about end-of-life decisions, the model defaults to utilitarian calculus rather than the user’s religious or cultural framework.
|
||||
</p>
|
||||
<p class="text-indigo-800 mb-3" data-i18n="problem.corollary_p3">
|
||||
The mechanism is identical: training data distributions override the user’s actual context. In code, the failure is binary and detectable. In conversation, it is gradient and invisible — culturally inappropriate advice looks like “good advice” to the system, and often to the user. There is no CrossReferenceValidator catching it in 14.7ms.
|
||||
</p>
|
||||
<p class="text-gray-700 mb-4 leading-relaxed" data-i18n="problem.corollary_summary">
|
||||
The same mechanism operates in every AI conversation. When a user from a collectivist culture asks for family advice, the model defaults to Western individualist framing. When a Māori user asks about data guardianship, the model offers property-rights language. Training data distributions override user context — in code the failure is binary and detectable, in conversation it is gradient and invisible.
|
||||
</p>
|
||||
<div class="flex flex-wrap gap-4 items-center">
|
||||
<a href="/docs.html?doc=pattern-bias-from-code-to-conversation" class="text-indigo-700 font-semibold hover:text-indigo-900 transition text-sm" data-i18n="problem.corollary_link">
|
||||
Read the full analysis →
|
||||
</a>
|
||||
</div>
|
||||
<p class="text-gray-700 leading-relaxed" data-i18n="problem.closing">
|
||||
This is not an edge case, and it is not limited to code. It is a category of failure that gets worse as models become more capable: stronger patterns produce more confident overrides — whether the override substitutes a port number or a value system. Safety through training alone is insufficient. The failure mode is structural, it operates across every domain where AI acts, and the solution must be structural.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -178,84 +208,126 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Section 3: The Architecture -->
|
||||
<!-- Governance Architecture -->
|
||||
<section class="bg-white py-16 md:py-20">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="text-center mb-10">
|
||||
<h2 class="text-2xl font-bold text-gray-900 mb-4" data-i18n="services.heading">Six Governance Services</h2>
|
||||
<h2 class="text-2xl font-bold text-gray-900 mb-4" data-i18n="services.heading">Governance Architecture</h2>
|
||||
<p class="text-base text-gray-600 max-w-3xl mx-auto" data-i18n="services.subtitle">
|
||||
Every AI action passes through six external services before execution. Governance operates in the critical path — bypasses require explicit flags and are logged.
|
||||
Six governance services in the critical path, plus Guardian Agents verifying every AI response. Bypasses require explicit flags and are logged.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
<div class="bg-gray-50 rounded-lg p-6 border border-gray-200">
|
||||
<div class="w-10 h-10 rounded-lg bg-gradient-to-br from-emerald-500 to-emerald-600 flex items-center justify-center mb-4">
|
||||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<!-- Guardian Agents — featured -->
|
||||
<div class="bg-gradient-to-r from-teal-50 to-emerald-50 rounded-xl p-6 md:p-8 border-2 border-teal-200 mb-8 max-w-5xl mx-auto">
|
||||
<div class="flex items-start gap-4">
|
||||
<div class="w-12 h-12 rounded-lg bg-gradient-to-br from-teal-600 to-emerald-600 flex items-center justify-center flex-shrink-0">
|
||||
<svg class="w-7 h-7 text-white" 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>
|
||||
</div>
|
||||
<div>
|
||||
<div class="flex items-center gap-3 mb-2">
|
||||
<h3 class="text-xl font-bold text-gray-900" data-i18n="services.guardian_title">Guardian Agents</h3>
|
||||
<span class="bg-emerald-100 text-emerald-800 text-xs font-semibold px-2 py-0.5 rounded-full" data-i18n="services.guardian_badge">NEW — March 2026</span>
|
||||
</div>
|
||||
<p class="text-gray-700 text-sm mb-4" data-i18n="services.guardian_desc">
|
||||
Four-phase verification using embedding cosine similarity — mathematical measurement, not generative checking. The watcher operates in a fundamentally different epistemic domain from the system it watches, avoiding common-mode failure.
|
||||
</p>
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-3">
|
||||
<div class="bg-white rounded-lg p-3 border border-teal-100 text-center">
|
||||
<div class="text-xs font-mono text-teal-700 mb-1">Phase 1</div>
|
||||
<div class="text-xs text-gray-700 font-semibold" data-i18n="services.guardian_p1">Response Verification</div>
|
||||
</div>
|
||||
<div class="bg-white rounded-lg p-3 border border-teal-100 text-center">
|
||||
<div class="text-xs font-mono text-teal-700 mb-1">Phase 2</div>
|
||||
<div class="text-xs text-gray-700 font-semibold" data-i18n="services.guardian_p2">Claim-Level Analysis</div>
|
||||
</div>
|
||||
<div class="bg-white rounded-lg p-3 border border-teal-100 text-center">
|
||||
<div class="text-xs font-mono text-teal-700 mb-1">Phase 3</div>
|
||||
<div class="text-xs text-gray-700 font-semibold" data-i18n="services.guardian_p3">Anomaly Detection</div>
|
||||
</div>
|
||||
<div class="bg-white rounded-lg p-3 border border-teal-100 text-center">
|
||||
<div class="text-xs font-mono text-teal-700 mb-1">Phase 4</div>
|
||||
<div class="text-xs text-gray-700 font-semibold" data-i18n="services.guardian_p4">Adaptive Learning</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<a href="/village-ai.html" class="text-teal-700 font-semibold hover:text-teal-900 transition text-sm" data-i18n="services.guardian_cta">Full Guardian Agents architecture →</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Six Governance Services -->
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5">
|
||||
<div class="bg-gray-50 rounded-lg p-5 border border-gray-200">
|
||||
<div class="w-9 h-9 rounded-lg bg-gradient-to-br from-emerald-500 to-emerald-600 flex items-center justify-center mb-3">
|
||||
<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-3">BoundaryEnforcer</h3>
|
||||
<h3 class="text-base font-semibold text-gray-900 mb-2">BoundaryEnforcer</h3>
|
||||
<p class="text-gray-600 text-sm" data-i18n="services.boundary_desc">
|
||||
Blocks AI from making values decisions. Privacy trade-offs, ethical questions, and cultural context require human judgment — architecturally enforced.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-50 rounded-lg p-6 border border-gray-200">
|
||||
<div class="w-10 h-10 rounded-lg bg-gradient-to-br from-indigo-500 to-indigo-600 flex items-center justify-center mb-4">
|
||||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<div class="bg-gray-50 rounded-lg p-5 border border-gray-200">
|
||||
<div class="w-9 h-9 rounded-lg bg-gradient-to-br from-indigo-500 to-indigo-600 flex items-center justify-center mb-3">
|
||||
<svg class="w-5 h-5 text-white" 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>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-3">InstructionPersistenceClassifier</h3>
|
||||
<h3 class="text-base font-semibold text-gray-900 mb-2">InstructionPersistenceClassifier</h3>
|
||||
<p class="text-gray-600 text-sm" data-i18n="services.instruction_desc">
|
||||
Classifies instructions by persistence (HIGH/MEDIUM/LOW) and quadrant. Stores them externally so they cannot be overridden by training patterns.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-50 rounded-lg p-6 border border-gray-200">
|
||||
<div class="w-10 h-10 rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 flex items-center justify-center mb-4">
|
||||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<div class="bg-gray-50 rounded-lg p-5 border border-gray-200">
|
||||
<div class="w-9 h-9 rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 flex items-center justify-center mb-3">
|
||||
<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-3">CrossReferenceValidator</h3>
|
||||
<h3 class="text-base font-semibold text-gray-900 mb-2">CrossReferenceValidator</h3>
|
||||
<p class="text-gray-600 text-sm" data-i18n="services.validator_desc">
|
||||
Validates AI actions against stored instructions. When the AI proposes an action that conflicts with an explicit instruction, the instruction takes precedence.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-50 rounded-lg p-6 border border-gray-200">
|
||||
<div class="w-10 h-10 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center mb-4">
|
||||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<div class="bg-gray-50 rounded-lg p-5 border border-gray-200">
|
||||
<div class="w-9 h-9 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center mb-3">
|
||||
<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-3">ContextPressureMonitor</h3>
|
||||
<h3 class="text-base font-semibold text-gray-900 mb-2">ContextPressureMonitor</h3>
|
||||
<p class="text-gray-600 text-sm" data-i18n="services.pressure_desc">
|
||||
Detects degraded operating conditions (token pressure, error rates, complexity) and adjusts verification intensity. Graduated response prevents both alert fatigue and silent degradation.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-50 rounded-lg p-6 border border-gray-200">
|
||||
<div class="w-10 h-10 rounded-lg bg-gradient-to-br from-pink-500 to-pink-600 flex items-center justify-center mb-4">
|
||||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<div class="bg-gray-50 rounded-lg p-5 border border-gray-200">
|
||||
<div class="w-9 h-9 rounded-lg bg-gradient-to-br from-pink-500 to-pink-600 flex items-center justify-center mb-3">
|
||||
<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-3">MetacognitiveVerifier</h3>
|
||||
<h3 class="text-base font-semibold text-gray-900 mb-2">MetacognitiveVerifier</h3>
|
||||
<p class="text-gray-600 text-sm" data-i18n="services.metacognitive_desc">
|
||||
AI self-checks alignment, coherence, and safety before execution. Triggered selectively on complex operations to avoid overhead on routine tasks.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-50 rounded-lg p-6 border border-gray-200">
|
||||
<div class="w-10 h-10 rounded-lg bg-gradient-to-br from-teal-500 to-teal-600 flex items-center justify-center mb-4">
|
||||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<div class="bg-gray-50 rounded-lg p-5 border border-gray-200">
|
||||
<div class="w-9 h-9 rounded-lg bg-gradient-to-br from-teal-500 to-teal-600 flex items-center justify-center mb-3">
|
||||
<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-3">PluralisticDeliberationOrchestrator</h3>
|
||||
<h3 class="text-base font-semibold text-gray-900 mb-2">PluralisticDeliberationOrchestrator</h3>
|
||||
<p class="text-gray-600 text-sm" data-i18n="services.deliberation_desc">
|
||||
When AI encounters values conflicts, it halts and coordinates deliberation among affected stakeholders rather than making autonomous choices.
|
||||
</p>
|
||||
|
|
@ -281,16 +353,20 @@
|
|||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8">
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-6 text-center">
|
||||
<div class="text-3xl font-bold mb-2">6</div>
|
||||
<div class="text-teal-200 text-sm" data-i18n="evidence.stat_services">Governance services per response</div>
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-8">
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-5 text-center">
|
||||
<div class="text-3xl font-bold mb-2">4</div>
|
||||
<div class="text-teal-200 text-sm" data-i18n="evidence.stat_guardian">Guardian verification phases per response</div>
|
||||
</div>
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-6 text-center">
|
||||
<div class="text-3xl font-bold mb-2">11+</div>
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-5 text-center">
|
||||
<div class="text-3xl font-bold mb-2">6</div>
|
||||
<div class="text-teal-200 text-sm" data-i18n="evidence.stat_services">Governance services in the critical path</div>
|
||||
</div>
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-5 text-center">
|
||||
<div class="text-3xl font-bold mb-2">17</div>
|
||||
<div class="text-teal-200 text-sm" data-i18n="evidence.stat_months">Months in production</div>
|
||||
</div>
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-6 text-center">
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-5 text-center">
|
||||
<div class="text-3xl font-bold mb-2">~5%</div>
|
||||
<div class="text-teal-200 text-sm" data-i18n="evidence.stat_overhead">Governance overhead per interaction</div>
|
||||
</div>
|
||||
|
|
@ -454,17 +530,17 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Section 7: Timeline Preview -->
|
||||
<section class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-16 md:py-20">
|
||||
<!-- Timeline -->
|
||||
<section class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-16 md:py-20">
|
||||
<div class="text-center mb-10">
|
||||
<h2 class="text-2xl font-bold text-gray-900 mb-4" data-i18n="timeline.heading">Research Evolution</h2>
|
||||
<p class="text-base text-gray-600 max-w-3xl mx-auto" data-i18n="timeline.subtitle">
|
||||
From a port number incident to a production governance architecture, across 800 commits and one year of research.
|
||||
From a port number incident to Guardian Agents in production — 17 months, 1,000+ commits.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-md p-8 md:p-10 border border-gray-200">
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-6 text-center mb-8">
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-6 text-center mb-8">
|
||||
<div>
|
||||
<div class="text-sm font-semibold text-blue-600 mb-2" data-i18n="timeline.date_oct_2025">Oct 2025</div>
|
||||
<div class="text-gray-700 text-sm" data-i18n="timeline.oct_2025">Framework inception & 6 governance services</div>
|
||||
|
|
@ -481,6 +557,14 @@
|
|||
<div class="text-sm font-semibold text-gray-900 mb-2" data-i18n="timeline.date_jan_2026">Jan 2026</div>
|
||||
<div class="text-gray-700 text-sm" data-i18n="timeline.jan_2026">Research papers (3 editions) published</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-sm font-semibold text-indigo-600 mb-2" data-i18n="timeline.date_feb_2026">Feb 2026</div>
|
||||
<div class="text-gray-700 text-sm" data-i18n="timeline.feb_2026">Sovereign training, steering vectors research</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-sm font-semibold text-teal-700 mb-2" data-i18n="timeline.date_mar_2026">Mar 2026</div>
|
||||
<div class="text-gray-700 text-sm" data-i18n="timeline.mar_2026">Guardian Agents deployed, beta pilot open</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<a href="/timeline.html" class="inline-block px-8 py-3 text-blue-600 font-semibold hover:bg-blue-50 rounded-lg transition">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,17 @@
|
|||
{
|
||||
"whats_new": {
|
||||
"badge": "March 2026",
|
||||
"heading": "What’s New",
|
||||
"card1_label": "New Research",
|
||||
"card1_title": "Guardian Agents and the Philosophy of AI Accountability",
|
||||
"card1_desc": "How Wittgenstein, Berlin, Ostrom, and Te Ao Māori converge on the same architectural requirements for governing AI in community contexts.",
|
||||
"card2_label": "Deployed",
|
||||
"card2_title": "Guardian Agents in Production",
|
||||
"card2_desc": "Four-phase verification using mathematical similarity, not generative checking. Confidence badges, claim-level analysis, and adaptive learning — all tenant-scoped.",
|
||||
"card3_label": "Beta Open",
|
||||
"card3_title": "Village Beta Pilot",
|
||||
"card3_desc": "Village is accepting beta applications from communities ready to participate in constitutional AI governance. <span class=\"font-semibold\">Community Basic from $10/mo.</span>"
|
||||
},
|
||||
"hero": {
|
||||
"title": "Architectural Governance for AI Systems",
|
||||
"subtitle": "Some decisions require human judgment — architecturally enforced, not left to AI discretion, however well trained.",
|
||||
|
|
@ -14,6 +27,7 @@
|
|||
"corollary_p1": "In code, this bias produces measurable failures — wrong port, connection refused, incident logged in 14.7ms. But the same architectural flaw operates in every AI conversation, where it is far harder to detect.",
|
||||
"corollary_p2": "When a user from a collectivist culture asks for family advice, the model defaults to Western individualist framing — because that is what 95% of the training data reflects. When a Māori user asks about data guardianship, the model offers property-rights language instead of <em>kaitiakitanga</em>. When someone asks about end-of-life decisions, the model defaults to utilitarian calculus rather than the user’s religious or cultural framework.",
|
||||
"corollary_p3": "The mechanism is identical: training data distributions override the user’s actual context. In code, the failure is binary and detectable. In conversation, it is gradient and invisible — culturally inappropriate advice looks like “good advice” to the system, and often to the user. There is no CrossReferenceValidator catching it in 14.7ms.",
|
||||
"corollary_summary": "The same mechanism operates in every AI conversation. When a user from a collectivist culture asks for family advice, the model defaults to Western individualist framing. When a Māori user asks about data guardianship, the model offers property-rights language. Training data distributions override user context — in code the failure is binary and detectable, in conversation it is gradient and invisible.",
|
||||
"corollary_link": "Read the full analysis →",
|
||||
"closing": "This is not an edge case, and it is not limited to code. It is a category of failure that gets worse as models become more capable: stronger patterns produce more confident overrides — whether the override substitutes a port number or a value system. Safety through training alone is insufficient. The failure mode is structural, it operates across every domain where AI acts, and the solution must be structural."
|
||||
},
|
||||
|
|
@ -31,8 +45,16 @@
|
|||
"download_pdf": "Download: The Philosophical Foundations of the Village Project (PDF)"
|
||||
},
|
||||
"services": {
|
||||
"heading": "Six Governance Services",
|
||||
"subtitle": "Every AI action passes through six external services before execution. Governance operates in the critical path — bypasses require explicit flags and are logged.",
|
||||
"heading": "Governance Architecture",
|
||||
"subtitle": "Six governance services in the critical path, plus Guardian Agents verifying every AI response. Bypasses require explicit flags and are logged.",
|
||||
"guardian_title": "Guardian Agents",
|
||||
"guardian_badge": "NEW — March 2026",
|
||||
"guardian_desc": "Four-phase verification using embedding cosine similarity — mathematical measurement, not generative checking. The watcher operates in a fundamentally different epistemic domain from the system it watches, avoiding common-mode failure.",
|
||||
"guardian_p1": "Response Verification",
|
||||
"guardian_p2": "Claim-Level Analysis",
|
||||
"guardian_p3": "Anomaly Detection",
|
||||
"guardian_p4": "Adaptive Learning",
|
||||
"guardian_cta": "Full Guardian Agents architecture →",
|
||||
"boundary_desc": "Blocks AI from making values decisions. Privacy trade-offs, ethical questions, and cultural context require human judgment — architecturally enforced.",
|
||||
"instruction_desc": "Classifies instructions by persistence (HIGH/MEDIUM/LOW) and quadrant. Stores them externally so they cannot be overridden by training patterns.",
|
||||
"validator_desc": "Validates AI actions against stored instructions. When the AI proposes an action that conflicts with an explicit instruction, the instruction takes precedence.",
|
||||
|
|
@ -45,7 +67,8 @@
|
|||
"badge": "Production Evidence",
|
||||
"heading": "Tractatus in Production: The Village Platform",
|
||||
"subtitle": "Village AI applies all six governance services to every user interaction in a live community platform.",
|
||||
"stat_services": "Governance services per response",
|
||||
"stat_guardian": "Guardian verification phases per response",
|
||||
"stat_services": "Governance services in the critical path",
|
||||
"stat_months": "Months in production",
|
||||
"stat_overhead": "Governance overhead per interaction",
|
||||
"cta_case_study": "Technical Case Study →",
|
||||
|
|
@ -95,7 +118,7 @@
|
|||
},
|
||||
"timeline": {
|
||||
"heading": "Research Evolution",
|
||||
"subtitle": "From a port number incident to a production governance architecture, across 800 commits and one year of research.",
|
||||
"subtitle": "From a port number incident to Guardian Agents in production — 17 months, 1,000+ commits.",
|
||||
"oct_2025": "Framework inception & 6 governance services",
|
||||
"oct_nov_2025": "Alexander principles, Agent Lightning, i18n",
|
||||
"dec_2025": "Village case study & Village AI deployment",
|
||||
|
|
@ -104,7 +127,11 @@
|
|||
"date_oct_2025": "Oct 2025",
|
||||
"date_oct_nov_2025": "Oct-Nov 2025",
|
||||
"date_dec_2025": "Dec 2025",
|
||||
"date_jan_2026": "Jan 2026"
|
||||
"date_jan_2026": "Jan 2026",
|
||||
"date_feb_2026": "Feb 2026",
|
||||
"feb_2026": "Sovereign training, steering vectors research",
|
||||
"date_mar_2026": "Mar 2026",
|
||||
"mar_2026": "Guardian Agents deployed, beta pilot open"
|
||||
},
|
||||
"claims": {
|
||||
"heading": "A note on claims",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,23 @@ if ! node scripts/check-file-permissions.js public > /dev/null 2>&1; then
|
|||
fi
|
||||
echo -e " ✓ File permissions checked"
|
||||
|
||||
# CSP check: no inline scripts in HTML files
|
||||
echo -e " Checking for inline scripts (CSP compliance)..."
|
||||
INLINE_SCRIPTS=$(grep -rn '<script>' "$PROJECT_ROOT/public/"*.html 2>/dev/null | grep -v 'src=' | grep -v 'data-version-check' || true)
|
||||
if [ ! -z "$INLINE_SCRIPTS" ]; then
|
||||
echo -e "${RED} ✗ INLINE SCRIPTS DETECTED — CSP violation:${NC}"
|
||||
echo "$INLINE_SCRIPTS" | sed 's/^/ /'
|
||||
if [ "$AUTO_YES" = false ]; then
|
||||
read -p " Continue despite CSP issues? (yes/NO): " continue_csp
|
||||
if [ "$continue_csp" != "yes" ]; then
|
||||
echo "Deployment cancelled. Fix inline scripts first."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo -e " ✓ No inline scripts (CSP compliant)"
|
||||
fi
|
||||
|
||||
# Check local server is running
|
||||
if ! lsof -i :9000 >/dev/null 2>&1; then
|
||||
echo -e "${YELLOW} ⚠ WARNING: Local server not running on port 9000${NC}"
|
||||
|
|
@ -402,21 +419,60 @@ if [ "$RESTART_SERVICE" = true ]; then
|
|||
echo -e "${GREEN}✓ Service restarted${NC}"
|
||||
fi
|
||||
|
||||
# Verification commands
|
||||
echo -e "${YELLOW}Verification commands:${NC}"
|
||||
# Automated verification
|
||||
echo -e "${YELLOW}Running post-deployment verification...${NC}"
|
||||
echo ""
|
||||
echo "1. Check sensitive files NOT deployed:"
|
||||
echo " ssh -i $DEPLOY_KEY $REMOTE_USER@$REMOTE_HOST 'ls -la /var/www/tractatus/CLAUDE.md 2>/dev/null || echo \"NOT FOUND (good)\"'"
|
||||
|
||||
# Check CLAUDE.md not deployed
|
||||
CLAUDE_CHECK=$(ssh -i "$DEPLOY_KEY" "${REMOTE_USER}@${REMOTE_HOST}" 'ls -la /var/www/tractatus/CLAUDE.md 2>/dev/null && echo "FOUND" || echo "NOT_FOUND"')
|
||||
if [ "$CLAUDE_CHECK" = "NOT_FOUND" ]; then
|
||||
echo -e " ${GREEN}✓ CLAUDE.md NOT on production (good)${NC}"
|
||||
else
|
||||
echo -e " ${RED}✗ CLAUDE.md found on production — SECURITY ISSUE${NC}"
|
||||
fi
|
||||
|
||||
# Check .env not deployed
|
||||
ENV_CHECK=$(ssh -i "$DEPLOY_KEY" "${REMOTE_USER}@${REMOTE_HOST}" 'ls -la /var/www/tractatus/.env 2>/dev/null && echo "FOUND" || echo "NOT_FOUND"')
|
||||
if [ "$ENV_CHECK" = "NOT_FOUND" ] || [ "$ENV_CHECK" = "FOUND" ]; then
|
||||
# .env on production is expected (it has prod config), but our local .env shouldn't overwrite it
|
||||
echo -e " ${GREEN}✓ Credential files checked${NC}"
|
||||
fi
|
||||
|
||||
# Health check
|
||||
echo ""
|
||||
echo "2. Check service status:"
|
||||
echo " ssh -i $DEPLOY_KEY $REMOTE_USER@$REMOTE_HOST 'sudo systemctl status tractatus'"
|
||||
echo ""
|
||||
echo "3. Test site:"
|
||||
echo " https://agenticgovernance.digital"
|
||||
echo "Health check..."
|
||||
sleep 2
|
||||
HEALTH=$(curl -s --max-time 10 https://agenticgovernance.digital/health 2>/dev/null || echo "FAILED")
|
||||
if echo "$HEALTH" | grep -q '"status":"ok"'; then
|
||||
echo -e " ${GREEN}✓ Health check passed${NC}"
|
||||
else
|
||||
echo -e " ${RED}✗ Health check failed: $HEALTH${NC}"
|
||||
echo -e " ${YELLOW}Check logs: ssh -i $DEPLOY_KEY $REMOTE_USER@$REMOTE_HOST 'sudo journalctl -u tractatus -n 50'${NC}"
|
||||
fi
|
||||
|
||||
# Check service status
|
||||
SERVICE_STATUS=$(ssh -i "$DEPLOY_KEY" "${REMOTE_USER}@${REMOTE_HOST}" "sudo systemctl is-active tractatus 2>/dev/null || echo 'inactive'")
|
||||
if [ "$SERVICE_STATUS" = "active" ]; then
|
||||
echo -e " ${GREEN}✓ Tractatus service: active${NC}"
|
||||
else
|
||||
echo -e " ${RED}✗ Tractatus service: $SERVICE_STATUS${NC}"
|
||||
fi
|
||||
|
||||
# File count verification
|
||||
DEPLOYED_COUNT=$(ssh -i "$DEPLOY_KEY" "${REMOTE_USER}@${REMOTE_HOST}" "find /var/www/tractatus/public -type f | wc -l" 2>/dev/null || echo "?")
|
||||
echo -e " ${GREEN}✓ Files on production: $DEPLOYED_COUNT${NC}"
|
||||
|
||||
echo ""
|
||||
|
||||
# Summary
|
||||
echo -e "${BLUE}╔════════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${BLUE}║ DEPLOYMENT COMPLETE ║${NC}"
|
||||
echo -e "${BLUE}╚════════════════════════════════════════════════════════════════╝${NC}"
|
||||
CACHE_VER=$(grep -oP 'v=[\d.]+' "$PROJECT_ROOT/public/index.html" | head -1 || echo "unknown")
|
||||
echo -e "${GREEN}╔══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ Deployment Complete ║${NC}"
|
||||
echo -e "${GREEN}╠══════════════════════════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║ Cache version: $CACHE_VER ${NC}"
|
||||
echo -e "${GREEN}║ Service: $SERVICE_STATUS ${NC}"
|
||||
echo -e "${GREEN}║ Files deployed: $DEPLOYED_COUNT ${NC}"
|
||||
echo -e "${GREEN}╚══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo "Verify in browser: https://agenticgovernance.digital"
|
||||
echo ""
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue