docs: update framework to 6 services with PluralisticDeliberationOrchestrator

- Updated all core documentation (introduction, core-concepts, implementation guides)
- Added comprehensive PluralisticDeliberationOrchestrator sections
- Fixed implementation-guide-v1.1.md (BlogCuration → PluralisticDeliberationOrchestrator)
- Updated UI pages (index, researcher, leader) to reflect 6 services
- Enhanced cache busting with unified version script
- FAQ already includes comprehensive value pluralism coverage (Q18-22)

Framework now correctly documents all 6 mandatory services:
1. InstructionPersistenceClassifier
2. CrossReferenceValidator
3. BoundaryEnforcer
4. ContextPressureMonitor
5. MetacognitiveVerifier
6. PluralisticDeliberationOrchestrator (added October 2025)

🤖 Generated with Claude Code
This commit is contained in:
TheFlow 2025-10-12 19:55:44 +13:00
parent 43c00f21a7
commit 1906c0be0b
40 changed files with 586 additions and 63 deletions

View file

@ -115,7 +115,7 @@ The EU AI Act establishes penalties for non-compliance:
### 2.1 What Tractatus Provides
The framework consists of five components designed to create decision boundaries for AI systems:
The framework consists of six components designed to create decision boundaries for AI systems:
**1. InstructionPersistenceClassifier**
- Maintains organizational directives across AI sessions
@ -142,6 +142,11 @@ The framework consists of five components designed to create decision boundaries
- Designed to improve decision coherence
- Status: Research implementation, requires adaptation
**6. PluralisticDeliberationOrchestrator**
- Facilitates multi-stakeholder deliberation for values conflicts
- Designed to support non-hierarchical decision-making processes
- Status: Research implementation (October 2025), requires adaptation
### 2.2 What Tractatus Does NOT Provide
**Critical limitations to assess:**

View file

@ -553,6 +553,21 @@ Continuing in this degraded state risks introducing critical bugs.
- Alignment/coherence/completeness/safety/alternatives scoring
- Confidence thresholds block low-quality actions
### Pattern 5: Values Conflict Without Stakeholder Deliberation
**Symptoms:**
- Values decisions made without consulting affected stakeholders
- Hierarchical resolution of incommensurable values (privacy vs. safety)
- Loss of moral remainder documentation
- Precedents applied as binding rules rather than informative context
**Tractatus Prevention:**
- PluralisticDeliberationOrchestrator facilitates multi-stakeholder deliberation
- Non-hierarchical values deliberation process
- Documents dissenting views and moral remainder
- Creates informative (not binding) precedents
- Requires human approval for stakeholder list and final decision
---
## Lessons Learned

View file

@ -513,6 +513,228 @@ confidence = (
---
## 6. PluralisticDeliberationOrchestrator
### Purpose
Facilitates multi-stakeholder deliberation across plural moral values without imposing hierarchy when BoundaryEnforcer flags values conflicts.
### The Problem It Solves
BoundaryEnforcer blocks values decisions and requires human approval—but then what? How should humans deliberate when stakeholders hold different moral frameworks?
**Without structured deliberation:**
- No guidance for WHO should be consulted
- No process for HOW to deliberate fairly
- Risk of privileging one moral framework over others (consequentialism > deontology, or vice versa)
- No documentation of dissent or what was lost in the decision
- Precedents might become rigid rules (exactly what value pluralism rejects)
**Traditional approaches fail:**
- Majority vote → suppresses minority moral perspectives
- Expert panels → risk elite capture, exclude affected communities
- Utilitarian maximization → treats all values as commensurable (reducible to single metric)
### Core Principles (From Value Pluralism Research)
1. **Foundational Pluralism** - Moral frameworks are irreducibly different, no supervalue resolves them
2. **Incommensurability ≠ Incomparability** - Can compare values without common metric (practical wisdom, covering values)
3. **Rational Regret** - Document what's lost in decisions, not just what's gained (moral remainder)
4. **Legitimate Disagreement** - Valid outcome when values are genuinely incommensurable
5. **Provisional Agreement** - Decisions are reviewable when context changes, not permanent rules
### When to Invoke
- BoundaryEnforcer flags values conflict → triggers PluralisticDeliberationOrchestrator
- Privacy vs. safety trade-offs (GDPR compliance vs. fraud detection)
- Individual rights vs. collective welfare tensions (contact tracing vs. privacy)
- Cultural values conflicts (Western individualism vs. Indigenous communitarian ethics)
- Policy decisions affecting diverse communities
### How It Works
**1. Values Conflict Detection**
```javascript
const conflict = await PluralisticDeliberationOrchestrator.analyzeConflict({
decision: "Disclose user data to prevent imminent harm?",
context: { urgency: 'CRITICAL', scale: '100+ affected', harm_type: 'physical' }
});
// Output:
{
moral_frameworks_in_tension: [
{
framework: "Rights-based (Deontological)",
position: "Privacy is inviolable right, cannot trade for outcomes",
stakeholders: ["privacy_advocates", "civil_liberties_orgs"]
},
{
framework: "Consequentialist (Utilitarian)",
position: "Maximize welfare, prevent harm to 100+ people",
stakeholders: ["public_safety_officials", "harm_prevention_specialists"]
},
{
framework: "Care Ethics",
position: "Context matters, relationships and vulnerability central",
stakeholders: ["affected_individuals", "community_support_services"]
}
],
value_trade_offs: ["Privacy vs. Safety", "Individual rights vs. Collective welfare"],
affected_stakeholder_groups: ["users_with_data", "potential_victims", "platform_community"]
}
```
**2. Stakeholder Engagement**
- **AI suggests** stakeholders based on conflict analysis
- **Human MUST approve** stakeholder list (prevents AI from excluding marginalized voices)
- Ensure diverse perspectives: affected parties, not just experts
- Use AdaptiveCommunicationOrchestrator for culturally appropriate outreach
**3. Deliberation Facilitation**
Structured rounds (NOT majority vote):
- **Round 1**: Each moral framework states position and concerns
- **Round 2**: Identify shared values and explore accommodations
- **Round 3**: Clarify areas of agreement and irreducible differences
- **Round 4**: Document decision, dissent, and moral remainder
**Example Deliberation Structure:**
```javascript
{
invitation_message: "Multiple moral frameworks are in tension. We need diverse perspectives.",
discussion_rounds: [
{
round: 1,
purpose: 'State positions from each moral framework',
format: 'Written submissions + oral presentations'
},
{
round: 2,
purpose: 'Explore accommodations and shared values',
format: 'Facilitated discussion, no hierarchy'
},
{
round: 3,
purpose: 'Identify irreconcilable differences',
format: 'Consensus-seeking with documented dissent'
}
]
}
```
**4. Outcome Documentation**
```javascript
{
decision_made: "Disclose data in this specific case",
values_prioritized: ["harm_prevention", "collective_safety"],
values_deprioritized: ["individual_privacy", "data_autonomy"],
moral_remainder: "Privacy violation acknowledged as moral loss, not costless trade-off",
dissenting_perspectives: [
{
framework: "Rights-based (Deontological)",
objection: "Privacy violation sets dangerous precedent, erodes rights over time",
stakeholders: ["privacy_advocates", "civil_liberties_groups"]
}
],
justification: "Given imminent physical harm to 100+ people, prioritized safety with procedural safeguards",
precedent_applicability: "Applies to imminent physical harm cases ONLY, not routine data requests",
precedent_binding: false, // Informative, not rigid rule
review_date: "2025-11-12",
review_trigger: "If context changes (e.g., harm prevented, new technical solutions)"
}
```
### Integration with Other Services
1. **BoundaryEnforcer** → triggers PluralisticDeliberationOrchestrator when values conflict detected
2. **CrossReferenceValidator** → checks deliberation outcomes against precedent database
3. **AdaptiveCommunicationOrchestrator** → ensures culturally appropriate stakeholder engagement
4. **MetacognitiveVerifier** → assesses AI's value conflict detection accuracy
5. **InstructionPersistenceClassifier** → stores deliberation outcomes as HIGH persistence instructions
### Tiered Response by Urgency
- **CRITICAL** (minutes to hours): Automated triage + immediate human review → full deliberation post-incident
- **URGENT** (hours to days): Expedited stakeholder consultation (compressed process)
- **IMPORTANT** (weeks): Full deliberative process with all stakeholders
- **ROUTINE** (months): Precedent matching + lightweight review
### Enforcement Mechanisms
**Human Oversight: MANDATORY**
- AI facilitates, humans decide (TRA-OPS-0002)
- Stakeholder list requires human approval (prevents exclusion)
- Deliberation outcomes require human approval
- Values decisions NEVER automated
**Non-Hierarchical Process:**
- No automatic value ranking (privacy > safety or safety > privacy)
- Moral frameworks treated as equally legitimate
- Dissent documented with full legitimacy, not dismissed
- Precedents are informative guides, not binding rules
### Real-World Example
**Scenario: AI hiring tool deployment**
**Without PluralisticDeliberationOrchestrator:**
- BoundaryEnforcer blocks: "This affects hiring fairness"
- Human decides: "Seems fine, approve"
- No consultation with affected groups
- No documentation of trade-offs
**With PluralisticDeliberationOrchestrator:**
1. **Detects frameworks in tension:**
- Efficiency (business value)
- Equity (fair opportunity for underrepresented groups)
- Privacy (applicant data protection)
2. **Identifies stakeholders (human-approved):**
- Job applicants (especially from underrepresented groups)
- Hiring managers
- Diversity advocates
- Legal/compliance team
- Current employees (workplace culture affected)
3. **Structured deliberation:**
- Round 1: Each perspective states concerns
- Round 2: Explore accommodations (e.g., mandatory human review for borderline cases)
- Round 3: Clarify trade-offs and document what cannot be resolved
4. **Documents outcome:**
- Decision: Deploy with mandatory human review for borderline cases
- Values prioritized: Efficiency + Equity
- Values deprioritized: Full automation
- Moral remainder: Applicants experience slower process (acknowledged loss)
- Dissent: Full automation advocates object, request 6-month review
- Review date: 2026-04-15
### Why Added in October 2025
Initially designed as 5-service framework. PluralisticDeliberationOrchestrator promoted to 6th mandatory service in October 2025 after recognizing:
**Gap in original 5 services:**
- BoundaryEnforcer blocks values decisions ✓
- But provides no structure for HOW humans should deliberate ✗
- Risk of ad-hoc, inconsistent, or unfair deliberation processes ✗
**What the 6th service adds:**
- Structured stakeholder engagement
- Non-hierarchical deliberation process
- Documentation of dissent and moral remainder
- Precedent database (informative, not binding)
- Integration with value pluralism research
Status changed from "Phase 2 enhancement" to **mandatory sixth service** because deploying AI systems in diverse communities without structured value pluralism was deemed architecturally insufficient.
---
## How the Services Work Together
### Example: Preventing the 27027 Incident
@ -550,6 +772,10 @@ confidence = (
- Increases error frequency pressure
- May recommend session handoff if errors cluster
6. **PluralisticDeliberationOrchestrator**:
- Not needed (technical decision, not values conflict)
- But would engage stakeholders if port choice had security/policy implications
**Result**: Incident prevented before execution
---
@ -572,8 +798,9 @@ The six services integrate at multiple levels:
1. MetacognitiveVerifier checks reasoning
2. CrossReferenceValidator checks instruction history
3. BoundaryEnforcer checks decision domain
4. If approved, execute
5. ContextPressureMonitor updates state
4. If values conflict → PluralisticDeliberationOrchestrator facilitates deliberation
5. If approved, execute
6. ContextPressureMonitor updates state
### Session End
- Store new instructions

View file

@ -118,13 +118,15 @@ The framework consists of 6 core services:
1. **InstructionPersistenceClassifier**: Classify and persist user instructions
2. **CrossReferenceValidator**: Validate actions against stored instructions
3. **BoundaryEnforcer**: Enforce inst_016-018 content validation
3. **BoundaryEnforcer**: Block values decisions requiring human approval
4. **ContextPressureMonitor**: Monitor session quality degradation
5. **MetacognitiveVerifier**: Confidence-based action verification
6. **BlogCuration**: Validate blog content against governance rules
6. **PluralisticDeliberationOrchestrator**: Facilitate multi-stakeholder deliberation for values conflicts
All services integrate with **MemoryProxy** for MongoDB access.
**Note**: BlogCuration is an application-level service, separate from the 6 core governance framework services.
### Basic Initialization
```javascript
@ -133,7 +135,7 @@ const CrossReferenceValidator = require('./src/services/CrossReferenceValidator.
const BoundaryEnforcer = require('./src/services/BoundaryEnforcer.service');
const ContextPressureMonitor = require('./src/services/ContextPressureMonitor.service');
const MetacognitiveVerifier = require('./src/services/MetacognitiveVerifier.service');
const BlogCuration = require('./src/services/BlogCuration.service');
const PluralisticDeliberationOrchestrator = require('./src/services/PluralisticDeliberationOrchestrator.service');
// Initialize all services (loads governance rules from MongoDB)
async function initializeFramework() {
@ -142,9 +144,9 @@ async function initializeFramework() {
await BoundaryEnforcer.initialize();
await ContextPressureMonitor.initialize();
await MetacognitiveVerifier.initialize();
await BlogCuration.initialize();
await PluralisticDeliberationOrchestrator.initialize();
console.log('✓ Tractatus Framework initialized');
console.log('✓ Tractatus Framework initialized (6 services)');
}
// Call during application startup

View file

@ -34,7 +34,8 @@ const {
CrossReferenceValidator,
BoundaryEnforcer,
ContextPressureMonitor,
MetacognitiveVerifier
MetacognitiveVerifier,
PluralisticDeliberationOrchestrator
} = require('tractatus-framework');
// Initialize services
@ -43,6 +44,7 @@ const validator = new CrossReferenceValidator();
const enforcer = new BoundaryEnforcer();
const monitor = new ContextPressureMonitor();
const verifier = new MetacognitiveVerifier();
const deliberator = new PluralisticDeliberationOrchestrator();
```
---
@ -467,6 +469,107 @@ await executeAction();
---
### PluralisticDeliberationOrchestrator
**When to Use:**
- When BoundaryEnforcer flags a values conflict
- Privacy vs. safety trade-offs
- Individual rights vs. collective welfare tensions
- Cultural values conflicts
- Policy decisions affecting diverse communities
**Integration:**
```javascript
// Trigger deliberation when values conflict detected
async function handleValuesDecision(decision) {
// First, BoundaryEnforcer blocks the decision
const boundary = enforcer.enforce(decision);
if (!boundary.allowed && boundary.reason.includes('values')) {
// Initiate pluralistic deliberation
const deliberation = await deliberator.orchestrate({
decision: decision,
context: {
stakeholders: ['privacy_advocates', 'safety_team', 'legal', 'affected_users'],
moral_frameworks: ['deontological', 'consequentialist', 'care_ethics'],
urgency: 'IMPORTANT' // CRITICAL, URGENT, IMPORTANT, ROUTINE
}
});
// Structure returned:
// {
// status: 'REQUIRES_HUMAN_APPROVAL',
// stakeholder_list: [...],
// deliberation_structure: {
// rounds: 3,
// values_in_tension: ['privacy', 'harm_prevention'],
// frameworks: ['deontological', 'consequentialist']
// },
// outcome_template: {
// decision: null,
// values_prioritized: [],
// values_deprioritized: [],
// moral_remainder: null,
// dissenting_views: [],
// review_date: null
// },
// precedent_applicability: {
// narrow: 'user_data_disclosure_imminent_threat',
// broad: 'privacy_vs_safety_tradeoffs'
// }
// }
// AI facilitates, humans decide (mandatory human approval)
await approvalQueue.add({
type: 'pluralistic_deliberation',
decision: decision,
deliberation_plan: deliberation,
requires_human_approval: true,
stakeholder_approval_required: true // Must approve stakeholder list
});
return {
status: 'DELIBERATION_INITIATED',
message: 'Values conflict detected. Pluralistic deliberation process started.',
stakeholders_to_convene: deliberation.stakeholder_list
};
}
return { status: 'NO_DELIBERATION_NEEDED' };
}
// After human-led deliberation, store outcome as precedent
async function storeDeliberationOutcome(outcome) {
await deliberator.storePrecedent({
decision: outcome.decision,
values_prioritized: outcome.values_prioritized,
values_deprioritized: outcome.values_deprioritized,
moral_remainder: outcome.moral_remainder,
dissenting_views: outcome.dissenting_views,
review_date: outcome.review_date,
applicability: {
narrow: outcome.narrow_scope,
broad: outcome.broad_scope
},
binding: false // Precedents are informative, not binding
});
return { status: 'PRECEDENT_STORED' };
}
```
**Key Principles:**
- **Foundational Pluralism**: No universal value hierarchy (privacy > safety or safety > privacy)
- **Legitimate Disagreement**: Valid outcome when values genuinely incommensurable
- **Human-in-the-Loop**: AI facilitates deliberation structure, humans make decisions
- **Non-Hierarchical**: No automatic ranking of moral frameworks
- **Provisional Decisions**: All values decisions reviewable when context changes
- **Moral Remainder Documentation**: Record what's lost in trade-offs
---
## Configuration
### Instruction Storage
@ -572,6 +675,7 @@ Once comfortable:
1. Add BoundaryEnforcer for values-sensitive domains
2. Add ContextPressureMonitor for long sessions
3. Add MetacognitiveVerifier for complex operations
4. Add PluralisticDeliberationOrchestrator for multi-stakeholder values conflicts
### 3. Tune Thresholds

View file

@ -99,6 +99,18 @@ AI self-checks its own reasoning before proposing actions:
Returns confidence scores and recommends PROCEED, PROCEED_WITH_CAUTION, REQUIRE_REVIEW, or BLOCKED.
### 6. PluralisticDeliberationOrchestrator
Facilitates multi-stakeholder deliberation when BoundaryEnforcer flags values conflicts:
- **Conflict Detection** - Identifies moral frameworks in tension (deontological, consequentialist, care ethics, etc.)
- **Stakeholder Engagement** - Identifies affected parties requiring representation (human approval mandatory)
- **Non-Hierarchical Deliberation** - No automatic value ranking (privacy vs. safety decisions require structured process)
- **Outcome Documentation** - Records decision, dissenting views, moral remainder, and precedent applicability
- **Provisional Decisions** - All values decisions are reviewable when context changes
AI facilitates deliberation, humans decide. Precedents are informative, not binding.
## Why "Tractatus"?
The name honors Ludwig Wittgenstein's *Tractatus Logico-Philosophicus*, which established that:
@ -201,9 +213,10 @@ AI systems gradually make decisions in values-sensitive domains without realizin
**Phase 1 Implementation Complete (2025-10-07)**
- All six core services implemented and tested (100% coverage)
- 192 unit tests passing
- 192 unit tests passing (including PluralisticDeliberationOrchestrator)
- Instruction persistence database operational
- Active governance for development sessions
- Value pluralism framework integrated (October 2025)
**This website** is built using the Tractatus framework to govern its own development - a practice called "dogfooding."

View file

@ -131,6 +131,12 @@ The translation from organizational theory to AI safety architecture manifests i
- Prevents tactical decisions from violating strategic directives
- **Result**: Organizational coherence across time horizons
**4. PluralisticDeliberationOrchestrator**
- Implements agentic organization and network structure principles (Laloux, Robertson, Hamel)
- Facilitates multi-stakeholder deliberation without imposing value hierarchy
- Distributed decision-making authority based on affected stakeholder groups
- **Result**: Non-hierarchical values deliberation reflecting agentic organizational principles
### Why This Matters: The 27027 Incident
The organizational theory foundation explains why Tractatus prevents failures like the 27027 incident:

View file

@ -9,6 +9,8 @@
"dev:simple": "nodemon src/server.js",
"build:css": "npx tailwindcss -i ./public/css/src/tailwind.css -o ./public/css/tailwind.css --minify",
"watch:css": "npx tailwindcss -i ./public/css/src/tailwind.css -o ./public/css/tailwind.css --watch",
"update:cache": "node scripts/update-cache-version.js",
"build": "npm run update:cache && npm run build:css",
"test": "jest --coverage",
"test:watch": "jest --watch",
"test:unit": "jest tests/unit",
@ -22,7 +24,7 @@
"seed:admin": "node scripts/seed-admin.js",
"seed:projects": "node scripts/seed-projects.js",
"generate:pdfs": "node scripts/generate-pdfs.js",
"deploy": "bash scripts/deploy-frontend.sh",
"deploy": "npm run build && bash scripts/deploy-frontend.sh",
"framework:init": "node scripts/session-init.js",
"framework:watchdog": "node scripts/framework-watchdog.js",
"framework:check": "node scripts/pre-action-check.js",

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>About | Tractatus AI Safety Framework</title>
<meta name="description" content="Learn about the Tractatus Framework: our mission, values, team, and commitment to preserving human agency through structural AI safety.">
<link rel="stylesheet" href="/css/tailwind.css?v=1759833751">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
/* Accessibility: Skip link */
.skip-link { position: absolute; left: -9999px; top: 0; }
@ -26,7 +26,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1759875690"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Hero Section -->
<div class="bg-gradient-to-br from-blue-50 to-purple-50 py-20">

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>API Reference | Tractatus Framework</title>
<meta name="description" content="Complete API reference for Tractatus Framework - endpoints, authentication, request/response formats, and examples.">
<link rel="stylesheet" href="/css/tailwind.css?v=1759833751">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
.endpoint-badge {
@apply inline-block px-2 py-1 rounded text-xs font-mono font-semibold;

View file

@ -31,7 +31,7 @@
<!-- RSS Feed -->
<link rel="alternate" type="application/rss+xml" title="Tractatus Blog RSS Feed" href="/api/blog/rss">
<link rel="stylesheet" href="/css/tailwind.css?v=1760127701">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
/* Accessibility: Skip link */
.skip-link { position: absolute; left: -9999px; top: 0; }
@ -117,7 +117,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1760127701"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Breadcrumb -->
<div class="bg-white border-b border-gray-200">
@ -301,7 +301,7 @@
</footer>
<!-- Load Blog Post JavaScript -->
<script src="/js/blog-post.js?v=1760127701"></script>
<script src="/js/blog-post.js?v=0.1.0.1760243560060"></script>
</body>
</html>

View file

@ -28,7 +28,7 @@
<!-- RSS Feed -->
<link rel="alternate" type="application/rss+xml" title="Tractatus Blog RSS Feed" href="/api/blog/rss">
<link rel="stylesheet" href="/css/tailwind.css?v=1760127701">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
/* Accessibility: Skip link */
.skip-link { position: absolute; left: -9999px; top: 0; }
@ -49,7 +49,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1760127701"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Hero Section -->
<div class="bg-gradient-to-br from-indigo-50 to-blue-50 py-20">
@ -216,7 +216,7 @@
</footer>
<!-- Load Blog JavaScript -->
<script src="/js/blog.js?v=1760127701"></script>
<script src="/js/blog.js?v=0.1.0.1760243560060"></script>
</body>
</html>

View file

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Submit Case Study | Tractatus AI Safety</title>
<link rel="stylesheet" href="/css/tailwind.css?v=1759835330">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
/* Accessibility: Skip link */
.skip-link { position: absolute; left: -9999px; top: 0; }
@ -75,7 +75,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1759875690"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Main Content -->
<main id="main-content" class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12">

View file

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documentation - Tractatus Framework</title>
<link rel="stylesheet" href="/css/tailwind.css?v=1759833751">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
/* Prose styling for document content */
.prose h1 { @apply text-3xl font-bold mt-8 mb-4 text-gray-900; }
@ -56,10 +56,10 @@
</div>
<!-- Scripts -->
<script src="/js/utils/api.js?v=1759833751"></script>
<script src="/js/utils/router.js?v=1759833751"></script>
<script src="/js/components/document-viewer.js?v=1759833751"></script>
<script src="/js/docs-viewer-app.js?v=1759833751"></script>
<script src="/js/utils/api.js?v=0.1.0.1760243560060"></script>
<script src="/js/utils/router.js?v=0.1.0.1760243560060"></script>
<script src="/js/components/document-viewer.js?v=0.1.0.1760243560060"></script>
<script src="/js/docs-viewer-app.js?v=0.1.0.1760243560060"></script>
</body>
</html>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Framework Documentation | Tractatus AI Safety</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="/css/tailwind.css?v=1.0.4">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
html { scroll-behavior: smooth; }
@ -380,7 +380,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1.0.4"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Page Header -->
<div class="bg-white border-b border-gray-200">
@ -717,9 +717,9 @@
</div>
</div>
<script src="/js/components/document-cards.js?v=1.0.4"></script>
<script src="/js/docs-app.js?v=1.0.4"></script>
<script src="/js/docs-search-enhanced.js?v=1.0.4"></script>
<script src="/js/components/document-cards.js?v=0.1.0.1760243560060"></script>
<script src="/js/docs-app.js?v=0.1.0.1760243560060"></script>
<script src="/js/docs-search-enhanced.js?v=0.1.0.1760243560060"></script>
</body>
</html>

View file

@ -6,7 +6,7 @@
<title>Frequently Asked Questions | Tractatus AI Safety Framework</title>
<meta name="description" content="Common questions about Tractatus framework: implementation, performance, relationship to Claude Code, and governance architecture.">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="/css/tailwind.css?v=1.0.4">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<!-- Syntax highlighting for code blocks -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css">
@ -183,7 +183,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation -->
<script src="/js/components/navbar.js?v=1.0.4"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Hero -->
<div class="bg-gradient-to-br from-blue-50 to-indigo-50 py-16">
@ -336,7 +336,7 @@
</div>
</footer>
<script src="/js/faq.js?v=1.0.4"></script>
<script src="/js/faq.js?v=0.1.0.1760243560060"></script>
</body>
</html>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>For Implementers | Tractatus AI Safety Framework</title>
<meta name="description" content="Integrate Tractatus framework into your AI systems: practical guides, code examples, and step-by-step implementation for production safety.">
<link rel="stylesheet" href="/css/tailwind.css?v=1759833751">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
/* Accessibility: Skip link */
.skip-link { position: absolute; left: -9999px; top: 0; }
@ -26,7 +26,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1759875690"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Hero Section -->
<div class="bg-gradient-to-br from-blue-50 to-indigo-50 py-20">

View file

@ -6,7 +6,7 @@
<title>Tractatus AI Safety Framework | Architectural Constraints for Human Agency</title>
<meta name="description" content="World's first production implementation of architectural AI safety constraints. Preserving human agency through structural, not aspirational, guarantees.">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="/css/tailwind.css?v=1.0.4">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
.gradient-text { background: linear-gradient(120deg, #3b82f6 0%, #8b5cf6 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.hover-lift { transition: transform 0.2s; }
@ -29,7 +29,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1.0.4"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Hero Section -->
<header role="banner">
@ -282,12 +282,12 @@
<div class="border border-gray-200 rounded-lg p-6">
<div class="w-12 h-12 bg-indigo-100 rounded-lg flex items-center justify-center mb-4">
<svg aria-hidden="true" class="w-6 h-6 text-indigo-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"/>
<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-2">Human Oversight</h3>
<h3 class="text-lg font-semibold text-gray-900 mb-2">Pluralistic Deliberation</h3>
<p class="text-gray-600 text-sm">
Configurable approval workflows ensure appropriate human involvement at every decision level
Multi-stakeholder values deliberation without hierarchy - facilitates human decision-making for incommensurable values
</p>
</div>
@ -415,7 +415,7 @@
<div class="p-6">
<h3 class="text-2xl font-bold text-gray-900 mb-3">Live Framework Demonstration</h3>
<p class="text-gray-700 mb-4">
Try the five core components yourself: classify instructions, test boundary enforcement, monitor context pressure, and validate cross-references.
Try the six core components yourself: classify instructions, test boundary enforcement, monitor context pressure, validate cross-references, and explore values deliberation.
</p>
<div class="mb-6">
<div class="flex items-start mb-2">
@ -424,7 +424,7 @@
</div>
<div class="flex items-start">
<svg aria-hidden="true" class="w-5 h-5 text-purple-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>
<span class="text-sm text-gray-600"><strong>Shows:</strong> All five framework components in action</span>
<span class="text-sm text-gray-600"><strong>Shows:</strong> All six framework components in action</span>
</div>
</div>
<a href="/demos/tractatus-demo.html" class="block w-full text-center bg-purple-600 text-white py-3 rounded-lg hover:bg-purple-700 transition font-semibold">

View file

@ -276,7 +276,7 @@ See [Implementation Guide](/downloads/implementation-guide.pdf) Section 4: "Conf
**Production integration: 1-2 days**
- Configure MongoDB connection
- Load initial governance rules (10 samples provided)
- Enable 5 services via environment variables
- Enable 6 services via environment variables
- Test with session-init.js script
- Monitor audit logs for enforcement
@ -1245,7 +1245,7 @@ FROM node:18-alpine AS application
# scripts/post-deploy-governance-check.sh
#!/bin/bash
# Verify all 5 services operational
# Verify all 6 services operational
curl -f http://tractatus.prod/api/health || exit 1
# Verify governance rules loaded
@ -1363,7 +1363,7 @@ services:
---
**Mistake 3: Disabling all 5 services (framework inactive)**
**Mistake 3: Disabling all 6 services (framework inactive)**
**Symptom**: No governance enforcement, defeats purpose
**Cause**: Setting all \`*_ENABLED=false\` in .env
**Fix**:
@ -1508,7 +1508,7 @@ curl http://localhost:9000/api/health
# 5. Session initialized?
node scripts/session-init.js
# Should show: Framework active, 5 services operational
# Should show: Framework active, 6 services operational
# 6. Test enforcement?
curl -X POST http://localhost:9000/api/demo/boundary-check \\

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Support Tractatus | Koha Donation System</title>
<meta name="description" content="Support the Tractatus AI Safety Framework. Help fund hosting, development, research, and community building for architectural AI safety.">
<link rel="stylesheet" href="/css/tailwind.css?v=1759833751">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
.gradient-text { background: linear-gradient(120deg, #3b82f6 0%, #8b5cf6 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.skip-link { position: absolute; left: -9999px; }
@ -50,7 +50,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1759875690"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Main Content -->
<main id="main-content" class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-12">

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>For AI Leaders | Tractatus AI Safety Framework</title>
<meta name="description" content="Strategic AI governance for executives and research directors. Structural approach to AI safety, compliance, and risk mitigation.">
<link rel="stylesheet" href="/css/tailwind.css?v=1.0.5">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
.gradient-text {
background: linear-gradient(120deg, #d97706 0%, #f59e0b 100%);
@ -32,7 +32,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation -->
<script src="/js/components/navbar.js?v=1.0.5"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Hero Section -->
<div class="bg-gradient-to-br from-gray-50 to-amber-50 pt-20 pb-24">
@ -119,7 +119,7 @@
</div>
<h3 class="text-2xl font-bold text-gray-900 mb-4">Technical Risk Mitigation</h3>
<div class="bg-green-50 rounded-lg p-4 mb-4">
<div class="text-3xl font-bold text-green-700">5 Agents</div>
<div class="text-3xl font-bold text-green-700">6 Services</div>
<div class="text-sm text-green-700">Governance Components</div>
</div>
<ul class="space-y-3 text-gray-700">
@ -442,7 +442,7 @@
<div class="text-center mb-12">
<h2 class="text-4xl font-bold text-gray-900 mb-4">How Tractatus Works</h2>
<p class="text-gray-600 text-lg">
Five integrated components work together to provide structural AI governance
Six integrated components work together to provide structural AI governance
</p>
</div>
@ -521,6 +521,21 @@
</div>
</div>
</div>
<!-- Component 6 -->
<div class="bg-white rounded-xl border border-gray-200 p-6 hover-lift">
<div class="flex items-start gap-4">
<div class="flex-shrink-0 w-12 h-12 bg-amber-100 rounded-lg flex items-center justify-center">
<svg class="w-6 h-6 text-amber-700" 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>
<div class="flex-1">
<h3 class="text-xl font-bold text-gray-900 mb-2">PluralisticDeliberationOrchestrator</h3>
<p class="text-gray-600">Facilitates multi-stakeholder deliberation when values conflicts occur. Ensures non-hierarchical engagement and documents moral remainder.</p>
</div>
</div>
</div>
</div>
</div>
</div>

View file

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Media Inquiry | Tractatus AI Safety</title>
<link rel="stylesheet" href="/css/tailwind.css?v=1759835330">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
.form-group { margin-bottom: 1.5rem; }
.form-label {
@ -65,7 +65,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1759875690"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Main Content -->
<main id="main-content" class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 py-12">

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Privacy Policy | Tractatus AI Safety Framework</title>
<meta name="description" content="Privacy policy for the Tractatus AI Safety Framework. Learn how we collect, use, and protect your data.">
<link rel="stylesheet" href="/css/tailwind.css?v=1759833751">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
.skip-link { position: absolute; left: -9999px; }
.skip-link:focus { left: 0; z-index: 100; background: white; padding: 1rem; }
@ -25,7 +25,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1759875690"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Main Content -->
<main id="main-content" class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12">

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>For Researchers | Tractatus AI Safety Framework</title>
<meta name="description" content="Tractatus framework research: architectural constraints, theoretical foundations, and empirical validation of AI safety through structural guarantees.">
<link rel="stylesheet" href="/css/tailwind.css?v=1759833751">
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1760243560060">
<style>
/* Accessibility: Skip link */
.skip-link { position: absolute; left: -9999px; top: 0; }
@ -26,7 +26,7 @@
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Navigation (injected by navbar.js) -->
<script src="/js/components/navbar.js?v=1759875690"></script>
<script src="/js/components/navbar.js?v=0.1.0.1760243560060"></script>
<!-- Hero Section -->
<div class="bg-gradient-to-br from-purple-50 to-blue-50 py-20">
@ -91,7 +91,7 @@
</div>
<h3 class="text-xl font-bold text-gray-900 mb-3">Architectural Analysis</h3>
<p class="text-gray-600 mb-4">
Five-component framework architecture: classification, validation, boundary enforcement, pressure monitoring, metacognitive verification.
Six-component framework architecture: classification, validation, boundary enforcement, pressure monitoring, metacognitive verification, pluralistic deliberation.
</p>
<ul class="space-y-2 text-sm text-gray-600">
<li class="flex items-start">
@ -114,6 +114,10 @@
<span class="mr-2"></span>
<span>MetacognitiveVerifier</span>
</li>
<li class="flex items-start">
<span class="mr-2"></span>
<span>PluralisticDeliberationOrchestrator</span>
</li>
</ul>
</div>

View file

@ -128,6 +128,12 @@ function initializeSessionState() {
tokens: 0,
timestamp: null,
last_verification: null
},
PluralisticDeliberationOrchestrator: {
message: 0,
tokens: 0,
timestamp: null,
last_deliberation: null
}
},
staleness_thresholds: {
@ -283,13 +289,14 @@ async function main() {
success('CrossReferenceValidator: READY');
success('BoundaryEnforcer: READY');
success('MetacognitiveVerifier: READY (selective mode)');
success('PluralisticDeliberationOrchestrator: READY');
// Run framework tests
section('6. Running Framework Tests');
try {
log(' Running unit tests for Tractatus services...', 'cyan');
const testOutput = execSync(
'npm test -- --testPathPattern="tests/unit/(ContextPressureMonitor|InstructionPersistenceClassifier|CrossReferenceValidator|BoundaryEnforcer|MetacognitiveVerifier)" --silent 2>&1',
'npm test -- --testPathPattern="tests/unit/(ContextPressureMonitor|InstructionPersistenceClassifier|CrossReferenceValidator|BoundaryEnforcer|MetacognitiveVerifier|PluralisticDeliberationOrchestrator)" --silent 2>&1',
{ encoding: 'utf8', stdio: 'pipe' }
);
@ -325,7 +332,7 @@ async function main() {
// Summary
header('Framework Initialization Complete');
console.log('');
log(' All 5 components are active and monitoring this session.', 'green');
log(' All 6 components are active and monitoring this session.', 'green');
console.log('');
log(' Next Actions:', 'bright');
log(' • Framework will monitor continuously', 'cyan');

View file

@ -0,0 +1,123 @@
#!/usr/bin/env node
/**
* Update Cache Version - Unified Cache Busting
*
* Updates all HTML files with a consistent cache-busting version string.
* Format: v={package.version}.{timestamp}
* Example: v=0.1.0.1760201234
*
* This ensures all assets (CSS, JS) are loaded with the same version,
* solving the inconsistent cache busting problem.
*/
const fs = require('fs');
const path = require('path');
const packageJson = require('../package.json');
// Generate cache version: package version + timestamp
const CACHE_VERSION = `${packageJson.version}.${Date.now()}`;
// HTML files to update (relative to project root)
const HTML_FILES = [
'public/index.html',
'public/docs.html',
'public/faq.html',
'public/researcher.html',
'public/implementer.html',
'public/leader.html',
'public/about.html',
'public/privacy.html',
'public/blog.html',
'public/blog-post.html',
'public/docs-viewer.html',
'public/api-reference.html',
'public/media-inquiry.html',
'public/case-submission.html',
'public/koha.html',
'public/check-version.html'
];
/**
* Update cache version in a file
* Replaces all instances of ?v=X with ?v={CACHE_VERSION}
*/
function updateCacheVersion(filePath) {
try {
const fullPath = path.join(__dirname, '..', filePath);
if (!fs.existsSync(fullPath)) {
console.warn(`⚠️ File not found: ${filePath}`);
return false;
}
let content = fs.readFileSync(fullPath, 'utf8');
const originalContent = content;
// Pattern: ?v=ANYTHING → ?v={CACHE_VERSION}
// Matches: ?v=1.0.4, ?v=1759833751, ?v=1.0.5.1760123456
content = content.replace(/\?v=[0-9a-zA-Z._-]+/g, `?v=${CACHE_VERSION}`);
// Only write if changed
if (content !== originalContent) {
fs.writeFileSync(fullPath, content, 'utf8');
// Count replacements
const matches = originalContent.match(/\?v=[0-9a-zA-Z._-]+/g) || [];
console.log(`${filePath}: Updated ${matches.length} cache version(s)`);
return true;
} else {
console.log(` ${filePath}: No changes needed`);
return false;
}
} catch (error) {
console.error(`❌ Error updating ${filePath}:`, error.message);
return false;
}
}
/**
* Main execution
*/
function main() {
console.log('');
console.log('═'.repeat(70));
console.log(' Tractatus - Cache Version Update');
console.log('═'.repeat(70));
console.log('');
console.log(`📦 Package version: ${packageJson.version}`);
console.log(`🔄 New cache version: ${CACHE_VERSION}`);
console.log('');
let updatedCount = 0;
let totalFiles = 0;
HTML_FILES.forEach(file => {
totalFiles++;
if (updateCacheVersion(file)) {
updatedCount++;
}
});
console.log('');
console.log('═'.repeat(70));
console.log(` Summary: ${updatedCount}/${totalFiles} files updated`);
console.log('═'.repeat(70));
console.log('');
if (updatedCount > 0) {
console.log('✅ Cache version updated successfully!');
console.log(` All assets will now use: ?v=${CACHE_VERSION}`);
} else {
console.log(' No files needed updating');
}
console.log('');
}
// Run if called directly
if (require.main === module) {
main();
}
module.exports = { updateCacheVersion, CACHE_VERSION };