Files
zeekay ac64d5d7dd Folds say one line: every first screen keeps its heading and a single lede
The owner's spec for a landing page is the models bento's: monochrome, the
words left and the art right, no extra prose. The folds carried two to four
sentences under each heading, and some a claim, a lede and a list besides.
Each now says one line: ProductLanding the tagline where a page states one
(the lede still describes it to search), a claim alone where the claim is
the line (/payments, /treasury, /zap, the extension), and elsewhere the
sentence that says what the thing is. /philosophy's two points, /dns' claim
that repeated its title, /calculator's capabilities line and the
Spare clauses on /research and /learn go.
2026-10-30 06:42:40 -07:00

99 lines
5.3 KiB
TypeScript

'use client'
import { FlaskConical } from 'lucide-react'
import { Page, PageHero, Section, CardGrid, Prose, type CardItem } from '@/components/marketing/page-kit'
import { papers, PAPERS } from '@/lib/data/papers'
import { Action } from '@hanzo/ui/marketing'
import { Steps } from '@/components/preview/steps'
import { phrase } from '@hanzo/i18n'
import { useI18n } from '@hanzo/i18n/react'
/**
* The way in to the library. papers.hanzo.ai is where a paper is published; this
* page is the entry point, and it states nothing of its own.
*
* It used to hold six hand-typed titles under a comment reading "Titles mirror
* what is published on papers.hanzo.ai — add a paper there, then here". They did
* not mirror it. Not one of the six was a title the library serves, every card
* pointed at the library's ROOT rather than at its paper, and the instruction to
* update two places in step is exactly the arrangement that guarantees they
* drift. The list is now derived from `lib/data/papers.json`, which
* `scripts/sync-papers.mjs` re-fetches on every build — so adding a paper to the
* library is the whole of adding it here, and a card cannot name a paper that
* does not exist or link to a page that does not answer.
*/
const ITEMS: CardItem[] = PAPERS.map((paper) => ({
title: paper.title,
description: paper.subtitle,
meta: paper.date,
href: `${papers.source}/${paper.slug}/`,
}))
/**
* Doors into the specification index. Each URL was fetched and answered.
* This is not the whole index — hips.hanzo.ai is — and a card is added here
* only when this page should open that document.
*/
const SPECS: CardItem[] = [
{ title: phrase('All HIPs'), description: phrase('The specification index.'), href: 'https://hips.hanzo.ai' },
{ title: 'HIP-0000', description: phrase('The architecture framework.'), href: 'https://hips.hanzo.ai/docs/hip-0000-hanzo-ai-architecture-framework' },
{ title: 'HIP-0510', description: phrase('Enso, the learned router.'), href: 'https://hips.hanzo.ai/docs/hip-0510-enso-learned-router' },
{ title: 'HIP-1332', description: phrase('Kai, the decision model.'), href: 'https://hips.hanzo.ai/docs/hip-1332-kai-the-decision-model' },
{ title: 'HIP-0039', description: phrase('Zen model architecture.'), href: 'https://hips.hanzo.ai/docs/hip-0039-zen-model-architecture' },
{ title: 'HIP-1334', description: phrase('The research runtime.'), href: 'https://hips.hanzo.ai/docs/hip-1334-research-unified-runtime' },
{ title: 'HIP-1145', description: phrase('How an experiment is recorded.'), href: 'https://hips.hanzo.ai/docs/hip-1145-research-experiment-record' },
]
/** Standards Track documents the families are built against. */
const STANDARDS: CardItem[] = [
{ title: 'HIP-0043', description: phrase('The inference engine.'), href: 'https://hips.hanzo.ai/docs/hip-0043-llm-inference-engine-standard' },
{ title: 'HIP-1211', description: phrase('The model API.'), href: 'https://hips.hanzo.ai/docs/hip-1211-ai-the-model-api' },
{ title: 'HIP-0004', description: phrase('The gateway.'), href: 'https://hips.hanzo.ai/docs/hip-0004-llm-gateway-unified-ai-provider-interface' },
{ title: 'HIP-0019', description: phrase('Tensor operations.'), href: 'https://hips.hanzo.ai/docs/hip-0019-tensor-operations-standard' },
{ title: 'HIP-1105', description: phrase('The benchmark arena.'), href: 'https://hips.hanzo.ai/docs/hip-1105-benchmark-measurement-arena' },
]
export default function ResearchPage() {
const { t } = useI18n()
return (
<Page>
<PageHero
eyebrow={phrase('Research')}
icon={FlaskConical}
title={phrase('Work we publish')}
lede={t('Hanzo builds infrastructure that has to hold up under audit, regulation and adversaries.')}
visual={<Steps title="papers.hanzo.ai" icon={<FlaskConical size={12} color="currentColor" />} steps={PAPERS.slice(0, 6).map((p) => ({ title: p.title, body: `${p.date}. ${p.subtitle}` }))} />}
>
<Action href="https://papers.hanzo.ai" fill>
{t('Explore papers.hanzo.ai ↗')}
</Action>
<Action href="https://hips.hanzo.ai">{t('Specifications (HIPs) ↗')}</Action>
<Action href="/benchmarks">{t('Benchmarks')}</Action>
</PageHero>
<Section title={phrase('Papers')} lede={phrase('Each one links to its page on papers.hanzo.ai, where the PDF and the LaTeX live.')}>
<CardGrid items={ITEMS} columns={2} />
</Section>
<Section title={phrase('Specifications')} lede={phrase('HIPs. The index is hips.hanzo.ai. These are the ones the families are written against.')}>
<CardGrid items={SPECS} columns={2} />
</Section>
<Section title={phrase('Standards')} lede={phrase('The standards the runtime, the gateway, and the benchmark arena are built to.')}>
<CardGrid items={STANDARDS} columns={2} />
</Section>
<Section title={phrase('Open source')}>
<Prose>
<p>
{t(
'The systems described in these papers are open source. The cloud, the gateway, the agent runtime and the infrastructure around them are developed in the open at {link}, and the platform pays the open-source authors whose work runs on it.',
{ link: <a href="https://github.com/hanzoai">github.com/hanzoai</a> },
)}
</p>
</Prose>
</Section>
</Page>
)
}