diff --git a/apps/web/public/research-pages/page-1.webp b/apps/web/public/research-pages/page-1.webp index ab99dd1..6c8cfec 100644 Binary files a/apps/web/public/research-pages/page-1.webp and b/apps/web/public/research-pages/page-1.webp differ diff --git a/apps/web/public/research-pages/page-2.webp b/apps/web/public/research-pages/page-2.webp index d61d8a0..a06c979 100644 Binary files a/apps/web/public/research-pages/page-2.webp and b/apps/web/public/research-pages/page-2.webp differ diff --git a/apps/web/public/research-pages/page-3.webp b/apps/web/public/research-pages/page-3.webp index 20bef4e..654e650 100644 Binary files a/apps/web/public/research-pages/page-3.webp and b/apps/web/public/research-pages/page-3.webp differ diff --git a/apps/web/public/research-pages/page-4.webp b/apps/web/public/research-pages/page-4.webp index 7b3b332..c33dda2 100644 Binary files a/apps/web/public/research-pages/page-4.webp and b/apps/web/public/research-pages/page-4.webp differ diff --git a/apps/web/public/research-pages/page-5.webp b/apps/web/public/research-pages/page-5.webp index e4b058e..f6298f0 100644 Binary files a/apps/web/public/research-pages/page-5.webp and b/apps/web/public/research-pages/page-5.webp differ diff --git a/apps/web/public/research-pages/page-6.webp b/apps/web/public/research-pages/page-6.webp index 9cda451..3b562a6 100644 Binary files a/apps/web/public/research-pages/page-6.webp and b/apps/web/public/research-pages/page-6.webp differ diff --git a/apps/web/public/research-pages/page-7.webp b/apps/web/public/research-pages/page-7.webp index ed381cd..c5c980e 100644 Binary files a/apps/web/public/research-pages/page-7.webp and b/apps/web/public/research-pages/page-7.webp differ diff --git a/apps/web/public/research-pages/page-8.webp b/apps/web/public/research-pages/page-8.webp new file mode 100644 index 0000000..1172fe9 Binary files /dev/null and b/apps/web/public/research-pages/page-8.webp differ diff --git a/apps/web/public/research.pdf b/apps/web/public/research.pdf index e51e2a3..41e08a7 100644 Binary files a/apps/web/public/research.pdf and b/apps/web/public/research.pdf differ diff --git a/apps/web/src/components/layout/Footer.tsx b/apps/web/src/components/layout/Footer.tsx index df73b56..dc9e09e 100644 --- a/apps/web/src/components/layout/Footer.tsx +++ b/apps/web/src/components/layout/Footer.tsx @@ -228,8 +228,8 @@ export const Footer: React.FC = () => { {/* ============================================================ MIDDLE SECTION: MONUMENTAL "HORIZON" DISPLAY TITLE ============================================================ */} -
-

+
+

Horizon

diff --git a/apps/web/src/index.css b/apps/web/src/index.css index e16d3b4..6f2af43 100644 --- a/apps/web/src/index.css +++ b/apps/web/src/index.css @@ -486,13 +486,16 @@ h2#lifecycle-heading { font-size: 2.75rem; } +.footer-horizon-title, h1.text-\[17vw\].sm\:text-\[16vw\].md\:text-\[15vw\].lg\:text-\[14vw\].font-black.uppercase.tracking-tighter.leading-none.text-transparent.bg-clip-text.bg-gradient-to-b.from-white.via-zinc-200.to-zinc-600\/30.text-center.sm\:text-left.drop-shadow-\[0_4px_30px_rgba\(255\,255\,255\,0\.06\)\] { - color: transparent; - background: url(/public/horizon.jpg); - background-clip: text; + color: transparent !important; + -webkit-text-fill-color: transparent !important; + background: url(/horizon.jpg) !important; + background-clip: text !important; + -webkit-background-clip: text !important; object-fit: cover; - background-position: 40% 60%; - background-size: cover; + background-position: 40% var(--horizon-footer-y, 50%) !important; + background-size: cover !important; filter: brightness(0.95) contrast(2.5) drop-shadow(0px 0px 7rem #092192); } .minimalblankscreen.text-center.space-y-2.mb-5.sm\:mb-7.shrink-0 { diff --git a/apps/web/src/pages/PatentsPage.tsx b/apps/web/src/pages/PatentsPage.tsx index 89c2a4f..7402daa 100644 --- a/apps/web/src/pages/PatentsPage.tsx +++ b/apps/web/src/pages/PatentsPage.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Link } from 'react-router'; -import { ArrowLeft } from 'lucide-react'; +import { ArrowLeft, Download } from 'lucide-react'; import { cn } from '../lib/utils'; const PAGES = [ @@ -11,6 +11,7 @@ const PAGES = [ { pageNumber: 5, src: '/research-pages/page-5.webp' }, { pageNumber: 6, src: '/research-pages/page-6.webp' }, { pageNumber: 7, src: '/research-pages/page-7.webp' }, + { pageNumber: 8, src: '/research-pages/page-8.webp' }, ]; interface PatentsPageProps { @@ -34,9 +35,19 @@ export const PatentsPage: React.FC = ({ className }) => { Return to Home - - Horizon: Dependency-Aware Autonomous Infrastructure Recovery • Research Article - +
+ + Horizon: Dependency-Aware Autonomous Infrastructure Recovery • Research Article (8 Pages) + + + + Download PDF + +

{/* Unified Continuous Article Sheet — Rendered Pages One After Other Without Spacing */} diff --git a/mcpserver/app/models.py b/mcpserver/app/models.py index 6c55bc0..b4d5215 100644 --- a/mcpserver/app/models.py +++ b/mcpserver/app/models.py @@ -55,6 +55,7 @@ class McpToolResult(BaseModel): NodeType = Literal["database", "cache", "application", "gateway"] NodeStatus = Literal["healthy", "degraded", "down", "recovering"] +StepRisk = Literal["low", "medium", "high"] PlaybookAction = Literal[ "database_failover", diff --git a/research.pdf b/research.pdf index e51e2a3..41e08a7 100644 Binary files a/research.pdf and b/research.pdf differ