Commit graph

83 commits

Author SHA1 Message Date
TheFlow
701bd18eb0 fix: Remove absolute assurance language per inst_017 across codebase
Replace "ensures", "guarantee", "foolproof", "world-class" and similar
absolute terms with evidence-based language throughout public pages, JS
components, and FAQ content. Changes apply inst_017 (no absolute
assurance terms) consistently.

Replacements:
- "ensures X" → "validates X", "so that X", "supports X", "maintains X"
- "guarantee" → removed or rephrased with qualified language
- "foolproof" → "infallible"
- "architecturally impossible" → "architecture prevents without
  explicit override flags"

Preserved: published research papers (architectural-alignment*.html),
EU AI Act quotes, Te Tiriti treaty language, and FAQ meta-commentary
that deliberately critiques this language (lines 2842-2896).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 14:44:45 +13:00
TheFlow
a594012aa7 feat: Complete site audit and UI/UX redesign for agenticgovernance.digital
Homepage redesign with coherent story arc: Problem → Philosophy →
Architecture → Production Evidence → Audience Paths → Papers → Timeline.
Add Koha (donations) section prominently after Honesty Note for optimal
placement. Add Philosophical Foundations PDF download link.

New pages: timeline.html (research evolution Oct 2025–Feb 2026),
home-ai.html (SLL sovereign AI story). Blog seed script with two
initial posts.

Global navigation: consistent desktop nav with Research, Architecture,
and About dropdowns across all pages. Blog/FAQ removed from nav until
populated.

Page refinements: remove emoji from headings across architecture,
leader, implementer, researcher pages. Fix FAQ dead links → counter-
arguments. Add no-JS fallback to docs.html. Fix CSP inline style
violations in village-case-study.html (hero and CTA sections converted
from inline styles to Tailwind/CSS classes). Add Home AI cross-reference
to village case study.

Note: philosophical-foundations-village-project.pdf must be deployed
separately to public/downloads/ (gitignored directory).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 12:44:53 +13:00
TheFlow
403a54decf feat: Add Kōrero HTML page, remove umami analytics
- Create korero-counter-arguments.html (STO-INN-0004) with styled critique cards
- Remove umami-tracker.js and all references from HTML files
- Update privacy.html Section 6 to reflect "No Analytics" policy

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:43:29 +13:00
TheFlow
e3250ea82b feat: Add Tino Rangatiratanga (Māori) flag to language selector
- Downloaded flag SVG locally to avoid CORS issues
- Updated language-selector.js to use local SVG path
- Replaced NZ emoji with proper Tino Rangatiratanga flag

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 18:26:10 +13:00
TheFlow
b289b3a208 feat: Replace NZ flag with Tino Rangatiratanga flag for Te Reo Māori
Uses SVG from mysovereignty.digital for proper Māori representation.
Tooltip still shows "Planned" as requested.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 18:21:50 +13:00
TheFlow
8f22d0336c feat: Add company website links to navbar and footer
- Add 'Company' section to footer with MySovereignty website links
  - Link to main website (mysovereignty.digital)
  - Link to Village Ecosystem page
  - Link to About Us page
- Add 'Company' section to navbar mobile menu
  - Link to main website (mysovereignty.digital)
- Update footer grid layout: md:grid-cols-4 → md:grid-cols-2 lg:grid-cols-5
- Include translations for all 3 languages (EN, DE, FR)
  - EN: Company
  - DE: Unternehmen
  - FR: Entreprise

Files modified:
- public/js/components/footer.js (lines 52-62)
- public/js/components/navbar.js (lines 110-116)
- public/locales/en/common.json
- public/locales/de/common.json
- public/locales/fr/common.json

Tested locally on port 9000 - all links functional, translations verified.
2025-11-24 13:12:44 +13:00
TheFlow
3c278c7ade feat: Add Phase 2 newsletter enhancements and email templates
Phase 2 Implementation:
- Add RSS feed discovery links to footer (Subscribe section)
- Create email templates (base-template.html, research-updates-content.html)
- Add comprehensive newsletter sending implementation plan
- Fix CSP check to exclude email-templates directory

Email templates use inline styles for cross-client compatibility
(Gmail, Outlook, Apple Mail) and are excluded from CSP checks.

Next steps: Install dependencies (handlebars, @sendgrid/mail),
implement EmailService, controller methods, and admin UI.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 11:13:15 +13:00
TheFlow
2e3ce0a2fc feat: Add comprehensive visitor retention system
Implemented RSS feeds, newsletter subscriptions, email templates, and admin UI
to encourage repeat visits from self-selected visitors.

## RSS Feeds
- Created RSS 2.0 feed generation (main + topic-specific)
- Endpoints: /feed.xml and /feed/:topic.xml
- Added getPublished() and getPublishedByTag() to BlogPost model

## Newsletter Subscriptions
- Created reusable newsletter modal component
- Added to index, researcher, implementer, leader pages
- Interest selection: research, implementation, governance, project-updates
- Added newsletter trigger button to footer
- Uses existing /api/newsletter/subscribe endpoint

## Email Templates
- Created comprehensive specifications for 4 newsletter tiers
- Research Updates (monthly) - scholarly audience
- Implementation Notes (bi-weekly) - practitioners
- Governance Discussions (sporadic) - stakeholders
- Project Updates (quarterly) - general audience
- Documented template variables, design guidelines

## Admin UI
- Enhanced newsletter management with "Send Newsletter" section
- Tier selection, subject/preview input, JSON content editor
- Preview/test/send buttons (UI ready, email service TBD)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 10:42:43 +13:00
TheFlow
7a148b7eca feat: add i18n support for Agent Lightning page and navbar feedback
Added comprehensive internationalization:
- German and French translations via DeepL API
- Language-responsive Agent Lightning integration page
- Navbar feedback button now translates (DE: "Feedback geben", FR: "Donner son avis")
- Translation files: agent-lightning-integration.json (EN/DE/FR)
- Data-i18n attributes on all major headings and CTA buttons
- i18n scripts loaded on Agent Lightning page

Translation coverage:
- Hero section
- All major section headings
- Call-to-action buttons
- Navbar feedback menu item

Files modified:
- public/integrations/agent-lightning.html (i18n scripts + data-i18n attributes)
- public/js/components/navbar.js (data-i18n for feedback button)
- public/js/i18n-simple.js (page map entry)
- public/locales/*/agent-lightning-integration.json (translations)
- public/locales/*/common.json (navbar.feedback translations)
- scripts/translate-agent-lightning.js (translation automation)
- docs/reports/FRAMEWORK_PERFORMANCE_REPORT_2025-11-03.md (framework stats)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 15:58:12 +13:00
TheFlow
7b5b988282 fix: feedback button visibility using inline styles
Root cause: Tailwind arbitrary value z-[9999] was not in compiled CSS
(tailwind.css last modified Oct 9, feedback.js modified Nov 3).

Solution: Use inline styles with !important for all critical properties:
- position: fixed
- bottom/right positioning
- z-index: 999999
- display: flex
- visibility: visible
- opacity: 1

This bypasses Tailwind compilation issues and ensures button is visible.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 15:39:23 +13:00
TheFlow
3b0cbad664 feat: Add Agent Lightning integration to navigation and homepage
- Add Agent Lightning link to navbar menu (visible on all pages)
- Add prominent "What's New" banner on homepage highlighting AL integration
- Link to AL Discord and integration page
- Improve discoverability of AL integration for visitors

Related to Phase 2 Master Plan completion

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 15:12:29 +13:00
TheFlow
be306c89aa fix: feedback button visibility and Agent Lightning page issues
Feedback Button (z-index issue):
- Increased z-index from 40 to 9999 with !important
- Button was rendering but hidden behind other elements
- Added inline style as backup for z-index

Agent Lightning Page:
- Fixed text visibility: changed gray-300 to white on dark background
- Fixed broken download link: changed to GitHub repo link
- Fixed collaboration button: now triggers feedback FAB correctly
- Removed duplicate closing script tag

All issues resolved and deployed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 15:04:00 +13:00
TheFlow
a8e1d5cb5d fix: render feedback button immediately without waiting for CSRF
- Changed init() to render FAB/modal before fetching CSRF token
- CSRF fetch now runs in parallel (non-blocking)
- Prevents button from never appearing if CSRF fetch fails/is slow
- Fixed cache version in agent-lightning.html to match deployment

Fixes issue where feedback button was invisible on all pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 14:52:37 +13:00
TheFlow
c8a95e97f8 feat: Add feedback button to navbar
- Adds 'Give Feedback' button to mobile navigation menu
- Integrates with feedback modal system
- Part of governed feedback system (Tractatus + AL)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 12:53:14 +13:00
TheFlow
2de8a33322 feat: Complete Phase 2 - Agent Lightning integration and Discord community launch
## Website Updates
- **Homepage** (index.html):
  - Updated hero subtitle to mention Agent Lightning integration
  - Added " Now with AL" badges to all pathway cards
  - Removed Audit Logs from hero (moved to researcher page)
  - Added comprehensive community section with both Discord servers

- **Researcher Page** (researcher.html:619-786):
  - Added Agent Lightning integration section
  - 5 open research questions
  - Demo 2 validation status with limitations
  - Both Discord community links

- **Implementer Page** (implementer.html:1324-1341):
  - Added Discord invite buttons to AL CTA section

- **Leader Page** (leader.html:424-441):
  - Added Discord invite buttons to AL CTA section

- **New Integration Page** (integrations/agent-lightning.html):
  - Standalone AL integration guide
  - Overview and community links

## Feedback System (Governed AI Communication)
- Backend: Feedback model, controller, routes, governance service
- Frontend: FAB, modal UI, navbar integration
- Three governance pathways: Autonomous, Deliberation, Human Mandatory

## Discord Communities
- Tractatus Discord: https://discord.gg/Dkke2ADu4E
- Agent Lightning Discord: https://discord.gg/bVZtkceKsS

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 12:52:26 +13:00
TheFlow
467f2833f1 fix: handle undefined technicalLevel in cards and set glossary category
- Added null check for section.technicalLevel (defaults to 'basic')
- Prevents "Cannot read properties of undefined (reading 'charAt')" error
- Updated fix-glossary-structure.js to set category: 'getting-started'
- Moves glossary back to Getting Started section where it belongs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 11:41:18 +13:00
TheFlow
34e70a1b44 fix: language selector now works on all pages
- Added 'navbarReady' event dispatch from navbar after rendering
- Language selector now waits for navbar container to exist
- Fixes race condition where language selector ran before navbar rendered
- Language toggle now functional on researcher, implementer, leader, about pages
2025-10-29 15:41:17 +13:00
TheFlow
2b52a073fb feat: add disk monitoring system for dev and production
Add comprehensive disk monitoring with real-time metrics:
- Backend API endpoints for disk/memory metrics (local + remote)
- Admin UI page with CSP-compliant DOM rendering
- Health status indicators with color-coded thresholds
- SSH-based remote metrics collection from OVH VPS
- Auto-refresh every 5 minutes

Backend:
- src/models/DiskMetrics.model.js: Metrics collection model
- src/controllers/diskMetrics.controller.js: 3 admin endpoints
- src/routes/diskMetrics.routes.js: Admin-authenticated routes
- src/routes/index.js: Register disk-metrics routes

Frontend:
- public/admin/disk-monitoring.html: Admin dashboard page
- public/js/admin-disk-monitoring.js: CSP-compliant UI rendering
- public/js/components/navbar-admin.js: Add disk monitoring link

Documentation:
- deployment-quickstart/UPTIME_MONITORING_SETUP.md

API endpoints:
- GET /api/admin/disk-metrics (all systems)
- GET /api/admin/disk-metrics/local (dev system)
- GET /api/admin/disk-metrics/remote (production VPS)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 11:53:55 +13:00
TheFlow
6376e1568b fix(analytics): remove data-domains restriction from tracking
- Removes data-domains attribute that was blocking tracking
- Allows tracking on agenticgovernance.digital and any subdomains
- Fixes issue where pages were not being tracked

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 10:02:44 +13:00
TheFlow
ad89ce2845 feat(analytics): add Umami website ID to tracking script
- Website ID: e09dad07-361b-453b-9e2c-2132c657d203
- Analytics dashboard: https://analytics.agenticgovernance.digital
- Tracking now fully operational for agenticgovernance.digital

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 02:12:43 +13:00
TheFlow
ccb4bdaabf feat(api): implement research inquiry endpoint and Umami analytics
HIGH PRIORITY: Fixes production 404 error on research inquiry form

Research Inquiry API:
- Add POST /api/research-inquiry endpoint for form submissions
- Add admin endpoints for inquiry management (list, get, assign, respond, delete)
- Create ResearchInquiry model with MongoDB integration
- Add to moderation queue for human review (strategic quadrant)
- Include rate limiting (5 req/min) and CSRF protection
- Tested locally: endpoint responding, data saving to DB

Umami Analytics (Privacy-First):
- Add Docker Compose config for Umami + PostgreSQL
- Create nginx reverse proxy config with SSL support
- Implement privacy-first tracking script (DNT, opt-out, no cookies)
- Integrate tracking across 26 public HTML pages
- Exclude admin pages from tracking (privacy boundary)
- Add comprehensive deployment guide (UMAMI_SETUP_GUIDE.md)
- Environment variables added to .env.example

Files Created (9):
- src/models/ResearchInquiry.model.js
- src/controllers/research.controller.js
- src/routes/research.routes.js
- public/js/components/umami-tracker.js
- deployment-quickstart/nginx-analytics.conf
- deployment-quickstart/UMAMI_SETUP_GUIDE.md
- scripts/add-umami-tracking.sh
- scripts/add-tracking-python.py
- SESSION_SUMMARY_ANALYTICS_RESEARCH_INQUIRY.md

Files Modified (29):
- src/routes/index.js (research routes)
- deployment-quickstart/docker-compose.yml (umami services)
- deployment-quickstart/.env.example (umami config)
- 26 public HTML pages (tracking script)

Values Alignment:
 Privacy-First Design (cookie-free, DNT honored, opt-out available)
 Human Agency (research inquiries require human review)
 Data Sovereignty (self-hosted analytics, no third-party sharing)
 GDPR Compliance (no personal data in analytics)
 Transparency (open-source tools, documented setup)

Testing Status:
 Research inquiry: Locally tested, data verified in MongoDB
 Umami analytics: Pending production deployment

Next Steps:
1. Deploy to production (./scripts/deploy.sh)
2. Test research form on live site
3. Deploy Umami following UMAMI_SETUP_GUIDE.md
4. Update umami-tracker.js with website ID after setup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 01:31:02 +13:00
TheFlow
07fcaa2e8f feat(compliance): add GDPR compliance page with trilingual support
Implements comprehensive GDPR compliance documentation explaining how the
Tractatus Framework enforces data protection through architectural constraints
rather than policy documents.

Key features:
- 8 sections covering GDPR Articles 5, 6, 15-22, 25, 32, 33
- Framework positioning: BoundaryEnforcer, CrossReferenceValidator, PluralisticDeliberationOrchestrator
- Full trilingual support (EN/DE/FR) via DeepL API (322 translations)
- Footer links and i18n integration across all languages
- Professional translations for legal accuracy

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 10:26:57 +13:00
TheFlow
836421cf92 fix(i18n): ensure contact modal displays in correct language when opened
Fixed issue where clicking "Kontakt" in German mode showed English contact form.

Changes:
- Re-apply translations when modal opens (ensures current language is used)
- Use translated "submitting" text for sending state (DE: "Senden...", FR: "Envoi en cours...")
- Use translated submit button text when re-enabled
- Remove duplicate success message text

Now clicking "Kontakt" in DE mode or "Nous contacter" in FR mode correctly shows the modal in that language.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 18:37:40 +13:00
TheFlow
a1c4a2e1f8 feat(i18n): add multilingual support to Contact Us modal and fix translations
**Contact Modal:**
- Added complete DE/FR translations for contact form
- Added 17 data-i18n attributes to modal elements
- Form labels, buttons, messages now translate
- Languages: EN, DE (Nachricht senden), FR (Envoyer le message)

**Fixed Translations:**
- media-inquiry.json: Fixed "Your Name" → "Ihr Name" (DE), "Votre nom" (FR)
- common.json: Added contact_modal section with all form text

**Translations Added:**
- Modal heading, description, all form labels
- Inquiry type options (general, partnership, technical, feedback)
- Submit/cancel buttons, success/error messages
- Dynamic "Sending..." text (Senden.../Envoi en cours...)

**Technical:**
- Contact modal in footer.js now fully i18n-enabled
- Uses window.I18n.translations for dynamic content
- All text translates when language selector is used

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 16:57:47 +13:00
TheFlow
6ad2f4437b fix(architecture): inline SVG and complete i18n for interactive diagram
- Replaced <object> element with inline SVG to fix contentDocument NULL issues
- Simplified interactive-diagram.js to work with inline SVG directly
- Added diagram_services translations loading from window.i18nTranslations
- Exposed window.i18nTranslations in i18n-simple.js for global access
- Added event listeners for i18nInitialized and languageChanged
- Diagram modals now fully translate across EN/DE/FR languages
- Removed complex retry/race condition logic from SVG loading
- Converted SVG style attributes to presentation attributes (CSP compliant)

Fixes: Interactive diagram was broken due to contentDocument being NULL
when accessing SVG via <object> element. Inline SVG approach is more
reliable and works immediately without race conditions.
2025-10-26 13:45:39 +13:00
TheFlow
7ad5f8848e fix(interactive-diagram): add fallback data to prevent race condition with i18n
- Added loadFallbackData() method with English defaults
- Check if i18n translations loaded before using them
- Falls back to English if window.i18nTranslations not ready yet
- Fixes 'Failed to load SVG after 20 retries' error caused by empty serviceData
2025-10-26 13:24:04 +13:00
TheFlow
c4e54502da fix(i18n): complete architecture page translations and fix diagram modals
- Added data-i18n to service card descriptions (validator, pressure, metacognitive, deliberation)
- Fixed interactive-diagram.js to properly load translations from i18n system
- Added language change handlers for dynamic modal updates
- All service cards and modals now fully translate across EN/DE/FR
2025-10-26 13:20:56 +13:00
TheFlow
a230a319a0 feat(i18n): add interactive diagram modal translations for EN/DE/FR
- Added diagram_services section to all three language JSON files
- Modified interactive-diagram.js to load translations from i18n system
- Added language change event listeners to update modals dynamically
- Removed hardcoded English serviceData from JavaScript
- Modals now fully translate when language is switched
2025-10-26 13:15:50 +13:00
TheFlow
75ba04a99d fix(interactive-diagram): resolve race condition with SVG contentDocument loading 2025-10-26 12:23:55 +13:00
TheFlow
2e0e11229f feat(i18n): complete architecture.html internationalization with P0/P1/P2 fixes
## P0 - Launch Blockers
 Created comprehensive translation files (EN, DE, FR)
  - /locales/en/architecture.json (31 translatable sections)
  - /locales/de/architecture.json (complete German translations)
  - /locales/fr/architecture.json (complete French translations)

 Added data-i18n attributes throughout HTML
  - Breadcrumb navigation
  - Hero section (badge, title, subtitle, challenge, approach, CTAs)
  - Comparison section (headings, titles)
  - Architecture diagram (titles, descriptions for all 3 layers)
  - Six Governance Services (all service names, descriptions, promises)
  - Interactive section (titles, instructions, tooltips)
  - Data visualizations heading
  - Production section (titles, results, disclaimers)
  - Limitations section (headings, limitations list, quote)
  - CTA section (heading, subtitle, buttons)
  - Total: 31 data-i18n attributes added

 Fixed card overflow on Six Governance Services cards
  - Added min-w-0 max-w-full overflow-hidden to all 6 service cards
  - Added break-words overflow-wrap-anywhere to card titles
  - Added break-words to service descriptions
  - Prevents cards from breaking container boundaries

## P1 - Should Fix Before Launch
 Added touch event handling to interactive diagram
  - Added touchstart listener with passive:false
  - Prevents default behavior for better mobile UX
  - Complements existing click handlers

## P2 - Nice to Have
 Improved mobile diagram sizing
  - Increased from w-48 sm:w-56 lg:w-64 to w-64 sm:w-72 lg:w-80
  - ~33% larger on all breakpoints for better mobile visibility

 Added soft hyphens to long service names
  - BoundaryEnforcer → Boundary&shy;Enforcer
  - InstructionPersistenceClassifier → Instruction&shy;Persistence&shy;Classifier
  - CrossReferenceValidator → Cross&shy;Reference&shy;Validator
  - ContextPressureMonitor → Context&shy;Pressure&shy;Monitor
  - MetacognitiveVerifier → Metacognitive&shy;Verifier
  - PluralisticDeliberationOrchestrator → Pluralistic&shy;Deliberation&shy;Orchestrator
  - Enables intelligent line breaking for long CamelCase service names

## Changes Summary
- 3 new translation files created (1,866 lines total)
- architecture.html: 31 data-i18n attributes, 6 overflow-protected cards, 6 soft hyphens
- interactive-diagram.js: Added touch event support for mobile

## Impact
- architecture.html now fully internationalized (EN, DE, FR)
- Cards respect boundaries on all screen sizes
- Interactive diagram works on touch devices
- Long service names wrap intelligently
- Matches quality level of docs.html

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 11:33:04 +13:00
TheFlow
ce5dfdf7ad fix(docs): card overflow, sequencing, colour legend, and category fixes
Fixed multiple issues with the docs page card-based document view:

**Card Overflow Fixed:**
- Added overflow-x-hidden to #document-content container
- Added w-full max-w-full to card-grid-container
- Added w-full to grid itself
- Added max-w-full overflow-hidden to individual cards
- Cards now stay within container boundaries at all viewport sizes

**Long Title Wrapping:**
- Added insertSoftHyphens() method to break CamelCase words
- Inserts soft hyphens (&shy;) before capitals in compound words
- Examples: "InstructionPersistenceClassifier" → "Instruction­Persistence­Classifier"
- Titles now wrap intelligently without being cut off

**Colour Legend (Option C):**
- Added toggle button (ℹ️) next to ToC and PDF buttons
- Popup shows all 5 colour codes with descriptions
- Translated to EN ("Colour Guide"), DE ("Farbcode"), FR ("Guide des couleurs")
- Fixed colour square visibility (bg-500 with borders instead of bg-400)
- Click outside to close functionality

**Card Sequencing:**
- Cards now display in original markdown document order
- Removed groupByCategory() grouping logic
- Removed category header sections
- Color coding preserved based on section category

**Category Fallback Bug:**
- Fixed invalid fallback category 'downloads-resources' → 'resources'
- Ensures uncategorized documents go to valid category

**Database Migration:**
- Added scripts/move-guides-to-resources.js
- Moved 3 implementation guides from getting-started to resources
- Getting Started now contains only: Introduction, Core Concepts
- Resources now contains: Implementation guides

**Result:**
 Cards respect container width (no overflow)
 Long titles wrap with hyphens (no cutoff)
 Colour legend accessible and translated
 Cards in logical reading order from markdown
 Implementation guides in correct category

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 11:03:23 +13:00
TheFlow
8c22811110 feat(docs): intelligent section recategorization + i18n infrastructure
This commit includes two major improvements to the documentation system:

## 1. Section Recategorization (UX Fix)

**Problem**: 64 sections (24%) were incorrectly marked as "critical" and
displayed at the bottom of documents, burying important foundational content.

**Solution**:
- Created intelligent recategorization script analyzing titles, excerpts,
  and document context
- Reduced "critical" from 64 → 2 sections (97% reduction)
- Properly categorized content by purpose:
  - Conceptual: 63 → 138 (+119%) - foundations, "why this matters"
  - Practical: 3 → 46 (+1433%) - how-to guides, examples
  - Technical: 111 → 50 (-55%) - true implementation details

**UI Improvements**:
- Reordered category display: Critical → Conceptual → Practical → Technical → Reference
- Changed Critical color from amber to red for better visual distinction
- All 22 documents recategorized (173 sections updated)

## 2. i18n Infrastructure (Phase 2)

**Backend**:
- DeepL API integration service with quota management and error handling
- Translation API routes (GET /api/documents/:slug?lang=de, POST /api/documents/:id/translate)
- Document model already supports translations field (no schema changes)

**Frontend**:
- docs-app.js enhanced with language detection and URL parameter support
- Automatic fallback to English when translation unavailable
- Integration with existing i18n-simple.js system

**Scripts**:
- translate-all-documents.js: Batch translation workflow (dry-run support)
- audit-section-categories.js: Category distribution analysis

**URL Strategy**: Query parameter approach (?lang=de, ?lang=fr)

**Status**: Backend complete, ready for DeepL API key configuration

**Files Modified**:
- Frontend: document-cards.js, docs-app.js
- Backend: documents.controller.js, documents.routes.js, DeepL.service.js
- Scripts: 3 new governance/i18n scripts

**Database**: 173 sections recategorized via script (already applied)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 00:48:27 +13:00
TheFlow
f347d0a34e fix(architecture): interactive diagram SVG click handler timing issues
Fixed non-responsive service node clicks on architecture.html interactive diagram.

Root cause: SVG loaded via <object> tag had contentDocument timing issues -
event listeners attached before SVG fully accessible.

Solution:
- Added retry mechanism for contentDocument access (100ms intervals)
- Implemented multiple loading strategies (immediate, load event, timeout)
- Enabled event capturing phase (addEventListener 3rd param: true)
- Enhanced logging for debugging click event flow
- Auto-display overview panel on initialization
- CSP-compliant cursor styling via JavaScript

Deployed to production: https://agenticgovernance.digital/architecture.html

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 18:22:15 +13:00
TheFlow
0b853c537d feat(crm): complete Phase 3 multi-project CRM + critical bug fixes
Phase 3 Multi-Project CRM Implementation:
- Add UnifiedContact model for cross-project contact linking
- Add Organization model with domain-based auto-detection
- Add ActivityTimeline model for comprehensive interaction tracking
- Add SLATracking model for 24-hour response commitment
- Add ResponseTemplate model with variable substitution
- Add CRM controller with 8 API endpoints
- Add Inbox controller for unified communications
- Add CRM dashboard frontend with tabs (Contacts, Orgs, SLA, Templates)
- Add Contact Management interface (Phase 1)
- Add Unified Inbox interface (Phase 2)
- Integrate CRM routes into main API

Critical Bug Fixes:
- Fix newsletter DELETE button (event handler context issue)
- Fix case submission invisible button (invalid CSS class)
- Fix Chart.js CSP violation (add cdn.jsdelivr.net to policy)
- Fix Chart.js SRI integrity hash mismatch

Technical Details:
- Email-based contact deduplication across projects
- Automatic organization linking via email domain
- Cross-project activity timeline aggregation
- SLA breach detection and alerting system
- Template rendering with {placeholder} substitution

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 18:10:14 +13:00
TheFlow
efab76e13c feat(crm): implement unified contact form system
Complete CRM foundation with contact modal in footer

Backend:
- Contact.model.js: Full CRUD model with statistics tracking
- contact.controller.js: Submit, list, assign, respond, update, delete
- contact.routes.js: Public submission + admin management endpoints
- routes/index.js: Mount contact routes at /api/contact

Frontend:
- footer.js: Replace mailto link with Contact Us modal button
- Contact modal: Form with type, name, email, org, subject, message
- CSRF protection: Extracts token from cookie (like newsletter)
- Rate limiting: formRateLimiter (5/min)
- Validation: Input sanitization + required fields
- UX: Success/error messages, auto-close on success

Admin UI:
- navbar-admin.js: New 'CRM & Communications' section
- Links: Contact Management, Case Submissions, Media Inquiries

Foundation for multi-project CRM across tractatus, family-history, sydigital

Next: Build /admin/contact-management.html page
2025-10-24 16:56:21 +13:00
TheFlow
70ab7c0a01 feat(admin): reorganize navbar with CRM section and add missing tools
- Add new 'CRM & Communications' section for contact/inquiry management
- Add Editorial Guidelines to Content Management
- Add Credential Vault to System & Framework
- Reorganize for future unified CRM across all projects
2025-10-24 16:51:04 +13:00
TheFlow
ac2db33732 fix(submissions): restructure Economist package and fix article display
- Create Economist SubmissionTracking package correctly:
  * mainArticle = full blog post content
  * coverLetter = 216-word SIR— letter
  * Links to blog post via blogPostId
- Archive 'Letter to The Economist' from blog posts (it's the cover letter)
- Fix date display on article cards (use published_at)
- Target publication already displaying via blue badge

Database changes:
- Make blogPostId optional in SubmissionTracking model
- Economist package ID: 68fa85ae49d4900e7f2ecd83
- Le Monde package ID: 68fa2abd2e6acd5691932150

Next: Enhanced modal with tabs, validation, export

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 08:47:42 +13:00
TheFlow
a992d411b9 feat(researcher): WCAG compliance, Berlin/Weil foundations, fixed footer i18n
- 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>
2025-10-22 23:56:37 +13:00
TheFlow
6acf714aab refactor: remove entire public/ directory - Tractatus PROJECT web interface
REMOVED: All 37 files in public/ directory

This is the Tractatus PROJECT's web interface (admin system, website features),
NOT framework implementation code.

Files removed:
- Admin system (4 pages): dashboard, hooks-dashboard, login, rule-manager
  - Shows: Moderation Queue, Users, Documents, Blog Curation
  - This is OUR project admin, not tools for framework implementers
- Admin JavaScript (8 files)
- CSS/fonts (10 files)
- Images (4 files)
- Components (3 files): interactive-diagram, navbar-admin, pressure-chart
- Demos (5 files): 27027, boundary, classification, deliberation, tractatus
- Utils (1 file): api.js
- Favicons (2 files)

REASON: public/ directory contained Tractatus PROJECT website/admin interface.
Framework implementers don't need OUR admin system - they build their own.

All web interface code belongs in internal repository only.

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 21:57:02 +13:00
TheFlow
60f239c0bf refactor: deep cleanup - remove all website code from framework repo
REMOVED: 77 website-specific files from src/ and public/

Website Models (9):
- Blog, CaseSubmission, Document, Donation, MediaInquiry,
  ModerationQueue, NewsletterSubscription, Resource, User

Website Services (6):
- BlogCuration, MediaTriage, Koha, ClaudeAPI, ClaudeMdAnalyzer,
  AdaptiveCommunicationOrchestrator

Website Controllers (9):
- blog, cases, documents, koha, media, newsletter, auth, admin, variables

Website Routes (10):
- blog, cases, documents, koha, media, newsletter, auth, admin, test, demo

Website Middleware (4):
- auth, csrf-protection, file-security, response-sanitization

Website Utils (3):
- document-section-parser, jwt, markdown

Website JS (36):
- Website components, docs viewers, page features, i18n, Koha

RETAINED Framework Code:
- 6 core services (Boundary, ContextPressure, CrossReference,
  InstructionPersistence, Metacognitive, PluralisticDeliberation)
- 4 support services (AnthropicMemoryClient, MemoryProxy,
  RuleOptimizer, VariableSubstitution)
- 9 framework models (governance, audit, deliberation, project state)
- 3 framework controllers (rules, projects, audit)
- 7 framework routes (rules, governance, projects, audit, hooks, sync)
- 6 framework middleware (error, validation, security, governance)
- Minimal admin UI (rule manager, dashboard, hooks dashboard)
- Framework demos and documentation

PURPOSE: Tractatus-framework repo is now PURELY framework code.
All website/project code remains in internal repo only.

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 21:22:40 +13:00
TheFlow
d0700a6f92 fix(values): remove prohibited 'guarantee' language from user-facing content
VIOLATION: Using absolute assurance language violates inst_017
- README.md: "architectural AI safety guarantees" → "enforcement"
- README.md: "guarantees transparency" → "provides transparency"
- public/index.html meta: "guarantees" → "enforcement"
- public/about.html CTA: "architectural guarantees" → "constraints"
- public/js/components/footer.js: "guarantees" → "enforcement"
- public/js/faq.js (5 instances): "guarantees" → "enforcement/constraints"
- public/locales/en/*.json (3 files): "guarantees" → "enforcement/constraints"
- scripts/seed-first-blog-post.js: "safety guarantees" → "safety constraints"

RESULT: All user-facing "guarantee" language removed
- Production website now compliant with inst_017
- No absolute assurance claims in public content
- Framework documentation still pending (hook blocked markdown edits)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 15:19:25 +13:00
TheFlow
03faedfb38 feat(admin): Phase 2 - standardize admin UI with unified navbar component
SUMMARY:
Completed Phase 2 of admin UI overhaul: Created unified navbar component
for simple pages, standardized CSS versioning across all pages, and fixed
broken navigation. Pragmatic approach preserves valuable cross-page navigation
while ensuring consistency.

CHANGES - Simple Pages (Unified Navbar Component):
- newsletter-management.html: Replaced custom navbar with component
- hooks-dashboard.html: Replaced custom navbar with component
- audit-analytics.html: Fixed wrong navbar (was using public site component)

CHANGES - Complex Pages (Standardized CSS Only):
- case-moderation.html: Added CSS version v=1759833751
- media-triage.html: Added CSS version v=1759833751
- project-manager.html: Updated CSS version to v=1759833751
- rule-manager.html: Updated CSS version to v=1759833751
(These pages retained custom navbars to preserve cross-page navigation UX)

COMPONENT ENHANCEMENTS:
- navbar-admin.js: Added 'hooks' icon for Framework Hooks Dashboard
- Newsletter management JS: Removed manual admin-name and logout handling

CSS STANDARDIZATION:
Target version: /css/tailwind.css?v=1759833751
- 7 pages now use standardized version (was 3 different versions + missing)

RESULTS:
- All admin pages now have consistent navbar styling
- Simple pages use unified component (3 pages)
- Complex pages use standardized custom navbars (6 pages)
- All pages have correct CSS versioning
- audit-analytics.html fixed (was using wrong component)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-20 21:51:09 +13:00
TheFlow
77f59046a2 feat(admin): add unified navbar component (Phase 2 start)
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>
2025-10-20 21:38:20 +13:00
TheFlow
1297211505 fix(ui): improve pressure monitor visibility and add timeline synchronization
SUMMARY:
Fixed button visibility issues in Context Pressure Monitor and added
interactive timeline synchronization. Three selectable execution paths
with realistic timing profiles.

UI FIXES (pressure-chart.js):
- Reduced gauge size 20% to prevent arc cut-off
- Changed button layout to side-by-side (flex-row)
- Fixed Reset button contrast (bg-gray-900 for WCAG AA)
- Added mobile responsive layout (flex-col sm:flex-row)
- Removed all wrapper div backgrounds causing visibility issues
- Trigger timeline simulation when pressure simulation runs

TIMELINE ENHANCEMENTS (activity-timeline.js):
- Added three execution path profiles (Fast/Standard/Complex)
- Fast: 65ms total (simple requests, all checks pass)
- Standard: 135ms total (needs validation and verification)
- Complex: 285ms total (requires deliberation and consensus)
- Real-time event activation synchronized with pressure changes
- Added timing disclaimer (estimates based on performance data)
- Path selection UI with radio buttons

ARCHITECTURE PAGE:
- Updated script versions for cache-busting
- Added test page for standalone pressure chart debugging

ISSUE RESOLVED:
User reported 'Simulate Pressure Increase' button hidden. Root cause:
Tailwind CSS class conflicts (user correctly identified early). Resolved
by simplifying button layout and removing constraining containers.

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-20 17:18:13 +13:00
TheFlow
d1e0411fe8 debug(pressure-chart): add render() logging to diagnose invisible HTML
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>
2025-10-20 08:16:02 +13:00
TheFlow
7b1402c4b5 debug(pressure-chart): add detailed logging for element discovery and button clicks
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>
2025-10-20 07:47:31 +13:00
TheFlow
6265531719 debug(demos): add console logging to diagnose initialization issues
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>
2025-10-19 22:31:56 +13:00
TheFlow
bcc4a4e844 fix(demos): resolve initialization timing for pressure chart and activity timeline
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>
2025-10-19 22:10:14 +13:00
TheFlow
6914eff0c8 feat(phase3): add data visualizations for context pressure and activity timeline
SUMMARY:
Implemented Phase 3 Tasks 3.3.1 and 3.3.2: Interactive data visualizations
showing Context Pressure Monitor metrics and Framework Activity Timeline.

CHANGES:

1. Created pressure-chart.js (new):
   - Interactive SVG gauge showing pressure levels (0-100%)
   - Color-coded status: Green (NORMAL), Amber (ELEVATED), Red (HIGH), Dark Red (CRITICAL)
   - Real-time metrics: Tokens Used, Complexity, Error Rate
   - Simulate button to demonstrate pressure increases
   - Reset button to return to normal state
   - Smooth animations with requestAnimationFrame
   - Respects prefers-reduced-motion

2. Created activity-timeline.js (new):
   - Visual timeline of 6 governance services coordinating
   - Shows request processing flow (0ms-250ms)
   - Service-specific color coding
   - Hover effects on timeline events
   - Total processing time displayed

3. Updated tractatus-theme.css:
   - Added data visualization CSS section
   - .gauge-fill-path transition styles
   - .timeline-event hover effects
   - Respects reduced motion preferences

4. Updated architecture.html:
   - Added "Framework in Action" section
   - Two-column grid layout for visualizations
   - Container divs: #pressure-chart and #activity-timeline
   - Script references for both components

FEATURES:

Context Pressure Visualization:
✓ Animated gauge (0-180 degree arc)
✓ Dynamic color changes based on pressure level
✓ Three metrics tracked (tokens, complexity, errors)
✓ Interactive simulation (30% → 50% → 70% → 85%)
✓ Reset functionality

Framework Activity Timeline:
✓ 6 governance services shown in sequence
✓ Service-specific colors match brand system
✓ Hover effects for interactivity
✓ Total processing time: 250ms

UI_TRANSFORMATION_PROJECT_PLAN.md:
✓ Phase 3 Task 3.3.1: Context Pressure Visualization (COMPLETED)
✓ Phase 3 Task 3.3.2: Framework Activity Timeline (COMPLETED)

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-19 20:49:26 +13:00
TheFlow
0e63480261 fix(interactive): fix diagram sizing (75% reduction) and improve SVG detection
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>
2025-10-19 18:35:13 +13:00