- 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>
107 lines
5.6 KiB
XML
107 lines
5.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
|
|
<defs>
|
|
<!-- Central core gradient (shared with Passport - cyan to blue) -->
|
|
<radialGradient id="tractatusCore">
|
|
<stop offset="0%" style="stop-color:#64ffda;stop-opacity:1" />
|
|
<stop offset="70%" style="stop-color:#448aff;stop-opacity:1" />
|
|
<stop offset="100%" style="stop-color:#0ea5e9;stop-opacity:1" />
|
|
</radialGradient>
|
|
|
|
<!-- Service-specific gradients (6 governance services) -->
|
|
<!-- 1. BoundaryEnforcer - Green (safety, protection) -->
|
|
<linearGradient id="serviceBoundary" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" style="stop-color:#10b981;stop-opacity:1" />
|
|
<stop offset="100%" style="stop-color:#059669;stop-opacity:1" />
|
|
</linearGradient>
|
|
|
|
<!-- 2. InstructionPersistenceClassifier - Indigo (memory, persistence) -->
|
|
<linearGradient id="serviceInstruction" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" style="stop-color:#6366f1;stop-opacity:1" />
|
|
<stop offset="100%" style="stop-color:#4f46e5;stop-opacity:1" />
|
|
</linearGradient>
|
|
|
|
<!-- 3. CrossReferenceValidator - Purple (verification) -->
|
|
<linearGradient id="serviceValidator" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" style="stop-color:#8b5cf6;stop-opacity:1" />
|
|
<stop offset="100%" style="stop-color:#7c3aed;stop-opacity:1" />
|
|
</linearGradient>
|
|
|
|
<!-- 4. ContextPressureMonitor - Amber (alertness, monitoring) -->
|
|
<linearGradient id="servicePressure" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" style="stop-color:#f59e0b;stop-opacity:1" />
|
|
<stop offset="100%" style="stop-color:#d97706;stop-opacity:1" />
|
|
</linearGradient>
|
|
|
|
<!-- 5. MetacognitiveVerifier - Rose (reflection, thought) -->
|
|
<linearGradient id="serviceMetacognitive" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" style="stop-color:#ec4899;stop-opacity:1" />
|
|
<stop offset="100%" style="stop-color:#db2777;stop-opacity:1" />
|
|
</linearGradient>
|
|
|
|
<!-- 6. PluralisticDeliberationOrchestrator - Teal (balance, mediation) -->
|
|
<linearGradient id="serviceDeliberation" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" style="stop-color:#14b8a6;stop-opacity:1" />
|
|
<stop offset="100%" style="stop-color:#0d9488;stop-opacity:1" />
|
|
</linearGradient>
|
|
|
|
<!-- Connection lines gradient -->
|
|
<linearGradient id="connectionGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
<stop offset="0%" style="stop-color:#64ffda;stop-opacity:0.2" />
|
|
<stop offset="50%" style="stop-color:#64ffda;stop-opacity:0.5" />
|
|
<stop offset="100%" style="stop-color:#64ffda;stop-opacity:0.2" />
|
|
</linearGradient>
|
|
|
|
<!-- Drop shadow for depth -->
|
|
<filter id="dropShadow">
|
|
<feDropShadow dx="0" dy="2" stdDeviation="3" flood-opacity="0.3"/>
|
|
</filter>
|
|
</defs>
|
|
|
|
<!-- Subtle background for contrast -->
|
|
<circle cx="100" cy="100" r="95" fill="rgba(255,255,255,0.02)"/>
|
|
|
|
<!-- Orbital rings (3 layers - governance architecture) -->
|
|
<circle cx="100" cy="100" r="85" stroke="#64ffda" stroke-width="1" opacity="0.15" fill="none"/>
|
|
<circle cx="100" cy="100" r="70" stroke="#64ffda" stroke-width="1" opacity="0.25" fill="none"/>
|
|
<circle cx="100" cy="100" r="55" stroke="#64ffda" stroke-width="1" opacity="0.35" fill="none"/>
|
|
|
|
<!-- Connection lines from center to each service node (hexagonal pattern) -->
|
|
<g opacity="0.4">
|
|
<line x1="100" y1="100" x2="100" y2="35" stroke="url(#connectionGradient)" stroke-width="2"/>
|
|
<line x1="100" y1="100" x2="156" y2="67.5" stroke="url(#connectionGradient)" stroke-width="2"/>
|
|
<line x1="100" y1="100" x2="156" y2="132.5" stroke="url(#connectionGradient)" stroke-width="2"/>
|
|
<line x1="100" y1="100" x2="100" y2="165" stroke="url(#connectionGradient)" stroke-width="2"/>
|
|
<line x1="100" y1="100" x2="44" y2="132.5" stroke="url(#connectionGradient)" stroke-width="2"/>
|
|
<line x1="100" y1="100" x2="44" y2="67.5" stroke="url(#connectionGradient)" stroke-width="2"/>
|
|
</g>
|
|
|
|
<!-- Six governance service nodes in hexagonal arrangement -->
|
|
<!-- 1. BoundaryEnforcer (top) - Green -->
|
|
<circle cx="100" cy="35" r="18" fill="url(#serviceBoundary)" filter="url(#dropShadow)" opacity="0.9"/>
|
|
|
|
<!-- 2. InstructionPersistenceClassifier (top-right) - Indigo -->
|
|
<circle cx="156" cy="67.5" r="18" fill="url(#serviceInstruction)" filter="url(#dropShadow)" opacity="0.9"/>
|
|
|
|
<!-- 3. CrossReferenceValidator (bottom-right) - Purple -->
|
|
<circle cx="156" cy="132.5" r="18" fill="url(#serviceValidator)" filter="url(#dropShadow)" opacity="0.9"/>
|
|
|
|
<!-- 4. ContextPressureMonitor (bottom) - Amber -->
|
|
<circle cx="100" cy="165" r="18" fill="url(#servicePressure)" filter="url(#dropShadow)" opacity="0.9"/>
|
|
|
|
<!-- 5. MetacognitiveVerifier (bottom-left) - Rose -->
|
|
<circle cx="44" cy="132.5" r="18" fill="url(#serviceMetacognitive)" filter="url(#dropShadow)" opacity="0.9"/>
|
|
|
|
<!-- 6. PluralisticDeliberationOrchestrator (top-left) - Teal -->
|
|
<circle cx="44" cy="67.5" r="18" fill="url(#serviceDeliberation)" filter="url(#dropShadow)" opacity="0.9"/>
|
|
|
|
<!-- Central core (AI system being governed) -->
|
|
<circle cx="100" cy="100" r="35" fill="url(#tractatusCore)" filter="url(#dropShadow)"/>
|
|
|
|
<!-- Subtle outer glow -->
|
|
<circle cx="100" cy="100" r="38" fill="none" stroke="rgba(100,255,218,0.2)" stroke-width="2"/>
|
|
|
|
<!-- Center symbol - "T" for Tractatus -->
|
|
<circle cx="100" cy="100" r="28" fill="rgba(0,0,0,0.25)"/>
|
|
<text x="100" y="110" text-anchor="middle" font-family="Arial, sans-serif" font-size="32" font-weight="bold" fill="white" opacity="0.95">T</text>
|
|
</svg>
|