diff --git a/.github/README.md b/.github/README.md index a2c1fee..c7e035e 100644 --- a/.github/README.md +++ b/.github/README.md @@ -36,7 +36,7 @@ All three papers can be read on the site, with equations, chapter navigation, re | **Finance and Consulting** | Real estate underwriting at JLL, satellite commercialization research for Hubble, investment diligence at SAIF, equity research at CITIC, and business restructuring at EY-Parthenon. | | **STEM Academic Competitions and Training** | Advanced physics and mathematics training, competition awards, peer mentoring, and independent Olympiad instruction. | -Every entry has a Read More page with its role, location, dates, and Key Contributions. The AI and legal pages also include the research articles, so visitors can follow the underlying reasoning. +Every entry has a Read More page with its role, location, dates, and Key Contributions. The AI and legal pages also include the research articles, each opening with a diagram of its system or argument, so visitors can follow the underlying reasoning. ## About the site diff --git a/docs/design.md b/docs/design.md index ed49012..3a25769 100644 --- a/docs/design.md +++ b/docs/design.md @@ -140,7 +140,7 @@ About, Experience, and Coursework. Category introductions are omitted. On About, Experience, Coursework and the ten detail pages, content hangs on two axes of the ten-column field (`--hang-columns`, 4fr / 6fr). A section's entries share one -frame (`.entries` on Experience, `.rows` on About). From 1200px each title sits alone +frame, built from the shared `ledger` classes in `globals.css`. From 1200px each title sits alone on the left, and one continuous dashed spine runs down the frame between titles and prose, with 72px of space between entries. Below 1200px each title stacks above its prose and entries are separated by a dashed line inside the frame. On About, the @@ -170,7 +170,8 @@ reflows into a vertical sequence (parallel nodes side by side from 480px) and th loop becomes a labelled return note. A prose caption follows. Every stage must have one node or as many as the widest stage; the module throws at build time otherwise. -Prose stays within `--reading-measure` (40rem). On wide article layouts the reading +Prose stays within `--reading-measure` (36rem, about seventy characters of Source +Serif 4 at the reading size) at every width. On wide article layouts the reading column takes seven grid columns and the contents rail three, so the split lands on the column-12 guide; the rail lists chapters and opens subsections only for the chapter being read. @@ -230,9 +231,10 @@ Focus remains a visible blue outline, and hover feedback respects pointer capabi The desktop frame is capped at 1440px and divided into 15 columns, with a three-column sticky navigation rail. The content field reserves one internal track for indices and aligns headings and prose to the reading track. Tablet uses 12 outer columns. -The shared `--reading-measure` caps narrative containers at 40rem. Page introductions, -the education list and Coursework sections, Experience records and detail pages, -and AI project articles align their headings and prose to this common right edge. +The shared `--reading-measure` caps narrative containers at 36rem. Introductions, +standfirsts, stacked ledger prose, detail pages, captions, and article reading columns +share this measure; phones run at 30 to 45 characters per line and desktops at about +seventy. Nested paragraphs fill their container with natural ragged-right wrapping. Each coursework category uses one text column at every width; legal articles retain their own reading and contents layout. @@ -286,8 +288,8 @@ without forced line breaks. Section headings, entry headings, and reading text u the shared title, heading, subheading and reading hierarchy; scoped spacing overrides do not affect other pages. Page titles own the H1 position. About's two-line "Theodore / Ouyang" supplies its -main heading. The "Thinking mathematically / Working in AI" introduction -is an H2 below the hero; it remains the H1 on the `/education/` compatibility page. +main heading. The "Thinking Mathematically / Working in AI" introduction +is an H2 below the hero; it is the H1 on the `/education/` alias page. Its two lines share the title size, the second in the muted tone, and the biography sits below on the same left edge within the reading measure. Experience domains use `01`–`05` indices; individual entries have no leading markers. @@ -358,10 +360,10 @@ Legal section symbols, paragraph symbols, mathematical notation, and author name with diacritics remain part of the source text. Top-level pages retain the About and Experience primary navigation, including the -`/education/`, `/now/`, and `/past-experience/` compatibility pages. The 27 detail +`/education/`, `/now/`, and `/past-experience/` alias pages. The 27 detail pages replace those primary links with parent navigation while retaining the home wordmark: Coursework, three Selected Research manuscripts, eighteen Experience -detail pages, and five Experience domain compatibility pages. About at +detail pages, and five Experience domain alias pages. About at `/` combines the introduction, Selected Research, Education with a coursework entrance, and contact details in sections 01 through 04. The first-person introduction opens the reading content beneath the hero; both @@ -369,11 +371,11 @@ Duke degrees, the advisor, scholarships, and all 49 courses are available. The canonical `/coursework/` page presents the four subject groups, returns to Education through its parent navigation, and appears in the sitemap. The homepage's `#coursework` anchor remains a valid entrance to this page. -The `/education/` compatibility +The `/education/` alias page shares the About content without repeating the clarinet hero, uses `/` as its canonical URL, and remains outside primary navigation and the sitemap. Experience contains all five domains and eighteen entries. The five category -URLs provide compatibility pages with `/experience/` as their canonical URL and a +URLs are alias pages with `/experience/` as their canonical URL and a return link to the matching Experience section. Domain `03` is Legal Research and Policy Analysis; its four selected papers use dedicated article URLs. Domain `01`, AI Research and Engineering, @@ -408,7 +410,7 @@ section references link to the matching heading and preserve their source numera The website has twenty-four canonical content routes: About, Experience, Coursework, three Selected Research articles, eight Experience manuscripts, and ten other Experience -detail pages. Eight compatibility pages bring the content export to thirty-two routes. The +detail pages. Eight alias pages bring the content export to thirty-two routes. The architecture viewer adds one technical reference route, making thirty-three exported routes in total, excluding 404. Keep factual claims, metadata, copy, and content order aligned with the integrity manifests. diff --git a/docs/maintenance.md b/docs/maintenance.md index a25a502..c9cc309 100644 --- a/docs/maintenance.md +++ b/docs/maintenance.md @@ -52,7 +52,7 @@ manuscripts, and ten ordinary detail pages. About's Education section links to the dedicated Coursework page through Read More. The page presents all 49 courses in four subject groups. -Compatibility routes remain functional: `/education/` renders shared About content; +Alias routes: `/education/` renders shared About content; `/past-experience/` and `/now/` render Experience; the five `/past-experience/[slug]/` category pages filter the same approved entries. Their canonical URLs point to the corresponding primary page. Keep these shared renderers @@ -148,8 +148,12 @@ return to the originating Education, Selected Research, or Experience anchor. `ArticleReadingLayout`/`ArticleContents` own the article structure and responsive navigation. `ExperienceSection` and `ExperienceDetails` keep all categories and detail pages consistent. `SectionDirectory` owns the shared numbered anchor directory -for Experience and Coursework, including row rules, decorative indices, and View -feedback for pointer, keyboard, and touch input. Browser interaction stays in focused client components; +for Experience and Coursework, including its frame, dashed row dividers, decorative +indices, and View feedback for pointer, keyboard, and touch input. Framed lists use the +global `ledger`, `ledger-item`, `ledger-title`, `ledger-body`, and `ledger-prose` classes, +and every Read More link uses `read-more` with the shared `ReadingArrow`; reuse them for +any new list. `LogicDiagram` renders the article diagrams from +`app/lib/content/architecture-diagrams.ts`. Browser interaction stays in focused client components; the About hero is isolated in `app/components/clarinet-hero/`. `ResearchArticle` serves AI and Selected Research. The Markdown parser supports diff --git a/website/README.md b/website/README.md index b881734..1ae3c6f 100644 --- a/website/README.md +++ b/website/README.md @@ -7,7 +7,9 @@ across five fields. Dedicated readers present coursework and research articles with mathematical notation, chapter navigation, and legal footnotes. The visual system pairs Inter headings with Source Serif 4 prose, a warm paper -background, and a restrained editorial grid. About opens with a two-column name +background, and a restrained editorial grid: faint frames hold each list, dashed +hairlines divide them, and each AI and legal article opens with a logic architecture +diagram. About opens with a two-column name and recognizable clarinet hero. The dense Canvas 2D particle field aggregates on entry, responds locally to the pointer, disperses with scrolling, and returns to its shape, with six silver ring keys, joint bands and pads, two long rods, and @@ -17,8 +19,8 @@ The name and institutions use Inter; the credential roles use Source Serif 4. Blue corner marks, a single solid blue oval, and four solid, continuously breathing musical notes accompany the field. The open blue arc has larger, more closely spaced points and retains its occlusion behind the instrument. -Selected Research and Education use the same Read More link pattern as Experience. -Experience and Coursework share a numbered section directory. +Selected Research, Education, and Experience share the framed ledger and Read More +link; Experience and Coursework share a framed section index. ## Local development diff --git a/website/app/components/AboutContent.tsx b/website/app/components/AboutContent.tsx index 4157748..711159b 100644 --- a/website/app/components/AboutContent.tsx +++ b/website/app/components/AboutContent.tsx @@ -1,28 +1,17 @@ import Link from "next/link"; -import type { ReactNode } from "react"; import { selectedResearchProjects } from "../lib/content/selected-research"; +import { ReadingArrow } from "./ReadingArrow"; import styles from "../home.module.css"; -const researchSummaries: Record = { - "critical-dependence-stress-for-portfolio-diversification": [ - <> - I develop a variational framework that measures how much dependence stress it takes to reverse a portfolio’s Expected Shortfall advantage while every individual loss distribution stays fixed. I prove a quadratic law for the critical stress budget, introduce the marginal-restoration premium, and characterize exactly when it is positive. In a uniform benchmark, the asymptotic reversal budget is at least 30% higher than the initial-sensitivity prediction. At equal effective costs, continuous flow–cut duality characterizes how the premium responds to background displacement costs. Together these results turn local risk sensitivity into a mathematically derived threshold for portfolio decision reversal. - , - ], - "certified-valuation-arithmetic-asian-options": [ +const researchSummaries: Record = { + "critical-dependence-stress-for-portfolio-diversification": + "I develop a variational framework that measures how much dependence stress it takes to reverse a portfolio's Expected Shortfall advantage while every individual loss distribution stays fixed. I prove a quadratic law for the critical stress budget, introduce the marginal-restoration premium, and characterize exactly when it is positive. In a uniform benchmark, the asymptotic reversal budget is at least 30% higher than the initial-sensitivity prediction. At equal effective costs, continuous flow–cut duality characterizes how the premium responds to background displacement costs. Together these results turn local risk sensitivity into a mathematically derived threshold for portfolio decision reversal.", + "certified-valuation-arithmetic-asian-options": "I develop a weighted payoff-remainder method and use it to turn an exact conditional price representation into certified valuations of arithmetic Asian options. Shared Gaussian smoothing and validated Heston transforms together give a complete projected Euler discretization-error bound below 0.011025 price units for a one-year call spread with twelve monthly fixings at a specified Heston parameter point and step size. I also derive a direct coupling bound, which cuts the nonlinear remainder width by 99.4% in a deterministic-variance example. Both results come with proofs and executable certificates.", - ], - "certified-rough-heston-valuation": [ - <> - I develop a deterministic framework for certifying rough Heston portfolio valuations. I derive a finite-history propagation kernel and the exact support function of a joint error enclosure, which captures the shared Fourier errors that separate option-by-option bounds lose. In a matched benchmark, finite-history propagation tightens the complete pricing-error upper bound by 72.91% with the pricing output unchanged. Mathematical proofs and executable certificates tie these theoretical advances to financial results that can be verified. - , - ], + "certified-rough-heston-valuation": + "I develop a deterministic framework for certifying rough Heston portfolio valuations. I derive a finite-history propagation kernel and the exact support function of a joint error enclosure, which captures the shared Fourier errors that separate option-by-option bounds lose. In a matched benchmark, finite-history propagation tightens the complete pricing-error upper bound by 72.91% with the pricing output unchanged. Mathematical proofs and executable certificates tie these theoretical advances to financial results that can be verified.", }; -function ReadingArrow() { - return ; -} - export function AboutContent({ hasHero = false }: { hasHero?: boolean }) { const Heading = hasHero ? "h2" : "h1"; return ( @@ -31,7 +20,7 @@ export function AboutContent({ hasHero = false }: { hasHero?: boolean }) {
- Thinking mathematically{" "} + Thinking Mathematically{" "} Working in AI
@@ -53,15 +42,13 @@ export function AboutContent({ hasHero = false }: { hasHero?: boolean }) {

Selected Research

-
+
{selectedResearchProjects.map((project) => ( -
-

{project.title}

-
- {researchSummaries[project.slug].map((paragraph, index) => ( -

{paragraph}

- ))} - +
+

{project.title}

+
+

{researchSummaries[project.slug]}

+ Read More
@@ -75,10 +62,10 @@ export function AboutContent({ hasHero = false }: { hasHero?: boolean }) {

Education

-
-
-

Duke University

-
+
+
+

Duke University

+

Master of Engineering in Risk Engineering

@@ -98,7 +85,7 @@ export function AboutContent({ hasHero = false }: { hasHero?: boolean }) {
- Read More + Read More
diff --git a/website/app/components/ReadingArrow.tsx b/website/app/components/ReadingArrow.tsx new file mode 100644 index 0000000..c86a954 --- /dev/null +++ b/website/app/components/ReadingArrow.tsx @@ -0,0 +1,8 @@ +/** The decorative chevron that follows every Read More link. */ +export function ReadingArrow() { + return ( + + ); +} diff --git a/website/app/components/experience/Experience.module.css b/website/app/components/experience/Experience.module.css index f25d814..c5ec10b 100644 --- a/website/app/components/experience/Experience.module.css +++ b/website/app/components/experience/Experience.module.css @@ -41,29 +41,7 @@ text-wrap: balance; } -/* A section's entries share one unfilled frame with room inside. From 1200px a - continuous dashed spine runs between the titles and the summaries. */ -.entries { - position: relative; - padding: var(--frame-pad) var(--frame-pad) calc(var(--frame-pad) - 10px); - border: 1px solid var(--frame); -} -.entry { scroll-margin-top: 40px; } -.entry + .entry { margin-top: 72px; } -.entryTitle { - margin: 0; - color: var(--ink); - font-size: var(--type-subheading); - font-weight: 500; - line-height: var(--subheading-leading); - letter-spacing: var(--subheading-tracking); - text-wrap: pretty; -} -.entryBody { min-width: 0; max-width: var(--reading-measure); } -.summary { margin: 0; font-size: var(--type-reading); line-height: var(--reading-leading); text-wrap: pretty; } -.summary, .indexDisclosure p, -.disclosure p, .architecturalContext p, .contributions > ol { font-family: var(--font-prose); @@ -72,14 +50,7 @@ /* The AI section's note is its standfirst: under the heading, on the same edge. */ .indexDisclosure { max-width: var(--reading-measure); margin: -24px 0 72px; } .indexDisclosure p { color: var(--supporting-ink); } -.disclosure h2 { - margin: 0 0 8px; - font-size: var(--type-subheading); - line-height: var(--subheading-leading); - font-weight: 500; - letter-spacing: var(--subheading-tracking); -} -.indexDisclosure p, .disclosure p, .architecturalContext p { +.indexDisclosure p, .architecturalContext p { margin: 0; font-size: var(--type-reading); line-height: var(--reading-leading); @@ -94,30 +65,11 @@ scroll-margin-top: 6rem; } .architecturalContext p + p { margin-top: 1.25rem; } -.summary code, .contributions code, .architecturalContext code { +.contributions code, .architecturalContext code { font: inherit; overflow-wrap: anywhere; } -.readMore { - display: flex; - width: fit-content; - align-items: center; - min-height: 44px; - margin-top: 8px; - gap: 6px; - font-size: var(--type-action); - font-weight: 500; - line-height: var(--interface-leading); - text-decoration: underline; - text-decoration-color: var(--link-rule); - text-underline-offset: var(--link-underline-offset); - cursor: pointer; - transition: color 180ms var(--ease-out), text-decoration-color 180ms var(--ease-out); -} -.readMore svg { width: 14px; height: 14px; flex-shrink: 0; transition: transform 180ms var(--ease-out); } -.readMore:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; } - /* Detail pages */ .detailPage { min-width: 0; } .detailHeader { margin-bottom: 4.5rem; } @@ -203,14 +155,8 @@ line-height: var(--reading-leading); } -@media (hover: hover) and (pointer: fine) { - .readMore:hover { color: var(--accent); text-decoration-color: var(--accent); } - .readMore:hover svg { transform: translateX(2px); } -} - @media (min-width: 1200px) { .intro, - .entry, .detailPage > .contributions { display: grid; grid-template-columns: var(--hang-columns); @@ -218,18 +164,7 @@ } .intro h1 { max-width: none; padding-right: var(--hang-gap); text-wrap: balance; } .intro > nav { margin-top: 0; } - .entries::before { - position: absolute; - top: var(--frame-pad); - bottom: var(--frame-pad); - left: calc(var(--frame-pad) + (100% - 2 * var(--frame-pad)) * 0.4); - width: 1px; - background: var(--dash-y); - content: ""; - } - .entryTitle, .detailPage > .contributions h2 { padding-right: var(--hang-gap); } - .entryBody { max-width: none; padding-left: var(--hang-gap); } .detailPage > .contributions h2 { margin: 0; } .detailPage > .contributions > ol { padding-right: var(--prose-inset); } } @@ -240,8 +175,6 @@ } @media (width < 1200px) { - .entryTitle { margin-bottom: 12px; } - .entry + .entry { margin-top: 36px; padding-top: 36px; background: var(--dash-x) left top / 100% 1px no-repeat; } .metadata { grid-template-columns: repeat(2, minmax(0, 1fr)); } .metadata > div + div { background: none; } .metadata > div:nth-child(2) { background: var(--dash-y) left top / 1px 100% no-repeat; } @@ -263,9 +196,6 @@ .sectionIndex { display: block; margin-bottom: 10px; padding-top: 0; } .sectionTitle { margin-bottom: 32px; } .indexDisclosure { margin: -8px 0 48px; } - .entries { padding: 28px 20px 18px; } - .entry { scroll-margin-top: 6rem; } - .entry + .entry { margin-top: 28px; padding-top: 28px; } .metadata { margin-top: 32px; } .metadata > div { padding: 14px 16px 16px; } .contributions > ol > li { grid-template-columns: 1.75rem minmax(0, 1fr); } @@ -275,8 +205,3 @@ .metadata { grid-template-columns: 1fr; } .metadata > div:nth-child(n + 2) { background: var(--dash-x) left top / 100% 1px no-repeat; } } - -@media (prefers-reduced-motion: reduce) { - .readMore, - .readMore svg { transition: none; } -} diff --git a/website/app/components/experience/ExperienceContent.tsx b/website/app/components/experience/ExperienceContent.tsx index 2c40a6e..022b632 100644 --- a/website/app/components/experience/ExperienceContent.tsx +++ b/website/app/components/experience/ExperienceContent.tsx @@ -1,19 +1,17 @@ import Link from "next/link"; import { showcaseDomains, type ShowcaseDomain, type ShowcaseEntry } from "../../lib/content/experience-showcase"; import { InlineMarkdown } from "../research/ResearchInline"; +import { ReadingArrow } from "../ReadingArrow"; import { SectionDirectory } from "../SectionDirectory"; import styles from "./Experience.module.css"; -function ReadingArrow() { - return ; -} function ExperienceEntry({ entry }: { entry: ShowcaseEntry }) { return ( -
-

{entry.listingTitle}

-
-

{entry.categoryId === "01" ? : entry.summary}

- +
+

{entry.listingTitle}

+
+

{entry.categoryId === "01" ? : entry.summary}

+ {entry.readMoreLabel}
@@ -32,7 +30,7 @@ export function ExperienceSection({ domain, standalone = false }: { domain: Show

{domain.disclosure.title}

} -
+
{domain.entries.map((entry) => )}
diff --git a/website/app/components/experience/ExperienceDetails.tsx b/website/app/components/experience/ExperienceDetails.tsx index 1eece92..6e18bf0 100644 --- a/website/app/components/experience/ExperienceDetails.tsx +++ b/website/app/components/experience/ExperienceDetails.tsx @@ -15,16 +15,6 @@ export function ExperienceMetadata({ entry }: { entry: ShowcaseEntry }) { ); } -export function ExperienceDisclosure({ entry }: { entry: ShowcaseEntry }) { - if (!entry.disclosure) return null; - return ( - - ); -} - /** The project's logic architecture, shown under the record strip as the article's visual abstract. */ export function ExperienceDiagram({ entry }: { entry: ShowcaseEntry }) { const diagram = architectureDiagrams[entry.id]; diff --git a/website/app/components/research/ResearchArticle.tsx b/website/app/components/research/ResearchArticle.tsx index 4163a0f..6172633 100644 --- a/website/app/components/research/ResearchArticle.tsx +++ b/website/app/components/research/ResearchArticle.tsx @@ -4,7 +4,7 @@ import { cache } from "react"; import sharp from "sharp"; import { SiteShell } from "../SiteShell"; import { ArticleReadingLayout } from "../article/ArticleReadingLayout"; -import { ArchitecturalContext, ExperienceDiagram, ExperienceDisclosure, ExperienceMetadata, KeyContributions } from "../experience/ExperienceDetails"; +import { ArchitecturalContext, ExperienceDiagram, ExperienceMetadata, KeyContributions } from "../experience/ExperienceDetails"; import type { ShowcaseEntry } from "../../lib/content/experience-showcase"; import type { ResearchArticleContent } from "../../lib/content/research-markdown"; import { buildArticleHeadingMap, formatArticleHeadings, linkArticleSectionReferences } from "../../lib/content/article-headings"; @@ -83,10 +83,9 @@ export function ResearchArticle({ project, active, returnPath, returnLabel, titl return (
-
+

{showcase?.headline ?? project.title}

{showcase ? : !project.repositoryUrl && frontMatterCount > 0 &&
{renderedBlocks.slice(0, frontMatterCount)}
} - {showcase && } {project.repositoryUrl &&

GitHubFull Manuscript

} {showcase && }
diff --git a/website/app/education/page.tsx b/website/app/education/page.tsx index 2cc4631..0533df9 100644 --- a/website/app/education/page.tsx +++ b/website/app/education/page.tsx @@ -4,7 +4,7 @@ import { SiteShell } from "../components/SiteShell"; import { createPageMetadata, ABOUT_DESCRIPTION, HOME_TITLE } from "../lib/content/site"; import styles from "../home.module.css"; -// Static compatibility route for About content and its research fragment links. +// /education/ is an alias of About that keeps its research fragment links. // Canonical metadata points to /; shared content omits the particle entrance. export const metadata: Metadata = createPageMetadata({ title: HOME_TITLE, diff --git a/website/app/experience/[slug]/page.tsx b/website/app/experience/[slug]/page.tsx index ec151ec..2ad6368 100644 --- a/website/app/experience/[slug]/page.tsx +++ b/website/app/experience/[slug]/page.tsx @@ -28,7 +28,7 @@ export default async function ExperienceDetailPage({ params }: PageProps) { return (
-
+

{entry.headline}

diff --git a/website/app/globals.css b/website/app/globals.css index 993d195..2ef34de 100644 --- a/website/app/globals.css +++ b/website/app/globals.css @@ -17,7 +17,6 @@ --dash-y: repeating-linear-gradient(to bottom, var(--dash) 0 4px, transparent 4px 8px); --frame-pad: 44px; --accent: #2200ff; - --dither: #070707; /* One size per role, everywhere: title 36, heading 24, subheading 18, reading 16, interface 15, label 13, index 11. */ --type-title: 2.25rem; @@ -29,7 +28,8 @@ --type-interface: 0.9375rem; --type-action: var(--type-interface); --type-math: 1.15em; - --reading-measure: 40rem; + /* About seventy characters of Source Serif 4 at the reading size. */ + --reading-measure: 36rem; --rail-min-width: calc(5 * var(--type-interface) + 13px + clamp(20px, 2vw, 24px) + 22px + 10px); --title-leading: 1.12; --heading-leading: 1.25; @@ -44,7 +44,6 @@ The gap belongs to the title cell so axis B lands exactly on a grid line, and prose keeps an inset from the reading-end guide. */ --hang-columns: minmax(0, 4fr) minmax(0, 6fr); - --hang-offset: 40%; --hang-gap: 40px; --prose-inset: 32px; --link-underline-offset: 0.18em; @@ -529,6 +528,75 @@ button:focus-visible { text-decoration-color: currentColor; } +/* Ledger: a section's items in one unfilled frame with room inside. Each title + hangs on the left; from 1200px one continuous dashed spine divides the titles + from their prose. */ +.ledger { + position: relative; + padding: var(--frame-pad) var(--frame-pad) calc(var(--frame-pad) - 10px); + border: 1px solid var(--frame); +} + +.ledger-item { + scroll-margin-top: 40px; +} + +.ledger-item + .ledger-item { + margin-top: 72px; +} + +.ledger-title { + margin: 0; + color: var(--ink); + font-size: var(--type-subheading); + font-weight: 500; + line-height: var(--subheading-leading); + letter-spacing: var(--subheading-tracking); + text-wrap: pretty; +} + +.ledger-body { + min-width: 0; + max-width: var(--reading-measure); +} + +.ledger-prose { + margin: 0; + font-family: var(--font-prose); + font-size: var(--type-reading); + line-height: var(--reading-leading); + text-wrap: pretty; +} + +.ledger-prose code { + font: inherit; + overflow-wrap: anywhere; +} + +.read-more { + display: flex; + width: fit-content; + align-items: center; + min-height: 44px; + margin-top: 8px; + gap: 6px; + font-size: var(--type-action); + font-weight: 500; + line-height: var(--interface-leading); + text-decoration: underline; + text-decoration-color: var(--link-rule); + text-underline-offset: var(--link-underline-offset); + cursor: pointer; + transition: color 180ms var(--ease-out), text-decoration-color 180ms var(--ease-out); +} + +.read-more svg { + width: 14px; + height: 14px; + flex-shrink: 0; + transition: transform 180ms var(--ease-out); +} + .site-footer { display: flex; justify-content: space-between; @@ -551,7 +619,8 @@ button:focus-visible { .primary-nav a:hover, .parent-link:hover, .back-link:hover, - .education-note a:hover { + .education-note a:hover, + .read-more:hover { color: var(--accent); text-decoration-color: var(--accent); } @@ -559,6 +628,53 @@ button:focus-visible { .wordmark:hover .wordmark-lockup { color: var(--accent); } + + .read-more:hover svg { + transform: translateX(2px); + } +} + +@media (min-width: 1200px) { + .ledger::before { + position: absolute; + top: var(--frame-pad); + bottom: var(--frame-pad); + left: calc(var(--frame-pad) + (100% - 2 * var(--frame-pad)) * 0.4); + width: 1px; + background: var(--dash-y); + content: ""; + } + + .ledger-item { + display: grid; + grid-template-columns: var(--hang-columns); + align-items: start; + } + + .ledger-title { + padding-right: var(--hang-gap); + } + + .ledger-body { + max-width: none; + padding-left: var(--hang-gap); + } +} + +@media (width < 1200px) { + .ledger { + padding: 32px 32px 22px; + } + + .ledger-title { + margin-bottom: 12px; + } + + .ledger-item + .ledger-item { + margin-top: 36px; + padding-top: 36px; + background: var(--dash-x) left top / 100% 1px no-repeat; + } } @media (pointer: coarse) { @@ -776,6 +892,19 @@ button:focus-visible { margin-bottom: 45px; } + .ledger { + padding: 28px 20px 18px; + } + + .ledger-item { + scroll-margin-top: 6rem; + } + + .ledger-item + .ledger-item { + margin-top: 28px; + padding-top: 28px; + } + .site-footer { width: calc(100% - 40px); padding-bottom: 28px; @@ -802,7 +931,9 @@ button:focus-visible { .parent-link, .primary-nav a::before, .back-link, - .rail-panel { + .rail-panel, + .read-more, + .read-more svg { transition: none; } diff --git a/website/app/home.module.css b/website/app/home.module.css index 49c971e..71c7889 100644 --- a/website/app/home.module.css +++ b/website/app/home.module.css @@ -94,43 +94,6 @@ letter-spacing: var(--heading-tracking); } -/* A section's rows share one unfilled frame with room inside. From 1200px a - continuous dashed spine runs between the titles and their prose. */ -.rows { - position: relative; - padding: var(--frame-pad) var(--frame-pad) calc(var(--frame-pad) - 10px); - border: 1px solid var(--frame); -} - -.row + .row { - margin-top: 72px; -} - -.rowTitle, -.institution { - margin: 0; - color: var(--ink); - font-size: var(--type-subheading); - font-weight: 500; - letter-spacing: var(--subheading-tracking); - line-height: var(--subheading-leading); - text-wrap: pretty; -} - -.rowBody { - min-width: 0; - max-width: var(--reading-measure); -} - -.researchSummary { - margin: 0; - color: inherit; - font-family: var(--font-prose); - font-size: var(--type-reading); - line-height: var(--reading-leading); - text-wrap: pretty; -} - .educationList :global(.education-entry) { padding: 0; border-bottom: 0; @@ -169,35 +132,6 @@ scroll-margin-top: 32px; } -.readMore { - display: flex; - width: fit-content; - align-items: center; - min-height: 44px; - margin-top: 8px; - gap: 6px; - font-size: var(--type-action); - font-weight: 500; - line-height: var(--interface-leading); - text-decoration: underline; - text-decoration-color: var(--link-rule); - text-underline-offset: var(--link-underline-offset); - cursor: pointer; - transition: color 180ms var(--ease-out), text-decoration-color 180ms var(--ease-out); -} - -.readMore svg { - width: 14px; - height: 14px; - flex-shrink: 0; - transition: transform 180ms var(--ease-out); -} - -.readMore:focus-visible { - outline: 2px solid var(--accent); - outline-offset: 4px; -} - /* Contact fields share one frame, divided by dashed hairlines. */ .contactStrip { display: grid; @@ -250,15 +184,10 @@ } @media (hover: hover) and (pointer: fine) { - .readMore:hover, .contactStrip a:hover { color: var(--accent); text-decoration-color: var(--accent); } - - .readMore:hover svg { - transform: translateX(2px); - } } @media (pointer: coarse) { @@ -268,33 +197,7 @@ } @media (min-width: 1200px) { - .row { - display: grid; - grid-template-columns: var(--hang-columns); - align-items: start; - } - - .rowTitle, - .institution { - padding-right: var(--hang-gap); - } - - .rows::before { - position: absolute; - top: var(--frame-pad); - bottom: var(--frame-pad); - left: calc(var(--frame-pad) + (100% - 2 * var(--frame-pad)) * 0.4); - width: 1px; - background: var(--dash-y); - content: ""; - } - - .rowBody { - max-width: none; - padding-left: var(--hang-gap); - } - - /* The first divider falls on the same axis as the spine of the frames above, + /* The first divider falls on the same axis as the ledger spine above, and each value starts where their titles and prose start. */ .contactStrip { grid-template-columns: calc(var(--frame-pad) + (100% - 2 * var(--frame-pad)) * 0.4) minmax(0, 1fr) minmax(0, 1fr); @@ -324,19 +227,6 @@ } } -@media (width < 1200px) { - .rowTitle, - .institution { - margin-bottom: 10px; - } - - .row + .row { - margin-top: 36px; - padding-top: 36px; - background: var(--dash-x) left top / 100% 1px no-repeat; - } -} - @media (width < 768px) { .homeFrame .profileSection { padding-top: 88px; @@ -366,15 +256,6 @@ .sectionTitle { margin-bottom: 28px; } - - .rows { - padding: 28px 20px 18px; - } - - .row + .row { - margin-top: 28px; - padding-top: 28px; - } } @media (max-width: 540px) { @@ -392,9 +273,7 @@ } @media (prefers-reduced-motion: reduce) { - .contactStrip a, - .readMore, - .readMore svg { + .contactStrip a { transition: none; } } diff --git a/website/app/lib/content/architecture-diagrams.ts b/website/app/lib/content/architecture-diagrams.ts index 1817549..ea6ec1c 100644 --- a/website/app/lib/content/architecture-diagrams.ts +++ b/website/app/lib/content/architecture-diagrams.ts @@ -14,8 +14,8 @@ export type ArchitectureDiagram = { caption: string; }; -const SYSTEM = "System architecture"; -const FRAMEWORK = "Analytical framework"; +const SYSTEM = "System Architecture"; +const FRAMEWORK = "Analytical Framework"; export const architectureDiagrams: Readonly> = { 1: { diff --git a/website/app/lib/content/experience-showcase.ts b/website/app/lib/content/experience-showcase.ts index 9593771..4715137 100644 --- a/website/app/lib/content/experience-showcase.ts +++ b/website/app/lib/content/experience-showcase.ts @@ -18,7 +18,6 @@ type SourceEntry = { keyContributions: string[]; keyContributionDetails?: Record; notes: string[]; - disclosure?: CopySection; architecturalContext?: CopySection; }; diff --git a/website/app/not-found.tsx b/website/app/not-found.tsx index 421f8d9..06f5f9d 100644 --- a/website/app/not-found.tsx +++ b/website/app/not-found.tsx @@ -12,7 +12,7 @@ export const metadata: Metadata = createPageMetadata({ export default function NotFound() { return ( -
+

404

Page Not Found

diff --git a/website/app/now/page.tsx b/website/app/now/page.tsx index e714669..ef10139 100644 --- a/website/app/now/page.tsx +++ b/website/app/now/page.tsx @@ -1,2 +1,2 @@ -// Serve Experience at /now/ for retained bookmarks. +// /now/ is an alias of Experience. export { default, metadata } from "../experience/page"; diff --git a/website/app/past-experience/components/ExperienceDomainPage.tsx b/website/app/past-experience/components/ExperienceDomainPage.tsx index db8c6ad..a7fab31 100644 --- a/website/app/past-experience/components/ExperienceDomainPage.tsx +++ b/website/app/past-experience/components/ExperienceDomainPage.tsx @@ -3,7 +3,7 @@ import { ExperienceSection } from "../../components/experience/ExperienceContent import type { ShowcaseDomain } from "../../lib/content/experience-showcase"; import styles from "../../components/experience/Experience.module.css"; -// Compatibility category pages render the approved Experience entries. +// Domain alias pages render one Experience domain's approved entries. export function ExperienceDomainPage({ domain }: { domain: ShowcaseDomain }) { return ( diff --git a/website/app/past-experience/components/LegalPaperPage.module.css b/website/app/past-experience/components/LegalPaperPage.module.css index 26619dd..eed888c 100644 --- a/website/app/past-experience/components/LegalPaperPage.module.css +++ b/website/app/past-experience/components/LegalPaperPage.module.css @@ -279,11 +279,6 @@ align-items: start; } - .overview, - .readingColumn { - max-width: none; - } - .overview { grid-column: 1; grid-row: 1; diff --git a/website/content/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research.json b/website/content/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research.json index a85bddf..f3fe593 100644 --- a/website/content/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research.json +++ b/website/content/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research.json @@ -7,6 +7,6 @@ "sourceDocument": { "fileName": "ai-research-and-engineering.md", "path": "content/sources/ai-portfolio/ai-research-and-engineering.md", - "sha256": "6b1b487c986316b97aee42299b11414bc2584baed104cd92bb57973252f989e0" + "sha256": "b5d6a1b86108c5b4f5d84f64bf50ff262c84cc11736946afa8ea925564323c13" } } diff --git a/website/content/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production.json b/website/content/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production.json index 1c1f750..c9b60af 100644 --- a/website/content/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production.json +++ b/website/content/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production.json @@ -7,6 +7,6 @@ "sourceDocument": { "fileName": "ai-research-and-engineering.md", "path": "content/sources/ai-portfolio/ai-research-and-engineering.md", - "sha256": "6b1b487c986316b97aee42299b11414bc2584baed104cd92bb57973252f989e0" + "sha256": "b5d6a1b86108c5b4f5d84f64bf50ff262c84cc11736946afa8ea925564323c13" } } diff --git a/website/content/artificial-intelligence/task-validity-in-financial-synthetic-data.json b/website/content/artificial-intelligence/task-validity-in-financial-synthetic-data.json index 80f4081..5f22ac8 100644 --- a/website/content/artificial-intelligence/task-validity-in-financial-synthetic-data.json +++ b/website/content/artificial-intelligence/task-validity-in-financial-synthetic-data.json @@ -7,6 +7,6 @@ "sourceDocument": { "fileName": "ai-research-and-engineering.md", "path": "content/sources/ai-portfolio/ai-research-and-engineering.md", - "sha256": "6b1b487c986316b97aee42299b11414bc2584baed104cd92bb57973252f989e0" + "sha256": "b5d6a1b86108c5b4f5d84f64bf50ff262c84cc11736946afa8ea925564323c13" } } diff --git a/website/content/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks.json b/website/content/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks.json index b438346..4be0f23 100644 --- a/website/content/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks.json +++ b/website/content/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks.json @@ -7,6 +7,6 @@ "sourceDocument": { "fileName": "ai-research-and-engineering.md", "path": "content/sources/ai-portfolio/ai-research-and-engineering.md", - "sha256": "6b1b487c986316b97aee42299b11414bc2584baed104cd92bb57973252f989e0" + "sha256": "b5d6a1b86108c5b4f5d84f64bf50ff262c84cc11736946afa8ea925564323c13" } } diff --git a/website/content/experience-showcase.json b/website/content/experience-showcase.json index e252563..7d4e79d 100644 --- a/website/content/experience-showcase.json +++ b/website/content/experience-showcase.json @@ -37,11 +37,11 @@ "organization": "Duke University × Leading Foundation Model Developer", "summary": "With a leading foundation model developer, I led the statistical system behind expert feedback for LLM post-training, one of the first engineering implementations of prediction-assisted statistical inference and capacity-constrained review allocation in expert data production. It coordinated more than 300 specialists and an external vendor network. Under ideal residual calibration, a synthetic benchmark showed 17.79% lower estimation variance than uniform sampling at equal audit cost.", "readMoreLabel": "Read More", - "detailTitle": "Large-scale domain expert feedback governance and adaptive review", + "detailTitle": "Large-Scale Domain Expert Feedback Governance and Adaptive Review", "metadata": { "position": "Researcher", "location": "Durham, North Carolina; Palo Alto, California", - "dates": "September 2023 to September 2026" + "dates": "September 2023 – September 2026" }, "contributionsLabel": "Key Contributions", "keyContributions": [ @@ -64,11 +64,11 @@ "organization": "Duke University × Leading Foundation Model Developer", "summary": "I designed the data strategy for financial post-training in a frontier foundation model program, one of the first engineering implementations of constraint-preserving synthetic data and structured expert preference supervision for financial LLM post-training. Diagnostic decision tasks, exact accounting constraints and a five-level preference protocol feed Batch Zero, the calibration protocol the company later extended to other post-training programs.", "readMoreLabel": "Read More", - "detailTitle": "Financial task design and synthetic data engineering", + "detailTitle": "Financial Task Design and Synthetic Data Engineering", "metadata": { "position": "Researcher", "location": "Durham, North Carolina; Palo Alto, California", - "dates": "September 2023 to September 2026" + "dates": "September 2023 – September 2026" }, "contributionsLabel": "Key Contributions", "keyContributions": [ @@ -101,11 +101,11 @@ "organization": "Duke University × Frontier AI Research Laboratory", "summary": "I developed a framework for evaluating and supervising general reasoning with a frontier AI research laboratory, among the first engineering implementations of joint verification across final answers, visible reasoning and execution evidence in frontier model evaluation. Code checks, LLM-as-a-Judge screening and specialist scholars work in three layers. On 3,600 benchmark submissions, certificate checking made no false acceptances, where final-answer matching falsely accepted 75.0%.", "readMoreLabel": "Read More", - "detailTitle": "General reasoning evaluation and layered verification", + "detailTitle": "General Reasoning Evaluation and Layered Verification", "metadata": { "position": "Researcher", "location": "Durham, North Carolina; Palo Alto, California", - "dates": "September 2023 to September 2026" + "dates": "September 2023 – September 2026" }, "contributionsLabel": "Key Contributions", "keyContributions": [ @@ -138,11 +138,11 @@ "organization": "Duke University × Leading Global Alternative Asset Manager", "summary": "I developed and implemented a framework for evidence verification and decision assurance with a leading global alternative asset manager, one of the first engineering implementations in institutional investment research to treat model multiplicity, unverified evidence and the cost of verification jointly. It tells analysts which fact to verify next: in an eight-scenario benchmark, one targeted query cut worst-case regret from 0.61 score units to zero.", "readMoreLabel": "Read More", - "detailTitle": "Evidence verification and robust comparison in investment research", + "detailTitle": "Evidence Verification and Robust Comparison in Investment Research", "metadata": { "position": "Researcher", "location": "Durham, North Carolina; Washington, DC", - "dates": "September 2023 to September 2026" + "dates": "September 2023 – September 2026" }, "contributionsLabel": "Key Contributions", "keyContributions": [ @@ -168,7 +168,7 @@ "detailTitle": "Asset-Verification Partnerships and Issuer Ranking", "metadata": { "position": "Business Development and Business Analytics (Full-time)", - "location": "Los Angeles, California, USA (Remote)", + "location": "Los Angeles, California (Remote)", "dates": "August 2024 – October 2025" }, "contributionsLabel": "Key Contributions", @@ -218,7 +218,7 @@ "detailTitle": "PCA-Based Sustainability Analysis and Green-Credit Screening", "metadata": { "position": "Fintech Intern", - "location": "Shanghai & Suzhou, China", + "location": "Shanghai and Suzhou, China", "dates": "March 2021 – May 2021" }, "contributionsLabel": "Key Contributions", @@ -241,7 +241,7 @@ "detailTitle": "Autonomous Authority in Space: Risk Tradeoffs and the Law of Delegation", "metadata": { "position": "Author (Letao Ouyang)", - "location": "Durham, NC", + "location": "Durham, North Carolina", "dates": "December 2024 (manuscript date)" }, "contributionsLabel": "Key Contributions", @@ -263,7 +263,7 @@ "detailTitle": "Small States and the Governance of Strategic Space Dependence", "metadata": { "position": "Author (Letao Ouyang)", - "location": "Durham, NC", + "location": "Durham, North Carolina", "dates": "December 2024 (manuscript date)" }, "contributionsLabel": "Key Contributions", @@ -285,7 +285,7 @@ "detailTitle": "Who May Choose the Lesser Risk: Solar Geoengineering and the Legal Duties of Comparison and Continuity", "metadata": { "position": "Author (Letao Ouyang)", - "location": "Durham, NC", + "location": "Durham, North Carolina", "dates": "December 2024 (manuscript date)" }, "contributionsLabel": "Key Contributions", @@ -307,7 +307,7 @@ "detailTitle": "Mangrove Restoration and the Limits of Compensatory Mitigation: Lessons from Florida for the Greater Bay Area", "metadata": { "position": "Author (Letao Ouyang)", - "location": "Durham, NC", + "location": "Durham, North Carolina", "dates": "December 2024 (manuscript date)" }, "contributionsLabel": "Key Contributions", @@ -353,7 +353,7 @@ "detailTitle": "Bluetooth Satellite Commercialization and Market Selection", "metadata": { "position": "Student Consultant and Business Analytics Analyst, Duke Practicum", - "location": "Seattle, USA", + "location": "Seattle, Washington", "dates": "August 2023 – January 2024" }, "contributionsLabel": "Key Contributions", @@ -434,7 +434,7 @@ "detailTitle": "Advanced Physics Olympiad Instruction", "metadata": { "position": "IPhO-Level Physics Instructor and Original Problem Designer", - "location": "Durham, USA (Hybrid)", + "location": "Durham, North Carolina (Hybrid)", "dates": "August 2019 – January 2026" }, "contributionsLabel": "Key Contributions", @@ -471,6 +471,6 @@ "aiSourceDocument": { "fileName": "ai-research-and-engineering.md", "path": "content/sources/ai-portfolio/ai-research-and-engineering.md", - "sha256": "6b1b487c986316b97aee42299b11414bc2584baed104cd92bb57973252f989e0" + "sha256": "b5d6a1b86108c5b4f5d84f64bf50ff262c84cc11736946afa8ea925564323c13" } } diff --git a/website/content/protected-sources.json b/website/content/protected-sources.json index 8825c4c..b8e462b 100644 --- a/website/content/protected-sources.json +++ b/website/content/protected-sources.json @@ -3,22 +3,22 @@ "normalization": "LF", "sources": { "app/experience/page.tsx": "1dbf2ee75f4d859128a5ce92b6a0c7c6df94579962c37bc672544c4d7698c3a6", - "app/experience/[slug]/page.tsx": "b57c5422793ec804d64e3da7217762400bf682a8c71a9a7f850201b66c04d6c8", - "app/components/experience/ExperienceContent.tsx": "a064141ca8d89059ce074c70625309c716472ce788baa79395bb96ddc42d68fd", - "app/components/experience/ExperienceDetails.tsx": "4d6320c1adf2310a75dea9cb6b4fca037f166b0073da5b5627e4e4ef8a3a3385", - "app/lib/content/experience-showcase.ts": "2711d4c142e9a48c2cc2e7b0480a6827bba0c4d7898f3b9e3d42918b9b08a544", + "app/experience/[slug]/page.tsx": "e7cda2443dc3219e23cc1d6b7c84d4bb16c05afeb35ba3a2db6310a274b6cd3b", + "app/components/experience/ExperienceContent.tsx": "099cb2084406183451fbcd66d71e85ef77e2e25a4bfd14d2a3d216da3f0dc4a8", + "app/components/experience/ExperienceDetails.tsx": "24825db17064489761e27951efb762b3f3657d4f93edcace36791fd1e21dd312", + "app/lib/content/experience-showcase.ts": "3901cb7c492bca25af6a3e39c36aed43b1fa1582c6a36e62720196fcfe5a14eb", "app/lib/content/experience-domains.ts": "7362085d4857daa83ae476f176163378dde550572d5a1932d2f142d4d1a00c7d", - "content/experience-showcase.json": "b54c4501155773150c2c8a61e13f948a3aaed0a7bd9ec92933e90b2389e713d8", - "app/components/AboutContent.tsx": "0ac487ac0563dc5bbca8bcc272e02289c72d8bf37e53e2a1df30bd9849e7545b", + "content/experience-showcase.json": "845b3a1954c7a962678bf70c0168694e29519c2ccce8b2d220e34f5cd890c08b", + "app/components/AboutContent.tsx": "7421746c7cb0ccf09c6b6cc78447dbeb5c5fd7d96aa5833586e4cb4b3ba198e4", "app/lib/content/about.ts": "8d79e72133dcbcae9523771a099f53f0aecb879cea384769ff6bb0144e05626f", "app/coursework/page.tsx": "a1caf4bd363d652ce401c237e06336be26e15296a3ffa19890b3d1c53b6ab63c", - "app/components/research/ResearchArticle.tsx": "401433d1b0ab4de56d8f70a1bb4e4f0bc477a8ada5ffb1e410244c9268798222", + "app/components/research/ResearchArticle.tsx": "8e6c3826165f4d1e6463e9f6efc806457e0fab769c5b7168fd2b9b2bfda0adff", "app/components/research/ResearchInline.tsx": "ad5cae237a294ce103f6edd3aa71ba7beadc972f587861bd39a0d157ddfb4315", "app/components/research/ResearchMath.tsx": "a61ffe67375e2c50a7cac7167f39ff39ef7a115d6aa240c14f9240b9361e54cf", "app/lib/content/research-markdown.ts": "d2d03cfc6b7bc38d5a409d134f517c9ccdff3a3977b3af0495b437b96850e001", "app/lib/content/research-math.ts": "0343a075dba996cd6a96d3ab299eb6bf095b1b7a4c662f84b253cd243c4107ff", "app/lib/content/research-number.ts": "2d29d06ffde33580bd5e655b547b28c953d64b0d2b0fa7fe31663da68dd1276b", - "app/education/page.tsx": "125161867eef63add036cc5f310bc68472b4c068961ee12da7937c4092e81ac0", + "app/education/page.tsx": "238c32fe50d72629c1803e247f82595d23517f1cbe0713385040ff51d067ae0f", "app/education/certified-valuation-arithmetic-asian-options/page.tsx": "ac50f30d6ba9f95eaf75c44a88ae26334479217ac1a92634371b69ee86d789fa", "app/education/certified-rough-heston-valuation/page.tsx": "3891da8f094b8315eff066a95c4aec8a8bca527587f330e6a080e4c6086c1783", "app/education/critical-dependence-stress-for-portfolio-diversification/page.tsx": "b0dbb4c593e681c702908a707b8dc31ac1800472f749a8897bc3c7d2550f1f90", @@ -27,12 +27,12 @@ "content/selected-research/certified-rough-heston-valuation.json": "f7fc027dce9e755c600702a7e405782a863ec8ef90eda31962c39e8990d34004", "content/selected-research/critical-dependence-stress-for-portfolio-diversification.json": "66dae1b9bdbf757d46992632bb69c409e24079d157cbd155852c7e48e2ebe26a", "content/selected-research/site-edition/certified-valuation-arithmetic-asian-options.md": "3ac724e8c529c5aac902375147f117572b12dfa4457c9d1c4b619e9ef4edd050", - "content/selected-research/site-edition/certified-rough-heston-valuation.md": "14813e6e3b24e1ab5a06cff31406ffd37ddb1bf231a599264b879a9a557a00d3", + "content/selected-research/site-edition/certified-rough-heston-valuation.md": "7d4ba5c38eba0054bafc4548fc398861d2f5f68f30f5d09d2c744d06c71d5f78", "content/selected-research/site-edition/critical-dependence-stress-for-portfolio-diversification.md": "02b465d6013bd60273e5bbc1f3f74998f21698f4c01a2def92c1ffc5b6b7aace", - "app/now/page.tsx": "701f81ff14577a7860daff4fe83208ee6f5e30fd44fe499a11e97269ec888544", + "app/now/page.tsx": "83454b875be9eb1ff65e17194327ca344c855538b43934d3802eb04651321949", "app/past-experience/page.tsx": "92f0f9e0b5129e7644387a6a4ea6967a483c628b521a6dfe0baf9f9bfff521fc", "app/past-experience/[slug]/page.tsx": "8ee0cb7500cd04c48e5148b2667eb2efa65a3f0b35d9f7ee45b2383dfbedd16e", - "app/past-experience/components/ExperienceDomainPage.tsx": "7550ac4845ff290d9f249ff735f33a10502cb6dd132f2e383c00bc17a7ad4173", + "app/past-experience/components/ExperienceDomainPage.tsx": "77cb70f49bc437b557db66253619686b397e548275eccf060b269b2eff532500", "app/lib/content/legal-papers.ts": "8bd1bca63e7211f7c286df97192faf943144ff28be6d12cc5666f704933e9f4c", "app/lib/content/metadata-excerpt.ts": "567139663925462cc48584a53dabb91e50e3727acd68afe7ddf61fa2818f0e71", "app/past-experience/[slug]/[paper]/page.tsx": "0a54d7899422b36ca794920d635fc93e4771183105041d9504479e4333f444b0", @@ -43,11 +43,11 @@ "content/legal-papers/mangrove-restoration-and-compensatory-mitigation.json": "40a0b507877517f556ee6f5a3e7a1ca792ed0a45ea770c5e627fa140bc703c79", "app/lib/content/ai-projects.ts": "acf07dd865754e90b1b75c89bb65e6f93e26cd41f3f267c2a80a7dad185c9b5f", "app/lib/content/routes.ts": "610d99093fe37e69b6603570a8d55f0d058fc44571ba4aed8f2f6c4c6a306cea", - "content/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production.json": "764135c72e772456ad6331eae013b802dee866a78ba9f4e34e50f2ed80e46222", - "content/artificial-intelligence/task-validity-in-financial-synthetic-data.json": "08a70e70c673ddbcbc2eba0f28d53047a9efad16fde4386ab55d9c68e4a2a5e8", - "content/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks.json": "9545b61182c2970a83d7e863e7c435a3c3579bc550be5d205099f9964c9444d4", - "content/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research.json": "f74f107cd83feeef58e1b4a51c1085f1769d39c43625e2bbc52402647d906092", - "content/sources/ai-portfolio/ai-research-and-engineering.md": "6b1b487c986316b97aee42299b11414bc2584baed104cd92bb57973252f989e0", + "content/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production.json": "050a96a371c61f8fcc324d45d3ca03ad9fb2a9788549f1c101485463b7fe020b", + "content/artificial-intelligence/task-validity-in-financial-synthetic-data.json": "6e3a098369bc9b433ff429de06fa1c1ef79a9a5bdb414c8872162177462237d3", + "content/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks.json": "658fee7731c55452dcb58e9bffba2a0d35991349691732a7e3ca1e1a99898e7f", + "content/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research.json": "baece498b3af1c0304d86b1450735e1640df5eeeaa121b379c4804e141981b8d", + "content/sources/ai-portfolio/ai-research-and-engineering.md": "b5d6a1b86108c5b4f5d84f64bf50ff262c84cc11736946afa8ea925564323c13", "scripts/import-ai-portfolio.mjs": "9ce6e3ddc16e175f3e201ae2b840d3a0e9d622c5cdb167c98f0f36e70740021b" } } diff --git a/website/content/selected-research/site-edition/certified-rough-heston-valuation.md b/website/content/selected-research/site-edition/certified-rough-heston-valuation.md index a42a623..ca4b2e1 100644 --- a/website/content/selected-research/site-edition/certified-rough-heston-valuation.md +++ b/website/content/selected-research/site-edition/certified-rough-heston-valuation.md @@ -576,7 +576,7 @@ We froze the six-month configuration at \(\alpha=13/25\), \(\nu=2897/10000\), \( For N2L, the dimensionless damping is \(\lambda T^\alpha\approx0.075205\) (about 0.075205153821), so dissipation is weak over this horizon, consistent with the kernel gain of about 0.485% of the complete frozen-fast bound reported below. The complete budget also contains the fixed centre, finite omitted nodes and other remainders. -Table 9 reports upper endpoints in index points, rounded upward to nine decimals. “Global state” first bounds the state by its global residual and then applies the exponent functional; “global curve” propagates that same residual maximum directly through the curve. The final two rows use the identical 128 binwise envelopes and differ only in the pricing kernel. +Table 9 reports upper endpoints in index points, rounded upward to nine decimals. "Global state" first bounds the state by its global residual and then applies the exponent functional; "global curve" propagates that same residual maximum directly through the curve. The final two rows use the identical 128 binwise envelopes and differ only in the pricing kernel. **Table 9. N2L matched propagation for the half-year unit 4400–4500 spread, in index points; the residual bank and all other inputs are fixed.** diff --git a/website/content/sources/ai-portfolio/ai-research-and-engineering.md b/website/content/sources/ai-portfolio/ai-research-and-engineering.md index 3ce0193..b9849da 100644 --- a/website/content/sources/ai-portfolio/ai-research-and-engineering.md +++ b/website/content/sources/ai-portfolio/ai-research-and-engineering.md @@ -19,7 +19,7 @@ Statistical inference and resource allocation in expert data production Duke University × Leading Foundation Model Developer **Title** -Large-scale domain expert feedback governance and adaptive review +Large-Scale Domain Expert Feedback Governance and Adaptive Review **URL** https://www.theodoreoy.com/past-experience/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production/ @@ -31,7 +31,7 @@ Researcher Durham, North Carolina; Palo Alto, California **Dates** -September 2023 to September 2026 +September 2023 – September 2026 **Read More Label** Read More @@ -248,7 +248,7 @@ Task validity in financial synthetic data Duke University × Leading Foundation Model Developer **Title** -Financial task design and synthetic data engineering +Financial Task Design and Synthetic Data Engineering **URL** https://www.theodoreoy.com/past-experience/artificial-intelligence/task-validity-in-financial-synthetic-data/ @@ -260,7 +260,7 @@ Researcher Durham, North Carolina; Palo Alto, California **Dates** -September 2023 to September 2026 +September 2023 – September 2026 **Read More Label** Read More @@ -439,7 +439,7 @@ Verification and supervision in reasoning tasks Duke University × Frontier AI Research Laboratory **Title** -General reasoning evaluation and layered verification +General Reasoning Evaluation and Layered Verification **URL** https://www.theodoreoy.com/past-experience/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks/ @@ -451,7 +451,7 @@ Researcher Durham, North Carolina; Palo Alto, California **Dates** -September 2023 to September 2026 +September 2023 – September 2026 **Read More Label** Read More @@ -633,7 +633,7 @@ Evidence uncertainty and decision guarantees in investment research Duke University × Leading Global Alternative Asset Manager **Title** -Evidence verification and robust comparison in investment research +Evidence Verification and Robust Comparison in Investment Research **URL** https://www.theodoreoy.com/past-experience/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research/ @@ -645,7 +645,7 @@ Researcher Durham, North Carolina; Washington, DC **Dates** -September 2023 to September 2026 +September 2023 – September 2026 **Read More Label** Read More diff --git a/website/content/visible-copy-manifest.json b/website/content/visible-copy-manifest.json index e1f0d53..04c16d2 100644 --- a/website/content/visible-copy-manifest.json +++ b/website/content/visible-copy-manifest.json @@ -6,10 +6,10 @@ ], "routes": { "/": { - "textSha256": "e08815af6c6ebecd2a12d34424b2d562278ed669c35399af04bd37cc07a620b1", + "textSha256": "bcc49a28c3129f8aa835e513e2d1f5072e80013391cb805dda304c8ecd87a264", "characterCount": 2914, "wordCount": 406, - "preview": "Skip to main content Theodore Ouyang Duke Alumnus Sequoia Fellow Theodore Ouyang About Experience Thinking mathematically Working in AI Mathematics is how I mak", + "preview": "Skip to main content Theodore Ouyang Duke Alumnus Sequoia Fellow Theodore Ouyang About Experience Thinking Mathematically Working in AI Mathematics is how I mak", "altTexts": [], "ariaLabels": [ "Theodore Ouyang home", @@ -32,10 +32,10 @@ } }, "/education/": { - "textSha256": "878b6d85b205045c2802c598093f8d078cf35c0667eb9f1568886838c979732a", + "textSha256": "4cd97e551876c845c6884464198f9657bd668de36e87d699d429dcd0eb0adb08", "characterCount": 2870, "wordCount": 400, - "preview": "Skip to main content Theodore Ouyang About Experience Thinking mathematically Working in AI Mathematics is how I make sense of things. I want to know which assu", + "preview": "Skip to main content Theodore Ouyang About Experience Thinking Mathematically Working in AI Mathematics is how I make sense of things. I want to know which assu", "altTexts": [], "ariaLabels": [ "Theodore Ouyang home", @@ -258,7 +258,7 @@ "formulaCount": 353 }, "/education/certified-rough-heston-valuation/": { - "textSha256": "68f031330b02940410027d0d9ca9c90b771b017d5c97c097d1ae82309ec77d17", + "textSha256": "486c72be9d83e3b35f2bb2f0c4c72e654ca135804d98a905002fa9c075611110", "characterCount": 59198, "wordCount": 8470, "preview": "Skip to main content Theodore Ouyang Back to Selected Research Certified Joint Pricing Errors in Rough Heston GitHub Full Manuscript Abstract We give determinis", @@ -775,7 +775,7 @@ "formulaCount": 973 }, "/experience/": { - "textSha256": "4674ae73ddb7b22bb5a00935889e34e0e14630541241bdf5239c059c37cb13c0", + "textSha256": "f4a5257c2d304e45a490be25a43eb3474435d89a9691f5dc9b3932b9633106a3", "characterCount": 8870, "wordCount": 1156, "preview": "Skip to main content Theodore Ouyang About Experience Experience: Areas of Focus AI Research and Engineering Data Science Legal Research and Policy Analysis Fin", @@ -784,10 +784,10 @@ "Theodore Ouyang home", "Primary navigation", "Experience sections", - "Read more about Duke University × Leading Foundation Model Developer: Large-scale domain expert feedback governance and adaptive review", - "Read more about Duke University × Leading Foundation Model Developer: Financial task design and synthetic data engineering", - "Read more about Duke University × Frontier AI Research Laboratory: General reasoning evaluation and layered verification", - "Read more about Duke University × Leading Global Alternative Asset Manager: Evidence verification and robust comparison in investment research", + "Read more about Duke University × Leading Foundation Model Developer: Large-Scale Domain Expert Feedback Governance and Adaptive Review", + "Read more about Duke University × Leading Foundation Model Developer: Financial Task Design and Synthetic Data Engineering", + "Read more about Duke University × Frontier AI Research Laboratory: General Reasoning Evaluation and Layered Verification", + "Read more about Duke University × Leading Global Alternative Asset Manager: Evidence Verification and Robust Comparison in Investment Research", "Read more about Jiritsu Network: Asset-Verification Partnerships and Issuer Ranking", "Read more about Euromonitor International: China Market Entry for a Premium European Appliance Brand", "Read more about China Construction Bank: PCA-Based Sustainability Analysis and Green-Credit Screening", @@ -815,9 +815,9 @@ } }, "/experience/jiritsu-network/": { - "textSha256": "9a61b4c50d3c7f101e02fb919eb41c27a7b1ac21122e25dae30e3cc0b031387c", - "characterCount": 3280, - "wordCount": 410, + "textSha256": "c91c15900d0d80cec408f54aec40ed2b2bd611788c14b1fd4c5660da24f14057", + "characterCount": 3275, + "wordCount": 409, "preview": "Skip to main content Theodore Ouyang Back to Experience Asset-Verification Partnerships and Issuer Ranking Organization Jiritsu Network Position Business Develo", "altTexts": [], "ariaLabels": [ @@ -857,8 +857,8 @@ } }, "/experience/china-construction-bank/": { - "textSha256": "fe8298dab4ab21ae4af2a51264bfb2f14950d36d69c0cdcc71c3e972a6f4a716", - "characterCount": 1613, + "textSha256": "4c46e79aabeaf4d2e0a09dd9d25e5af81cf154434147a9885e7a42e04f8aa415", + "characterCount": 1615, "wordCount": 209, "preview": "Skip to main content Theodore Ouyang Back to Experience PCA-Based Sustainability Analysis and Green-Credit Screening Organization China Construction Bank Positi", "altTexts": [], @@ -899,8 +899,8 @@ } }, "/experience/hubble-technology-investment/": { - "textSha256": "585a5c12ddf3d3671053374627606e4fcb2d63b5034882a094af97694254917e", - "characterCount": 1764, + "textSha256": "6061f8bc9eb4fcfa19731e3cd0284533a672fbe9d032fc3d364662256c747609", + "characterCount": 1771, "wordCount": 222, "preview": "Skip to main content Theodore Ouyang Back to Experience Bluetooth Satellite Commercialization and Market Selection Organization Hubble Network Position Student ", "altTexts": [], @@ -983,9 +983,9 @@ } }, "/experience/independent-stem-olympiad-training/": { - "textSha256": "82af87ed35aa883828a22dcb5ab6750811e46e413fdd12fc16df715f111c14b5", - "characterCount": 749, - "wordCount": 94, + "textSha256": "0f8a0dce301f8983e9b8d7f074b62938a120af1aeb47e1f55569e3391bf79394", + "characterCount": 760, + "wordCount": 95, "preview": "Skip to main content Theodore Ouyang Back to Experience Advanced Physics Olympiad Instruction Organization Independent STEM Olympiad Training Practice Position ", "altTexts": [], "ariaLabels": [ @@ -1025,7 +1025,7 @@ } }, "/past-experience/": { - "textSha256": "4674ae73ddb7b22bb5a00935889e34e0e14630541241bdf5239c059c37cb13c0", + "textSha256": "f4a5257c2d304e45a490be25a43eb3474435d89a9691f5dc9b3932b9633106a3", "characterCount": 8870, "wordCount": 1156, "preview": "Skip to main content Theodore Ouyang About Experience Experience: Areas of Focus AI Research and Engineering Data Science Legal Research and Policy Analysis Fin", @@ -1034,10 +1034,10 @@ "Theodore Ouyang home", "Primary navigation", "Experience sections", - "Read more about Duke University × Leading Foundation Model Developer: Large-scale domain expert feedback governance and adaptive review", - "Read more about Duke University × Leading Foundation Model Developer: Financial task design and synthetic data engineering", - "Read more about Duke University × Frontier AI Research Laboratory: General reasoning evaluation and layered verification", - "Read more about Duke University × Leading Global Alternative Asset Manager: Evidence verification and robust comparison in investment research", + "Read more about Duke University × Leading Foundation Model Developer: Large-Scale Domain Expert Feedback Governance and Adaptive Review", + "Read more about Duke University × Leading Foundation Model Developer: Financial Task Design and Synthetic Data Engineering", + "Read more about Duke University × Frontier AI Research Laboratory: General Reasoning Evaluation and Layered Verification", + "Read more about Duke University × Leading Global Alternative Asset Manager: Evidence Verification and Robust Comparison in Investment Research", "Read more about Jiritsu Network: Asset-Verification Partnerships and Issuer Ranking", "Read more about Euromonitor International: China Market Entry for a Premium European Appliance Brand", "Read more about China Construction Bank: PCA-Based Sustainability Analysis and Green-Credit Screening", @@ -1065,7 +1065,7 @@ } }, "/past-experience/artificial-intelligence/": { - "textSha256": "0eee330e465ec7fa8e9a490d759ed9b0df7d96de12a833889c486280b284f37c", + "textSha256": "d783c39fdd9fe074e25d00425935cbe3505dd3e0a448e214b1e194708b073c79", "characterCount": 2945, "wordCount": 393, "preview": "Skip to main content Theodore Ouyang Back to Experience AI Research and Engineering Confidentiality & Disclosure Note I conducted the following four projects th", @@ -1073,10 +1073,10 @@ "ariaLabels": [ "Theodore Ouyang home", "Parent navigation", - "Read more about Duke University × Leading Foundation Model Developer: Large-scale domain expert feedback governance and adaptive review", - "Read more about Duke University × Leading Foundation Model Developer: Financial task design and synthetic data engineering", - "Read more about Duke University × Frontier AI Research Laboratory: General reasoning evaluation and layered verification", - "Read more about Duke University × Leading Global Alternative Asset Manager: Evidence verification and robust comparison in investment research" + "Read more about Duke University × Leading Foundation Model Developer: Large-Scale Domain Expert Feedback Governance and Adaptive Review", + "Read more about Duke University × Leading Foundation Model Developer: Financial Task Design and Synthetic Data Engineering", + "Read more about Duke University × Frontier AI Research Laboratory: General Reasoning Evaluation and Layered Verification", + "Read more about Duke University × Leading Global Alternative Asset Manager: Evidence Verification and Robust Comparison in Investment Research" ], "metadata": { "title": "AI Research and Engineering | Experience | Theodore Ouyang", @@ -1090,10 +1090,10 @@ } }, "/past-experience/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production/": { - "textSha256": "688f0c76305cb0d307896c92cfa87a15c1348478d8b9d4ea13bbb9847f405b9e", - "characterCount": 23116, + "textSha256": "801bf08f47066decbf73394032427dcb6c403e0f56336085e01277eef9edca32", + "characterCount": 23115, "wordCount": 3271, - "preview": "Skip to main content Theodore Ouyang Back to Experience Large-scale domain expert feedback governance and adaptive review Organization Duke University × Leading", + "preview": "Skip to main content Theodore Ouyang Back to Experience Large-Scale Domain Expert Feedback Governance and Adaptive Review Organization Duke University × Leading", "altTexts": [], "ariaLabels": [ "Theodore Ouyang home", @@ -1140,23 +1140,23 @@ "Scrollable mathematical expression" ], "metadata": { - "title": "Duke University × Leading Foundation Model Developer: Large-scale domain expert feedback governance and adaptive review | Theodore Ouyang", + "title": "Duke University × Leading Foundation Model Developer: Large-Scale Domain Expert Feedback Governance and Adaptive Review | Theodore Ouyang", "description": "With a leading foundation model developer, I led the statistical system behind expert feedback for LLM post-training, one of the first engineering implementations of prediction-assisted statistical inference and capacity-constrained review allocation in...", "canonical": "https://www.theodoreoy.com/past-experience/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production/", - "openGraphTitle": "Duke University × Leading Foundation Model Developer: Large-scale domain expert feedback governance and adaptive review", + "openGraphTitle": "Duke University × Leading Foundation Model Developer: Large-Scale Domain Expert Feedback Governance and Adaptive Review", "openGraphDescription": "With a leading foundation model developer, I led the statistical system behind expert feedback for LLM post-training, one of the first engineering implementations of prediction-assisted statistical inference and capacity-constrained review allocation in...", "openGraphUrl": "https://www.theodoreoy.com/past-experience/artificial-intelligence/statistical-inference-and-resource-allocation-in-expert-data-production/", - "twitterTitle": "Duke University × Leading Foundation Model Developer: Large-scale domain expert feedback governance and adaptive review", + "twitterTitle": "Duke University × Leading Foundation Model Developer: Large-Scale Domain Expert Feedback Governance and Adaptive Review", "twitterDescription": "With a leading foundation model developer, I led the statistical system behind expert feedback for LLM post-training, one of the first engineering implementations of prediction-assisted statistical inference and capacity-constrained review allocation in..." }, "mathSourceSha256": "f3d7ba2b0e0de31349488cd12eaa1b589fd3008d4ed1bde80cef7b7d750ba867", "formulaCount": 152 }, "/past-experience/artificial-intelligence/task-validity-in-financial-synthetic-data/": { - "textSha256": "84f1d294d4967f73a8211dffccf6fb239b0f62ebcd91b710f307afbcda0e90c9", - "characterCount": 22773, + "textSha256": "d3acbfccee7802d39816c96511309a6031e89c3bf785c33081917b56f2d7a9e8", + "characterCount": 22772, "wordCount": 3108, - "preview": "Skip to main content Theodore Ouyang Back to Experience Financial task design and synthetic data engineering Organization Duke University × Leading Foundation M", + "preview": "Skip to main content Theodore Ouyang Back to Experience Financial Task Design and Synthetic Data Engineering Organization Duke University × Leading Foundation M", "altTexts": [], "ariaLabels": [ "Theodore Ouyang home", @@ -1191,23 +1191,23 @@ "Mathematical equation" ], "metadata": { - "title": "Duke University × Leading Foundation Model Developer: Financial task design and synthetic data engineering | Theodore Ouyang", + "title": "Duke University × Leading Foundation Model Developer: Financial Task Design and Synthetic Data Engineering | Theodore Ouyang", "description": "I designed the data strategy for financial post-training in a frontier foundation model program, one of the first engineering implementations of constraint-preserving synthetic data and structured expert preference supervision for financial LLM post-training.", "canonical": "https://www.theodoreoy.com/past-experience/artificial-intelligence/task-validity-in-financial-synthetic-data/", - "openGraphTitle": "Duke University × Leading Foundation Model Developer: Financial task design and synthetic data engineering", + "openGraphTitle": "Duke University × Leading Foundation Model Developer: Financial Task Design and Synthetic Data Engineering", "openGraphDescription": "I designed the data strategy for financial post-training in a frontier foundation model program, one of the first engineering implementations of constraint-preserving synthetic data and structured expert preference supervision for financial LLM post-training.", "openGraphUrl": "https://www.theodoreoy.com/past-experience/artificial-intelligence/task-validity-in-financial-synthetic-data/", - "twitterTitle": "Duke University × Leading Foundation Model Developer: Financial task design and synthetic data engineering", + "twitterTitle": "Duke University × Leading Foundation Model Developer: Financial Task Design and Synthetic Data Engineering", "twitterDescription": "I designed the data strategy for financial post-training in a frontier foundation model program, one of the first engineering implementations of constraint-preserving synthetic data and structured expert preference supervision for financial LLM post-training." }, "mathSourceSha256": "e3b1e4f3fece5f26fd7889d0e2fb2cc54cb9d65a6241f589f99a908078fd6bc9", "formulaCount": 109 }, "/past-experience/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks/": { - "textSha256": "6242c1966a90ebd923b14158214a4976d1f8bc35a12c4fa7e7c5bb510f51b5e0", - "characterCount": 22967, + "textSha256": "df15856578e67a03963754bd84ae54fa6b6c96a8ae37157d48d25d2bf905237d", + "characterCount": 22966, "wordCount": 3274, - "preview": "Skip to main content Theodore Ouyang Back to Experience General reasoning evaluation and layered verification Organization Duke University × Frontier AI Researc", + "preview": "Skip to main content Theodore Ouyang Back to Experience General Reasoning Evaluation and Layered Verification Organization Duke University × Frontier AI Researc", "altTexts": [], "ariaLabels": [ "Theodore Ouyang home", @@ -1252,23 +1252,23 @@ "Mathematical equation" ], "metadata": { - "title": "Duke University × Frontier AI Research Laboratory: General reasoning evaluation and layered verification | Theodore Ouyang", + "title": "Duke University × Frontier AI Research Laboratory: General Reasoning Evaluation and Layered Verification | Theodore Ouyang", "description": "I developed a framework for evaluating and supervising general reasoning with a frontier AI research laboratory, among the first engineering implementations of joint verification across final answers, visible reasoning and execution evidence in frontier...", "canonical": "https://www.theodoreoy.com/past-experience/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks/", - "openGraphTitle": "Duke University × Frontier AI Research Laboratory: General reasoning evaluation and layered verification", + "openGraphTitle": "Duke University × Frontier AI Research Laboratory: General Reasoning Evaluation and Layered Verification", "openGraphDescription": "I developed a framework for evaluating and supervising general reasoning with a frontier AI research laboratory, among the first engineering implementations of joint verification across final answers, visible reasoning and execution evidence in frontier...", "openGraphUrl": "https://www.theodoreoy.com/past-experience/artificial-intelligence/verification-and-supervision-in-scientific-reasoning-tasks/", - "twitterTitle": "Duke University × Frontier AI Research Laboratory: General reasoning evaluation and layered verification", + "twitterTitle": "Duke University × Frontier AI Research Laboratory: General Reasoning Evaluation and Layered Verification", "twitterDescription": "I developed a framework for evaluating and supervising general reasoning with a frontier AI research laboratory, among the first engineering implementations of joint verification across final answers, visible reasoning and execution evidence in frontier..." }, "mathSourceSha256": "e491a1dd5d5faafa14cf68d9c47f2f42e074c7018698bd6633759998327829e1", "formulaCount": 127 }, "/past-experience/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research/": { - "textSha256": "8adbb870af316766c668fcf327036453101d03f7d9ce5e2501e899365a1310c4", - "characterCount": 17212, + "textSha256": "a6142d83cde59e38385cf6941414ce16a0823b9d9f37331085deeb2bd2997807", + "characterCount": 17211, "wordCount": 2516, - "preview": "Skip to main content Theodore Ouyang Back to Experience Evidence verification and robust comparison in investment research Organization Duke University × Leadin", + "preview": "Skip to main content Theodore Ouyang Back to Experience Evidence Verification and Robust Comparison in Investment Research Organization Duke University × Leadin", "altTexts": [], "ariaLabels": [ "Theodore Ouyang home", @@ -1314,13 +1314,13 @@ "Research data table" ], "metadata": { - "title": "Duke University × Leading Global Alternative Asset Manager: Evidence verification and robust comparison in investment research | Theodore Ouyang", + "title": "Duke University × Leading Global Alternative Asset Manager: Evidence Verification and Robust Comparison in Investment Research | Theodore Ouyang", "description": "I developed and implemented a framework for evidence verification and decision assurance with a leading global alternative asset manager, one of the first engineering implementations in institutional investment research to treat model multiplicity,...", "canonical": "https://www.theodoreoy.com/past-experience/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research/", - "openGraphTitle": "Duke University × Leading Global Alternative Asset Manager: Evidence verification and robust comparison in investment research", + "openGraphTitle": "Duke University × Leading Global Alternative Asset Manager: Evidence Verification and Robust Comparison in Investment Research", "openGraphDescription": "I developed and implemented a framework for evidence verification and decision assurance with a leading global alternative asset manager, one of the first engineering implementations in institutional investment research to treat model multiplicity,...", "openGraphUrl": "https://www.theodoreoy.com/past-experience/artificial-intelligence/evidence-uncertainty-and-decision-guarantees-in-investment-research/", - "twitterTitle": "Duke University × Leading Global Alternative Asset Manager: Evidence verification and robust comparison in investment research", + "twitterTitle": "Duke University × Leading Global Alternative Asset Manager: Evidence Verification and Robust Comparison in Investment Research", "twitterDescription": "I developed and implemented a framework for evidence verification and decision assurance with a leading global alternative asset manager, one of the first engineering implementations in institutional investment research to treat model multiplicity,..." }, "mathSourceSha256": "aac71524ae3c1dd0942d8f8e917c85cc3d245e9e670070edc9e6574d6b73b7fa", @@ -1425,9 +1425,9 @@ } }, "/past-experience/legal-research-and-policy-analysis/autonomous-authority-in-space/": { - "textSha256": "f7c1100643fcd1ebec082cee98ccaab1a86ef53fd1c7f40494aa7c8d7ed9bb21", - "characterCount": 67417, - "wordCount": 9418, + "textSha256": "86ae2bdf918779cd7be183e1e1d42f9632e2ad84aac69e4f375f2bf2c287ce5c", + "characterCount": 67429, + "wordCount": 9419, "preview": "Skip to main content Theodore Ouyang Back to Experience Autonomous Authority in Space: Risk Tradeoffs and the Law of Delegation Organization Duke Law School Pos", "altTexts": [], "ariaLabels": [ @@ -1509,9 +1509,9 @@ } }, "/past-experience/legal-research-and-policy-analysis/small-states-and-strategic-space-dependence/": { - "textSha256": "64fd1ef569431686cac353c7034580ce1b827de86ac282bb634cc5d2a897bbed", - "characterCount": 52442, - "wordCount": 7165, + "textSha256": "f791110ef146ed413c35b602c3660a7e47be5ac77e7429e0d9a6d10823c9e9a1", + "characterCount": 52454, + "wordCount": 7166, "preview": "Skip to main content Theodore Ouyang Back to Experience Small States and the Governance of Strategic Space Dependence Organization Duke Law School Position Auth", "altTexts": [], "ariaLabels": [ @@ -1597,9 +1597,9 @@ } }, "/past-experience/legal-research-and-policy-analysis/solar-geoengineering-comparison-and-continuity/": { - "textSha256": "0971213c3ab29da1b544567b6b97ddc304939e5fbd7cb52b7f79957fb11e9431", - "characterCount": 49903, - "wordCount": 6921, + "textSha256": "ee11abd8387f29fcb91d7ac1560204eb0e241a05b039456d576f6f72d5387a06", + "characterCount": 49915, + "wordCount": 6922, "preview": "Skip to main content Theodore Ouyang Back to Experience Who May Choose the Lesser Risk: Solar Geoengineering and the Legal Duties of Comparison and Continuity O", "altTexts": [], "ariaLabels": [ @@ -1681,9 +1681,9 @@ } }, "/past-experience/legal-research-and-policy-analysis/mangrove-restoration-and-compensatory-mitigation/": { - "textSha256": "ecc0a0b6fea2791f4eeb7aef5632f935ed7a2520203767ffcc8d8a79427d5579", - "characterCount": 64481, - "wordCount": 8972, + "textSha256": "7b1d21b296907926e481c88a1213db05a5ded2be9f31eda074bfbc949be76e0c", + "characterCount": 64493, + "wordCount": 8973, "preview": "Skip to main content Theodore Ouyang Back to Experience Mangrove Restoration and the Limits of Compensatory Mitigation: Lessons from Florida for the Greater Bay", "altTexts": [], "ariaLabels": [ @@ -1787,7 +1787,7 @@ } }, "/now/": { - "textSha256": "4674ae73ddb7b22bb5a00935889e34e0e14630541241bdf5239c059c37cb13c0", + "textSha256": "f4a5257c2d304e45a490be25a43eb3474435d89a9691f5dc9b3932b9633106a3", "characterCount": 8870, "wordCount": 1156, "preview": "Skip to main content Theodore Ouyang About Experience Experience: Areas of Focus AI Research and Engineering Data Science Legal Research and Policy Analysis Fin", @@ -1796,10 +1796,10 @@ "Theodore Ouyang home", "Primary navigation", "Experience sections", - "Read more about Duke University × Leading Foundation Model Developer: Large-scale domain expert feedback governance and adaptive review", - "Read more about Duke University × Leading Foundation Model Developer: Financial task design and synthetic data engineering", - "Read more about Duke University × Frontier AI Research Laboratory: General reasoning evaluation and layered verification", - "Read more about Duke University × Leading Global Alternative Asset Manager: Evidence verification and robust comparison in investment research", + "Read more about Duke University × Leading Foundation Model Developer: Large-Scale Domain Expert Feedback Governance and Adaptive Review", + "Read more about Duke University × Leading Foundation Model Developer: Financial Task Design and Synthetic Data Engineering", + "Read more about Duke University × Frontier AI Research Laboratory: General Reasoning Evaluation and Layered Verification", + "Read more about Duke University × Leading Global Alternative Asset Manager: Evidence Verification and Robust Comparison in Investment Research", "Read more about Jiritsu Network: Asset-Verification Partnerships and Issuer Ranking", "Read more about Euromonitor International: China Market Entry for a Premium European Appliance Brand", "Read more about China Construction Bank: PCA-Based Sustainability Analysis and Green-Credit Screening", diff --git a/website/tests/ai-research-content.test.mjs b/website/tests/ai-research-content.test.mjs index da54e45..3c70e7e 100644 --- a/website/tests/ai-research-content.test.mjs +++ b/website/tests/ai-research-content.test.mjs @@ -9,7 +9,7 @@ const ROOT = fileURLToPath(new URL("../", import.meta.url)); const AI_ROUTE = "/past-experience/artificial-intelligence/"; const SOURCE_FILE = "content/sources/ai-portfolio/ai-research-and-engineering.md"; const CANONICAL_DOCUMENT = path.join(ROOT, SOURCE_FILE); -const SOURCE_SHA256 = "6b1b487c986316b97aee42299b11414bc2584baed104cd92bb57973252f989e0"; +const SOURCE_SHA256 = "b5d6a1b86108c5b4f5d84f64bf50ff262c84cc11736946afa8ea925564323c13"; // Structure and benchmark-table shapes are checked independently of the renderer. const PROJECTS = [ { diff --git a/website/tests/article-reader.test.mjs b/website/tests/article-reader.test.mjs index 41c0db3..1865b06 100644 --- a/website/tests/article-reader.test.mjs +++ b/website/tests/article-reader.test.mjs @@ -74,7 +74,7 @@ function exportedPages() { assert.equal(routes.length, 24, "About, Coursework, Experience, eleven full articles and ten experience detail pages remain canonical."); routes.push("/education/", "/architecture/", "/past-experience/", "/now/", ...["artificial-intelligence", "data-science", "legal-research-and-policy-analysis", "finance", "stem-academic-competitions-and-training"].map((slug) => `/past-experience/${slug}/`)); - assert.equal(new Set(routes).size, 33, "Audit all canonical pages and every retained compatibility route."); + assert.equal(new Set(routes).size, 33, "Audit all canonical pages and every alias route."); const entries = await Promise.all(routes.map(async (route) => { const html = await readFile(new URL(`../out/${route.replace(/^\//u, "")}index.html`, import.meta.url), "utf8"); const tree = readTree(html); diff --git a/website/tests/rendered-html.test.mjs b/website/tests/rendered-html.test.mjs index 6039a49..c1c1e8e 100644 --- a/website/tests/rendered-html.test.mjs +++ b/website/tests/rendered-html.test.mjs @@ -371,7 +371,7 @@ async function exportedRoutes() { .sort(); } -test("the static export retains the unified Experience page, legacy routes, and the architecture viewer", async () => { +test("the static export contains the unified Experience page, alias routes, and the architecture viewer", async () => { assert.deepEqual(await exportedRoutes(), [...ROUTES, "/architecture/"].sort()); assert.ok(existsSync(path.join(OUT, "404.html"))); }); @@ -520,7 +520,7 @@ test("About opens with its accessible clarinet hero before the retained profile" assert.equal((attribute(ringDots, "d").match(/Z/gu) ?? []).length, 14, "Six ring keys and one bell rim each retain an inner and outer contour."); const profileHeading = home.match(/]*id="home-heading"[^>]*>([\s\S]*?)<\/h2>/u); - assert.equal(stripMarkup(profileHeading?.[1] ?? ""), "Thinking mathematically Working in AI"); + assert.equal(stripMarkup(profileHeading?.[1] ?? ""), "Thinking Mathematically Working in AI"); assert.match(home, /About \| Theodore Ouyang<\/title>/u); assert.match(home, /id="home-profile"/u); for (const index of ["01", "02", "03", "04"]) { @@ -542,7 +542,7 @@ test("About opens with its accessible clarinet hero before the retained profile" for (const route of ROUTES.slice(1)) assert.equal(openingTags(await routeHtml(route), "canvas").length, 0); }); -test("the education compatibility page shares About content and marks About as current", async () => { +test("the education alias page shares About content and marks About as current", async () => { const home = await routeHtml("/"); const alias = await routeHtml("/education/"); const mainText = (html) => stripMarkup(html.match(/<main\b[^>]*>([\s\S]*?)<\/main>/u)?.[1] ?? ""); @@ -557,7 +557,7 @@ test("the education compatibility page shares About content and marks About as c } }); -test("Experience compatibility pages share the unified text-focused page", async () => { +test("Experience alias pages share the unified text-focused page", async () => { for (const route of ["/education/", "/experience/", "/past-experience/", "/now/"]) { const html = await routeHtml(route); assert.equal(openingTags(html, "img").length, 0, `${route} must use text-focused content`); @@ -652,15 +652,6 @@ test("Experience presents five numbered sections and all eighteen approved entri assert.equal(stripMarkup(disclosure[2].match(/<h3\b[^>]*>([\s\S]*?)<\/h3>/iu)?.[1] ?? ""), approvedDisclosure.title); assertApprovedInline(disclosure[2].match(/<p\b[^>]*>([\s\S]*?)<\/p>/iu)?.[1] ?? "", approvedDisclosure.text); assert.doesNotMatch(stripMarkup(main), /\p{Script=Han}/u, "The public Experience copy must be English only"); - assert.doesNotMatch(stripMarkup(main), /Experience through September 2026|Past Experience|Current Chapter|Experience Website Copy|Latest version English and Chinese|English layout specification|Full articles are omitted here/u); - const oldIntroductions = [ - "Developed AI research and production methods that domain experts could apply consistently across teams.", - "Applied statistical learning, data engineering, and market analysis to counterparty screening, market entry, and green-credit assessment.", - "Authored four research papers examining how legal institutions allocate authority and responsibility under technological and environmental uncertainty.", - "Applied market research, valuation analysis, and risk screening to real estate acquisition advice, technology commercialization, dental-sector research, and equity research.", - "Combined advanced physics and mathematics Olympiad training with peer mentoring and independent instruction.", - ]; - for (const introduction of oldIntroductions) assert.ok(!stripMarkup(main).includes(introduction), "General category introductions must not return"); }); test("all eighteen approved Experience entries use institution titles and real links to complete detail pages", async () => { @@ -751,7 +742,7 @@ test("each AI and legal article opens with one logic architecture diagram", asyn } }); -test("legacy domain routes preserve approved sections, canonicalize to Experience, and return to valid anchors", async () => { +test("domain alias routes preserve approved sections, canonicalize to Experience, and return to valid anchors", async () => { const main = await routeHtml("/experience/"); const mainEntries = experienceEntries(main); for (const [name, slug, ids] of DOMAINS) { @@ -1031,18 +1022,22 @@ test("the production design contract is restrained and dependency-light", async assert.match(experience, /\.section\s*\{[^}]*grid-template-columns:\s*repeat\(11,[^}]*grid-column:\s*1 \/ span 11/u, "Sections end on the reading-end guide"); assert.match(experience, /\.sectionBody\s*\{[^}]*grid-column:\s*2\s*\/\s*span\s*10/u); assert.match(globals, /--hang-columns:\s*minmax\(0,\s*4fr\)\s+minmax\(0,\s*6fr\)/u, "Hanging rows put titles on 4 of 10 columns and prose on 6"); - for (const css of [experience, home]) assert.match(css, /@media \(min-width: 1200px\)[\s\S]*?grid-template-columns:\s*var\(--hang-columns\)/u); + for (const css of [experience, globals]) assert.match(css, /@media \(min-width: 1200px\)[\s\S]*?grid-template-columns:\s*var\(--hang-columns\)/u); assert.match(structuralGrid, /data-guides=\{layout\}/u); assert.match(globals, /\.structural-grid\[data-guides="index"\] \.structural-guide-reading-measure\s*\{\s*grid-column:\s*9/u, "Index pages mark the prose axis"); // Each group of content sits in one faint, unfilled frame with a continuous dashed // spine; divisions inside a frame are dashed hairlines. assert.match(globals, /--frame:\s*rgba\(0, 0, 0, 0\.08\)/u); assert.match(globals, /--dash-y:\s*repeating-linear-gradient\(to bottom/u); - for (const [css, group] of [[experience, "entries"], [home, "rows"]]) { - assert.match(css, new RegExp(`(?:^|\\n)\\.${group}\\s*\\{[^}]*border:\\s*1px solid var\\(--frame\\)`, "u"), `.${group} is the section's single frame`); - assert.match(css, new RegExp(`\\.${group}::before\\s*\\{[^}]*background:\\s*var\\(--dash-y\\)`, "u"), `.${group} draws one continuous spine`); + assert.match(globals, /(?:^|\n)\.ledger\s*\{[^}]*border:\s*1px solid var\(--frame\)/u, "A ledger is a section's single frame"); + assert.match(globals, /\.ledger::before\s*\{[^}]*background:\s*var\(--dash-y\)/u, "A ledger draws one continuous spine"); + for (const component of ["AboutContent.tsx", path.join("experience", "ExperienceContent.tsx")]) { + const source = await readFile(path.join(ROOT, "app", "components", component), "utf8"); + for (const part of ["ledger", "ledger-item", "ledger-title", "ledger-body", "ledger-prose", "read-more"]) { + assert.ok(source.includes(`className="${part}"`), `${component} renders its lists with .${part}`); + } } - for (const css of [experience, home, directory]) assert.doesNotMatch(css, /background:\s*var\(--panel\)/u, "Frames stay unfilled"); + for (const css of [globals, experience, home, directory]) assert.doesNotMatch(css, /background:\s*var\(--panel\)/u, "Frames stay unfilled"); assert.match(directory, /\.directory\s*\{[^}]*border:\s*1px solid var\(--frame\)/u); assert.match(directory, /\.directory a \+ a\s*\{[^}]*background-image:\s*var\(--dash-x\)/u); assert.doesNotMatch(directory, /\.directory a\s*\{[^}]*border/u); @@ -1057,7 +1052,7 @@ test("the production design contract is restrained and dependency-light", async assert.match(navigation, /wordmark-lockup[\s\S]*?wordmark-mark[\s\S]*?wordmark-name[\s\S]*?>Theodore Ouyang<\/span>/u); assert.match(layout, /assets\/brand\/lo-mark\.svg/u); assert.match(experience, /\.metadata\s*\{[^}]*grid-template-columns:\s*repeat\(4,/u); - assert.match(experience, /\.entryTitle\s*\{[^}]*font-size:\s*var\(--type-subheading\)/u); + assert.match(globals, /\.ledger-title\s*\{[^}]*font-size:\s*var\(--type-subheading\)/u); assert.match(experience, /\.contributions > ol\s*\{[^}]*padding:\s*0\s*;[^}]*list-style:\s*none\s*;/u); assert.deepEqual(Object.keys(packageJson.dependencies).sort(), ["@mathjax/mathjax-tex-font", "@mathjax/src", "next", "react", "react-dom"]); assert.equal(packageJson.dependencies["@mathjax/src"], "4.1.3"); @@ -1113,7 +1108,7 @@ test("shared typography source roles preserve article names, compact indices, me assert.match(declarations, /font-weight:\s*400\s*;/u); assert.match(declarations, /line-height:\s*var\(--title-leading\)\s*;/u); } - const entryTitle = rule(experience, ".entryTitle"); + const entryTitle = rule(globals, ".ledger-title"); assert.match(entryTitle, /font-size:\s*var\(--type-subheading\)\s*;/u, "Every item title shares the subheading role"); assert.match(entryTitle, /font-weight:\s*500\s*;/u); assert.match(entryTitle, /line-height:\s*var\(--subheading-leading\)\s*;/u);