- Converted all 9 accordion divs to semantic <button> elements
- Added ARIA attributes: aria-expanded, aria-controls, id for each button
- Accordion content: role="region" and aria-labelledby for screen readers
- Keyboard support: Enter and Space keys toggle accordions (WAI-ARIA pattern)
- Mobile optimization: 44px/48px touch targets, touch-action: manipulation
- iOS tap feedback: -webkit-tap-highlight-color
- Footer i18n: No footer object in leader.json (uses common.json correctly)
- Updated leader-page.js with keyboard handlers and ARIA state management
- Version 1.5.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added diagrams from public tractatus-framework repo: architecture-main-flow.svg (6.6KB), trigger-decision-tree.svg (6.7KB)
- Diagram sizing: max-width 600px for readable display, responsive width 100%
- Fixed skip link: Added <main id="main-content"> wrapper for proper accessibility
- Quick navigation: 44px touch targets, flex-wrap for mobile, aria-label="Page sections"
- Download buttons: Descriptive ARIA labels, 44px minimum height
- Code blocks: Added role="region" and descriptive ARIA labels to all 6 service examples
- Mobile optimization: -webkit-overflow-scrolling, 11px code font on small screens, 16px body prevents iOS zoom
- API examples verified accurate against actual BoundaryEnforcer.service.js implementation
- CSP compliance: Moved diagram sizing to CSS class instead of inline styles
- Version 1.4.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Full WCAG accessibility: ARIA attributes (aria-expanded, aria-controls), keyboard navigation (Enter/Space)
- Reframed research context: Berlin/Weil as primary intellectual foundation (moral pluralism, categorical imperative)
- Bibliography with proper academic citations: Weil (The Need for Roots, Gravity and Grace), Berlin (Four Essays on Liberty)
- Fixed footer i18n: Implemented recursive deepMerge() to preserve nested translation objects
- Root cause: Shallow merge {...obj1, ...obj2} was overwriting entire footer object from common.json
- Consolidated all footer translations in common.json, removed from page-specific files
- Mobile optimization: 44px/48px touch targets, touch-action: manipulation, responsive design
- Progressive enhancement: <noscript> fallback for JavaScript-disabled users
- Version 1.3.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
IMPLEMENTER PAGE (public/implementer.html):
- Complete rewrite from 761 to 635 lines (developer-focused)
- Added both framework architecture diagrams (SVGs)
- Replaced fake @tractatus/framework npm package with real code examples
- Removed all marketing disclaimers and verbose filler
- Added technical specs for all 6 core services with real API examples
- Fixed GitHub repository links to match package.json
FOOTER FIXES (researcher.html, leader.html):
- Fixed script loading order (version-manager before i18n)
- Removed duplicate <!-- Footer --> comment in researcher.html
- Now matches index.html script structure for consistency
Result: Implementer page now shows actual framework documentation with real code examples and architecture diagrams
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
CRITICAL SECURITY VIOLATION:
- Public website was linking to INTERNAL repository (tractatus)
- Should link to PUBLIC repository (tractatus-framework)
FIXES (5 instances across 3 pages):
- public/docs.html: 2 links (repository + readme)
- public/faq.html: 1 link (GitHub issues)
- public/implementer.html: 2 links (deployment guide + source code)
Changed:
github.com/AgenticGovernance/tractatus
→ github.com/AgenticGovernance/tractatus-framework
RESULT: Public website now correctly links to sanitized public repository
IMPACT: Prevents external users from accessing internal development files
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Updated i18n-simple.js and language-selector.js version to 1761023171
to force browser reload after translation fixes (inst_017 violations).
This ensures users see the corrected 'architectural constraints'
instead of cached 'architectural guarantees' text.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed sync script disconnecting Mongoose (prevents production errors)
- Created text search index (fixes search in rule-manager)
- Enhanced inst_024 with closedown protocol, added inst_061
- Added sync infrastructure: API routes, dashboard widget, auto-sync
- Fixed MemoryProxy tests MongoDB connection
- Created ADR-001 and integration tests
Result: Production stable, 52 rules synced, search working
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Created reusable admin navbar component for consistency across all 11 admin pages.
COMPONENT:
- public/js/components/navbar-admin.js (minified for performance)
FEATURES:
- Consistent branding and layout
- Auto-displays admin name from localStorage
- Dashboard back link (except on dashboard itself)
- Unified logout behavior
- Configurable page title and icon
USAGE:
<div id="admin-navbar" data-page-title="Page Name" data-page-icon="icon-name"></div>
<script src="/js/components/navbar-admin.js"></script>
NEXT STEPS (Phase 2 continuation):
- Update all 11 admin pages to use this component
- Standardize CSS versioning
- Verify API endpoints
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Fixed admin login failures caused by two issues:
1. Response sanitization middleware stripping auth tokens
2. Admin users missing password field in database
ROOT CAUSE ANALYSIS:
- sanitizeResponseData middleware removed ALL fields named 'token'
- This included authentication tokens that SHOULD be sent to clients
- Admin user records created without proper password field
- User.authenticate() failed on bcrypt.compare() with undefined password
FIXES:
1. Changed auth response field from 'token' to 'accessToken'
- Avoids overly aggressive sanitization
- More semantically correct (it's specifically an access token)
- Frontend updated to use data.accessToken
2. Created fix-admin-user.js script
- Properly creates admin user via User.create()
- Ensures password field is bcrypt hashed
- Deletes old malformed user records
3. Updated login.js auto-fill for correct dev email
- Changed from admin@tractatus.local to admin@agenticgovernance.digital
TESTING:
- Local login now returns accessToken (308 char JWT)
- User object returned with proper ID serialization
- Auth flow: POST /api/auth/login → returns accessToken + user
- Ready for production deployment
FILES:
- src/controllers/auth.controller.js: Use accessToken field
- public/js/admin/login.js: Store data.accessToken, update default email
- scripts/fix-admin-user.js: Admin user creation/fix utility
NEXT STEPS:
1. Deploy to production
2. Run: node scripts/fix-admin-user.js admin@agenticgovernance.digital <password>
3. Test admin login at /admin/login.html
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Enhanced About page with democratic legitimacy themes and published new blog
article addressing Tractatus scaling strategy. Preserves Economist first
publication rights by creating substantially different content.
ABOUT PAGE ENHANCEMENTS:
- Added "Why This Matters" section (4 paragraphs on democratic legitimacy)
- Added "Pluralism" as 5th core value (teal border, values-sensitive content)
- Enhanced Mission section with values pluralism opening paragraph
- Updated locale file (about.json) with all new i18n keys
- Themes: constitutional governance, affected communities, plural values
BLOG ARTICLE - "How to Scale Tractatus: Breaking the Chicken-and-Egg Problem":
- 3,500+ words on staged scaling roadmap
- Stage 1: Proof of Concept ✅ Complete (October 2025)
- Stage 2: Enterprise Pilots 🔄 In Progress (Q1-Q2 2026 target)
- Stage 3: Critical Workloads ⏳ (Q3-Q4 2026)
- Stage 4: Industry Standards ⏳ (2027+)
- Call to action: Pilot partners needed for Stage 2
- Published: https://agenticgovernance.digital/blog-post.html?slug=scaling-tractatus-roadmap
CONTENT DIFFERENTIATION:
- 40%+ unique content from Economist article
- Different audience: Implementers/CTOs vs. business leaders/policymakers
- Different angle: Practical scaling vs. philosophical values argument
- Preserves Economist first publication rights (submit tomorrow)
FILES:
- public/about.html: Democratic legitimacy, Why This Matters, Pluralism
- public/locales/en/about.json: New i18n keys for enhanced content
- docs/outreach/Blog-Article-Scaling-Tractatus.md: Source markdown
- docs/outreach/PUBLISHING_RIGHTS_ANALYSIS.md: Publishing research
- scripts/seed-scaling-blog-post.js: Blog database seeding script
- .claude/metrics/hooks-metrics.json: Session activity tracking
PUBLISHING WORKFLOW:
- Local: Seeded successfully (6 total blog posts)
- Production: Seeded via `node -r dotenv/config scripts/seed-scaling-blog-post.js`
- Accessible via /api/blog and /blog-post.html?slug=scaling-tractatus-roadmap
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Fixed About page to accurately reflect all 6 Tractatus Framework components.
PluralisticDeliberationOrchestrator was missing from the "How It Works" section.
CHANGES:
- Updated intro text: "five" → "six" integrated components
- Added PluralisticDeliberationOrchestrator component card
- Updated locale file (about.json) with 6th component description
- Removed lock file from docs/outreach
DETAILS:
All other pages (architecture, researcher, leader, implementer, index) correctly
showed 6 components. About page was the only page with the discrepancy.
TESTED:
- Verified locally at http://localhost:9000/about.html
- All 6 components now display correctly
- Locale strings properly applied
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Removed all max-height and overflow constraints that were cutting off content.
This allows both buttons to display naturally without scrolling or clipping.
CHANGES:
- Removed max-h-[600px]
- Removed overflow-y-auto
- Container now expands to fit all content naturally
This is the simplest solution - no height constraints, natural flow.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Added max-h-[600px] and overflow-y-auto to create scrollable containers
that allow users to access all content including the top button.
ISSUE:
'Simulate Pressure Increase' button exists in DOM but is cut off above
the visible area. 'Reset to Normal' button is visible at bottom.
FIX:
- Added max-h-[600px] to constrain container height
- Added overflow-y-auto to enable vertical scrolling
- Users can now scroll up within each panel to see the Simulate button
TESTING:
Visit architecture page, scroll to 'Framework in Action', then scroll UP
within the gray Context Pressure Monitor panel to reveal the amber button.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Removed min-h-[600px] and overflow-auto that were causing content display
issues. Simplified to just w-full on inner containers.
ISSUE:
The min-height and overflow-auto combination was preventing proper content
rendering, causing the 'Simulate Pressure Increase' button to be hidden.
FIX:
- Removed min-h-[600px] from parent containers
- Removed overflow-auto from parent containers
- Added w-full to #pressure-chart and #activity-timeline divs
- Allows natural content flow and proper button visibility
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Added overflow-auto to both demo containers to fix cut-off content issue
where 'Simulate Pressure Increase' button was hidden above visible area.
ISSUE:
User reported button exists in DOM but is not visible on screen. The top
of the modal content was cut off, showing only the bottom portion (Reset
button visible, but Simulate button hidden above).
FIX:
Added overflow-auto to both containers:
- Context Pressure Monitor container
- Framework Activity Timeline container
This allows users to scroll within the container if content exceeds the
min-height of 600px, ensuring all buttons and content are accessible.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Added min-h-[600px] to both demo containers to ensure content is visible.
ISSUE:
User reported 'Simulate Pressure Increase' button was hidden/not visible.
Content was rendering but container had no minimum height, causing
layout issues where buttons were hidden.
FIX:
Added min-h-[600px] to both:
- Context Pressure Monitor container
- Framework Activity Timeline container
This ensures 600px minimum height for proper content display.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Added logging at start of render() and after innerHTML to see if HTML
is being generated but not displayed.
CHANGES:
- Log when render() is called with container reference
- Log innerHTML length after setting
- Log first 100 chars of innerHTML
- Bump version to v20251019174000
ISSUE:
User cannot see 'Simulate Pressure Increase' button despite initialization
succeeding. Need to verify if HTML is being generated at all.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Added comprehensive logging to diagnose pressure monitor demo issue.
Will show if elements are found after innerHTML set and if event listeners
are attached successfully.
CHANGES:
- Log all element discovery (gauge, buttons, metrics)
- Log event listener attachment success/failure
- Log when simulate() and reset() methods are called
- Bump version to v20251019173500
DEBUGGING:
User reports demo not working despite initialization succeeding.
These logs will reveal:
- If DOM elements are queryable after innerHTML
- If event listeners are successfully attached
- If button clicks are triggering methods
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Added detailed console logging to pressure chart and activity timeline
components to help diagnose why demos aren't working on production.
CHANGES:
1. pressure-chart.js:
- Log when script loads and document.readyState
- Log whether waiting for DOMContentLoaded or initializing immediately
- Log when container is found or not found
- Log when instance is created
2. activity-timeline.js:
- Same logging pattern as pressure-chart.js
DEBUGGING:
User reports demos not working. Logs will show:
- If scripts are loading
- If DOM is ready when scripts execute
- If containers are being found
- If instances are being created
Console output will help identify the failure point.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Removed factually incorrect time frames and test counts from architecture
page. Maintains truthful message about production deployment without
making unverifiable claims.
CHANGES REMOVED:
- "for six months" - unverifiable time frame
- "223 passing tests" - specific unverifiable number
CHANGES KEPT:
- "running in production" (true)
- "handling real workloads" (true)
- "detecting real failure patterns" (true)
- "documented incident prevention" (true)
- "needs independent validation" (true)
LOCATION:
public/architecture.html lines 428-432 (Real-World Testing section)
RATIONALE:
User feedback: factual accuracy more valuable than marketing claims.
No benefit to stating unverifiable time frames or test counts.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Added version query strings to demo script tags to force browser cache
refresh for the initialization timing fixes.
CHANGES:
- Added ?v=20251019172000 to pressure-chart.js
- Added ?v=20251019172000 to activity-timeline.js
IMPACT:
Users will now load the fixed JavaScript that properly initializes
when DOM is already loaded. Prevents stale cache issues.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Fixed critical bug preventing pressure chart and activity timeline demos
from initializing. Both components now work correctly on architecture page.
ROOT CAUSE:
Scripts loaded at end of body after DOM was already ready. DOMContentLoaded
event had already fired, so initialization callback never executed.
FIX:
Changed initialization to check document.readyState before adding event listener:
- If DOM still loading → wait for DOMContentLoaded event
- If DOM already ready → initialize immediately
FILES FIXED:
- public/js/components/pressure-chart.js (lines 213-227)
- public/js/components/activity-timeline.js (lines 124-137)
IMPACT:
Both demos now function correctly:
✓ Pressure chart: Simulate button works, gauge animates, metrics update
✓ Activity timeline: Governance flow displays with service colors
TESTING:
Verified locally on http://localhost:9000/architecture.html
Both demos initialize and respond to user interactions.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Fixed missing translations for the performance evidence section that was
previously only available in English. All 3 languages now properly support
the "Preliminary Evidence: Safety and Performance May Be Aligned" content.
CHANGES MADE:
1. Added to en/homepage.json (lines 86-92):
- validation.performance_evidence.heading
- validation.performance_evidence.paragraph_1
- validation.performance_evidence.paragraph_2
- validation.performance_evidence.paragraph_3
- validation.performance_evidence.methodology_note
2. Added to de/homepage.json (lines 86-92):
- German translations of all performance evidence content
- Removed obsolete subtitle with incorrect claims
3. Added to fr/homepage.json (lines 86-92):
- French translations of all performance evidence content
- Removed obsolete subtitle with incorrect claims
4. Updated index.html (lines 349, 350, 353, 356, 363):
- Added data-i18n and data-i18n-html attributes
- Heading: data-i18n="validation.performance_evidence.heading"
- Paragraphs: data-i18n-html for proper HTML rendering
- Methodology note: data-i18n-html
TRANSLATIONS:
English:
- "Preliminary Evidence: Safety and Performance May Be Aligned"
- 3-5× productivity improvement messaging
- Mechanism explanation
- Statistical validation ongoing
German:
- "Vorläufige Erkenntnisse: Sicherheit und Leistung könnten aufeinander abgestimmt sein"
- Equivalent messaging with proper German grammar
- Technical terminology accurately translated
French:
- "Preuves Préliminaires : Sécurité et Performance Pourraient Être Alignées"
- Equivalent messaging with proper French grammar
- Technical terminology accurately translated
IMPACT:
✓ Performance evidence now displays correctly in all 3 languages
✓ German and French users no longer see English-only content
✓ i18n system properly handles all validation section content
✓ Static HTML serves as proper fallback before JavaScript loads
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Completed Phase 3 Task 3.4.1 - Enhanced the 27027 incident demo page
with interactive playback controls, service status visualization, and
clickable step navigation for better user engagement.
NEW FEATURES:
1. Clickable Step Navigation:
- Users can click any step to jump directly to it
- Steps highlight on hover with shadow effect
- Manual navigation shows progress panel and service status
- Disabled during auto-play to prevent conflicts
2. Playback Speed Controls:
- Three speed options: Slow (4s), Normal (2.5s), Fast (1s)
- Visual button state shows selected speed
- Speed persists during playback
- Default: Normal speed
3. Service Status Visualization:
- New panel shows active Tractatus services
- InstructionPersistence highlights on Step 6 (purple ring)
- CrossReferenceValidator highlights on Step 7 (purple ring)
- Service icons use brand colors (indigo/purple)
- Smooth opacity transitions
4. Enhanced Visual Feedback:
- Steps now reset properly when navigating backward
- Future steps return to pending state
- Hover effects on all steps
- Smooth scroll behavior
- Better state management (pending/active/complete/error)
5. Improved UX:
- Service status hidden until first interaction
- Progress panel shows after first play/click
- Reset clears all state including services
- Click handlers respect auto-play state
TECHNICAL DETAILS:
JavaScript (27027-demo.js):
- Added playbackSpeed variable and speedDelays mapping
- Enhanced initTimeline() with click handlers for navigation
- Updated playScenario() to use speed setting
- New updateServiceStatus() function for service highlighting
- Enhanced showStep() to handle forward/backward navigation
- Updated resetScenario() to clear service status
HTML (27027-demo.html):
- Added speed control buttons (Slow/Normal/Fast)
- Added service status panel with 2 services
- Service indicators use brand colors
- All controls use Tailwind utility classes
DESIGN PATTERNS:
- Brand-consistent colors (indigo-600, purple-600)
- Smooth 300ms transitions
- Responsive design maintained
- CSP compliant (no inline handlers)
IMPACT:
Users can now:
✓ Control playback speed for better comprehension
✓ Jump to specific steps for review
✓ See which Tractatus services activate at each step
✓ Understand the architectural intervention visually
This completes all Phase 3 interactive features. Demo is now
production-ready for deployment.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Removed inaccurate claims about deployment duration and session counts
from Real-World Validation section. Maintains core message without
making unverifiable temporal or quantitative claims.
CHANGES MADE:
1. Removed subtitle (index.html, homepage.json):
- Deleted: "Framework validated in 6-month deployment across ~500 sessions"
- Section now just has heading: "Real-World Validation"
2. Updated performance evidence paragraph (index.html):
- Changed: "Six months of production deployment reveals..."
- To: "Production deployment reveals..."
3. Updated methodology note (index.html):
- Changed: "qualitative user reports from ~500 production sessions"
- To: "qualitative user reports from production deployment"
RATIONALE:
No benefit to stating unverifiable claims. Core message (safety-performance
alignment, 3-5× productivity gain, mechanism explanation) remains intact
without temporal or quantitative assertions that cannot be substantiated.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Added new "Performance & Reliability Evidence" section to Real-World
Validation, positioned before 27027 incident. Presents preliminary
findings that structural constraints enhance (not hinder) AI performance.
NEW SECTION CONTENT:
1. Key Finding:
"Structural constraints appear to enhance AI reliability rather than
constrain it" - users report 3-5× productivity improvement (one governed
session vs. multiple ungoverned attempts).
2. Mechanism Explanation:
Architectural boundaries prevent context pressure failures, instruction
drift, and pattern-based overrides from compounding into session-ending
errors. Maintains operational integrity throughout long interactions.
3. Strategic Implication:
"If this pattern holds at scale, it challenges a core assumption blocking
AI safety adoption—that governance measures trade performance for safety."
4. Transparency:
Methodology note clarifies findings are qualitative (~500 sessions),
with controlled experiments scheduled.
DESIGN:
- Green gradient background (green-50 to teal-50) - distinct from blue
27027 incident card
- Checkmark icon reinforcing validation theme
- Two-tier information hierarchy: main findings + methodology note
- Positioned to establish pattern BEFORE specific incident example
STRATEGIC IMPACT:
Addresses major adoption barrier: assumption that safety = performance
trade-off. Positions Tractatus as path to BOTH safer AND more capable
AI systems, strengthening the "turning point" argument from value prop.
FILES MODIFIED:
- public/index.html (lines 343-370, new performance evidence section)
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Fixed missing English text update in index.html. Static HTML still had
old value proposition text, while JSON translations (en/de/fr) were
already updated. This caused English version to show old text before
JavaScript loaded.
CHANGES:
- Updated static HTML text in index.html (lines 91-93) to match new
3-paragraph value proposition from en/homepage.json
- Ensures consistent messaging across all languages
- Improves SEO (crawlers see correct text)
- Eliminates flash of old content before i18n loads
ISSUE:
The i18n system (data-i18n-html="value_prop.text") replaces static
HTML with JSON content, but the static text serves as fallback before
JavaScript executes. German/French were correct, English was not.
FIX:
Static HTML now matches JSON for all 3 languages:
✓ English: Updated with new 3-paragraph text
✓ German: Already correct (JSON updates static text)
✓ French: Already correct (JSON updates static text)
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Completely rewrote "A Starting Point" section to emphasize the enormity
of the AI safety challenge and position Tractatus as a potential turning
point. Removed self-deprecating "We recognize this is one small step..."
paragraph and absorbed its invitation into the value proposition.
STRATEGIC CHANGES:
1. New Opening Paragraph:
- "Aligning advanced AI with human values is among the most
consequential challenges we face"
- Names antagonist: "big tech momentum"
- Frames as "categorical imperative" (echoing Kant, fitting for Tractatus)
- Stakes: "preserve human agency or risk ceding control entirely"
2. Core Value Proposition (maintained):
- "Instead of hoping AI systems 'behave correctly'..."
- Structural constraints requiring human judgment
- Architectural boundaries adapting to norms
3. Turning Point Positioning (new):
- "If this approach can work at scale, Tractatus may represent
a turning point"
- "AI enhances human capability without compromising human sovereignty"
- Absorbed invitation: "Explore the framework through the lens
that resonates with your work"
4. Removed Section:
- Deleted "We recognize this is one small step..." paragraph
- Reduced padding above Three Audience Paths (py-16 → pt-4 pb-16)
TRANSLATIONS:
Updated all 3 language versions (en/de/fr) with equivalent messaging:
- English: "categorical imperative" / "turning point"
- German: "kategorischen Imperativ" / "Wendepunkt"
- French: "impératif catégorique" / "tournant"
IMPACT:
This is the first chance to capture visitor interest and summarize
the core argument: we must explore Tractatus to break out of current
big tech momentum. The new messaging is urgent, not self-deprecating.
FILES MODIFIED:
- public/index.html (removed intro paragraph, reduced padding)
- public/locales/en/homepage.json (3-paragraph value_prop.text)
- public/locales/de/homepage.json (3-paragraph value_prop.text)
- public/locales/fr/homepage.json (3-paragraph value_prop.text)
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Replaced all instances of personal email (john.stroh.nz@pm.me) with
the official research contact email (research@agenticgovernance.digital)
across all public-facing documents.
CHANGES:
Replaced in 4 files:
1. public/implementer.html (line 144)
2. public/locales/en/implementer.json (line 23)
3. public/locales/de/implementer.json (line 23)
4. public/locales/fr/implementer.json (line 23)
IMPACT:
- Contact information now uses official organizational email
- Maintains consistency across all language versions
- No personal contact information exposed publicly
VERIFICATION:
✓ All 4 instances replaced
✓ No remaining instances of old email in public directory
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Fixed accessibility contrast issues across multiple pages to achieve
perfect Lighthouse accessibility scores (96 → 100). Added SEO meta
description to docs page.
CHANGES:
1. architecture.html:
- Changed amber badge from bg-amber-600 to bg-amber-700
- Improves contrast ratio with white text
2. faq.html:
- Changed blue button from bg-blue-500 to bg-blue-600
- Changed border from border-blue-300 to border-blue-400
- Improves contrast ratio with white text
3. koha.html:
- Changed tier badge background from #3b82f6 to #1d4ed8 (blue-500 → blue-700)
- Improves contrast ratio with white text
4. docs.html:
- Added meta description for SEO
- Describes framework documentation and key features
LIGHTHOUSE IMPACT:
Before:
- architecture.html: 96 Accessibility
- faq.html: 96 Accessibility
- koha.html: 96 Accessibility
- docs.html: 91 SEO
After (Expected):
- architecture.html: 100 Accessibility ✓
- faq.html: 100 Accessibility ✓
- koha.html: 100 Accessibility ✓
- docs.html: 100 SEO ✓
WCAG COMPLIANCE:
All color contrast ratios now meet or exceed WCAG AA (4.5:1 minimum)
✓ Amber-700: Better contrast with white text
✓ Blue-600/700: Better contrast with white text
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Fixed diagram to be 75% smaller in surface area (50% linear reduction) and
improved SVG detection logic to properly initialize click handlers.
CHANGES:
1. Diagram Sizing (architecture.html):
- Changed from w-24/w-32/w-40 (90% reduction) to w-48/w-56/w-64 (75% reduction)
- Mobile: w-48 = 192px (50% of 384px original)
- Tablet: sm:w-56 = 224px (50% of 448px original)
- Desktop: lg:w-64 = 256px (50% of 512px original)
- Surface area now 25% of original (75% reduction as requested)
2. SVG Detection Logic (interactive-diagram.js):
- Split null check from tagName validation
- Added clearer console logging for debugging
- tagName check now handles undefined gracefully
- Should properly detect SVG and attach click handlers
PREVIOUS ISSUE:
- Diagram was w-24/w-32/w-40 (6.25% surface area = 93.75% reduction)
- SVG detection check was failing, preventing click handlers from attaching
- Combined null && tagName check was too strict
FIXES:
✓ Diagram is now 75% smaller by surface area (not 90%)
✓ SVG detection should properly initialize
✓ Click handlers should attach to service nodes
Cache-busting: v=20251019170000
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>