- 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>
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:
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 critical bug where footer displayed translation keys (e.g.,
"footer.about_heading") instead of actual text on all pages except homepage.
ROOT CAUSE:
i18n-simple.js only loaded page-specific JSON files (e.g., privacy.json).
Footer translations were in homepage.json, so other pages couldn't access them.
SOLUTION:
1. Created common.json for Shared Translations:
- Created locales/en/common.json (footer translations)
- Created locales/de/common.json (footer translations)
- Created locales/fr/common.json (footer translations)
2. Updated i18n-simple.js to Load Both:
- Always loads common.json (footer, shared UI elements)
- Loads page-specific JSON (privacy.json, about.json, etc.)
- Merges both (page-specific takes precedence)
IMPACT:
✓ Footer now displays correctly in all 3 languages on ALL pages
✓ Privacy page: Footer translates properly (en/de/fr)
✓ All pages: Footer translations work regardless of page-specific JSON
✓ Scalable: Easy to add more shared translations to common.json
TESTING:
- Verified locally on privacy.html (footer displays "Tractatus Framework")
- All 3 languages load correctly from common.json
- Page-specific translations still work (privacy content translates)
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SUMMARY:
Implemented complete internationalization for footer component and
privacy page across English, German, and French languages.
CHANGES:
1. Privacy Page Translations (3 files):
- Created locales/en/privacy.json (baseline)
- Created locales/de/privacy.json (German - Datenschutzerklärung)
- Created locales/fr/privacy.json (French - Politique de confidentialité)
- All 11 sections + Te Tiriti fully translated
2. Footer i18n Enhancement:
- Rewrote footer.js with data-i18n attributes
- Added languageChanged event listener for dynamic updates
- Expanded homepage.json footer translations (en/de/fr)
- Footer now auto-translates with language selection
3. Privacy Page Integration:
- Added data-page="privacy" attribute to HTML
- Added data-i18n to all content sections (header + 11 sections)
- Integrated with existing language-selector.js component
- Updated i18n-simple.js pageMap to recognize privacy page
4. Bug Fix:
- Fixed SessionStart hook error in .claude/settings.local.json
- Changed from $CLAUDE_PROJECT_DIR to absolute path
- Hook now runs successfully at session start
BENEFITS:
- Better UX for international users (German, French speakers)
- Legal compliance (privacy policy in native languages)
- Consistent language experience across entire site
- Leverages existing language persistence (localStorage)
INTEGRATION:
- Works with existing language-selector.js (flag icons: 🇬🇧🇩🇪🇫🇷)
- Language preference persists across all pages
- Zero duplication - integrates with existing i18n system
WCAG COMPLIANCE:
✓ Maintains semantic HTML structure
✓ Preserves WCAG AA contrast ratios
✓ All links remain accessible and distinguishable
✓ German and French translations maintain accessibility standards
FRAMEWORK COMPLIANCE:
✓ Zero CSP violations - uses data-i18n attributes only
✓ No inline scripts or styles
✓ Follows existing Tractatus i18n patterns
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add English, German, and French translations for Koha donation system
- Add manage_subscription translations for Customer Portal
- Add transparency page translations
- Support for multi-language donation experience
Prepared for future Māori translation (mi/) outreach in Dec 2025
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>