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:
parent
43c00f21a7
commit
1906c0be0b
40 changed files with 586 additions and 63 deletions
|
|
@ -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:**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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 \\
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
123
scripts/update-cache-version.js
Normal file
123
scripts/update-cache-version.js
Normal 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 };
|
||||
Loading…
Add table
Reference in a new issue