Buckets:
| <!-- | |
| Vendored + adapted into posterly from ARIS (Auto-claude-code-research-in-sleep), | |
| skill paper-poster-html. Origin: https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep | |
| Upstream tokenization: MIT (c) 2026 wanshuiyin -- ../LICENSES/aris-MIT.txt | |
| This is the tokenized form of posterly's own neutral template; the class names and | |
| content are posterly's own (c) 2026 Ruishuo Chen. As an adapted derivative this file | |
| ships as part of posterly under AGPL-3.0. See ../NOTICE.md. | |
| --> | |
| <!-- | |
| ============================================================ | |
| TEMPLATE: landscape_4col (ARIS fork) | |
| CANVAS: 60in × 36in landscape (ICML / NeurIPS / generic landscape) | |
| LAYOUT: header → optional banner → 4 body columns → optional takeaways → footer | |
| USE WHEN: standard ML conference poster with 3-5 content cards per column, | |
| mix of figures + equations + small tables. | |
| HOW TO USE: | |
| 1. Copy this file to your working directory as `poster.html`. | |
| 2. Edit the DESIGN TOKENS in `:root` to your lab/venue colors. | |
| 3. Replace TODO content placeholders (search for "TODO"). | |
| 4. Run `python tools/run_gates.py poster.html --tokens design_tokens.json` (the default driver: preflight -> style -> measure -> polish; design_tokens.json is the design-direction pack written at lock time -- SKILL.md Step 2.5) to align columns and check style/structure. | |
| 5. Run `python tools/render_preview.py poster.html` to produce the PDF. | |
| NOTE: as shipped, this scaffold passes `preflight` (structure) but is | |
| EXPECTED to FAIL `measure`/`polish` -- figures are commented out and copy | |
| is TODO stubs, so columns only fill the top of the canvas. Those two gates | |
| judge a FILLED poster; balance them once you've added real content. See | |
| templates/README.md ("Scaffolds, not finished posters"). | |
| MEASURE ROLES: every layout-critical element carries `data-measure-role`. | |
| Generic measurement scripts depend on these — do not remove. | |
| CANVAS RETARGETING: to print at another size, change the canvas in exactly | |
| TWO places that must stay in sync -- the `@page { size: ... }` rule and the | |
| `.poster { width/height }` (also the `@media print .poster { width/height }`). | |
| Example: ICLR 2026 main conference uses 185cm 90cm landscape (official print | |
| service spec) -- set @page to `185cm 90cm`, width to `1850 * var(--u)` and | |
| height to `900 * var(--u)` (and the print-override .poster to `185cm`/`90cm`). | |
| Adapted from posterly (MIT, © 2026 Ruishuo Chen) — see LICENSES/ & NOTICE.md; | |
| ARIS modifications: flat de-gradient, --fs token scale, zero-inline-style | |
| utilities, data-source/data-color-exempt contracts. | |
| ============================================================ | |
| --> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Reproducing: The Interplay Between Interpolation and Aggregation in Regression — ICML 2026</title> | |
| <!-- MathJax v3 for inline equations. CDN by default when the file is | |
| opened by hand; the posterly check tools (measure/polish/pack/…) | |
| intercept this request and serve the skill's bundled copy | |
| (assets/mathjax/tex-svg.js, MathJax 3.2.2), so gates render math | |
| deterministically even offline. To make a hand-opened poster | |
| offline too, copy that bundle next to the poster and point the | |
| <script> `src` at it. --> | |
| <script> | |
| window.MathJax = { | |
| tex: { | |
| inlineMath: [['$', '$'], ['\\(', '\\)']], | |
| displayMath: [['$$', '$$'], ['\\[', '\\]']], | |
| packages: {'[+]': ['ams']} | |
| }, | |
| svg: { fontCache: 'global' } | |
| }; | |
| </script> | |
| <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script> | |
| <style> | |
| /* ========================================================= | |
| CANVAS — 60" × 36" landscape | |
| ========================================================= */ | |
| @page { size: 60in 36in; margin: 0; } | |
| :root { | |
| /* ===== DESIGN TOKENS ===== */ | |
| /* Primary accent (header underline, card-highlight bar, section nums, .keyword) */ | |
| --accent: #0E6D63; /* learning-theory teal; white ink on it measures 6.20:1 (>= AA) */ | |
| --accent-deep: #0A4F48; | |
| --accent-light: #E2F2EF; | |
| --accent-soft: #B6DDD7; | |
| --accent-ink: #FFFFFF; /* ink ON the accent (chips, callout, thead) */ | |
| /* Emphasis register for "ours / best" (table .ours row, "★" callouts). | |
| Default is the warm gold; a redesign may choose any register that | |
| keeps 4.5:1 with --emph-ink (see templates/THEMES.md Mechanism 1). */ | |
| --emph: #C08A2E; | |
| --emph-soft: #FDF3DF; | |
| --emph-ink: #17302C; /* ink ON the emphasis fill. NOT var(--accent-deep): | |
| #1F4566 on the default gold measures 4.16:1 (< AA); | |
| #14314A measures 5.58:1 (>= 4.5:1). */ | |
| /* Text */ | |
| --text-primary: #1A1A1A; | |
| --text-secondary: #555555; | |
| --text-muted: #888888; | |
| /* Backgrounds */ | |
| --bg-page: #F5F6F9; | |
| --bg-card: #FFFFFF; | |
| --bg-card-tint: #FAFAFB; | |
| --bg-emphasis: var(--accent-light); | |
| /* Borders */ | |
| --border-soft: #D8D8D8; | |
| --border-strong: var(--accent); | |
| /* Screen-only dark mat behind the poster (the off-canvas viewport | |
| background). Print resets html/body to white, so this never reaches | |
| paper; kept as a token so no color literal lives outside this block. */ | |
| --bg-viewport: #2B2B2B; | |
| /* Base unit. Print: 1mm; screen preview: 1.6px (~3.78px = 1mm at 96dpi). */ | |
| --u: 1.6px; | |
| /* Font-size scale (9 archetypes). Every `font-size` in this template | |
| references one of these. `calc(var(--fs-N) * k)` is permitted ONLY for | |
| a COMPONENTS.md-defined variant (e.g. `.eqn--large`). */ | |
| --fs-1: calc(9 * var(--u)); /* micro label */ | |
| --fs-2: calc(10 * var(--u)); /* small caption */ | |
| --fs-3: calc(10 * var(--u)); /* caption / table */ | |
| --fs-4: calc(11 * var(--u)); /* body text */ | |
| --fs-5: calc(13 * var(--u)); /* equation / emphasis */ | |
| --fs-6: calc(15 * var(--u)); /* subtitle */ | |
| --fs-7: calc(16 * var(--u)); /* section title */ | |
| --fs-8: calc(22 * var(--u)); /* banner number */ | |
| --fs-9: calc(32 * var(--u)); /* main title */ | |
| /* Fonts. Override at :root if your venue mandates a specific family. */ | |
| --font-serif: "Charter", "Source Serif Pro", "Georgia", serif; | |
| --font-sans: "Inter", "Helvetica Neue", sans-serif; | |
| /* Shadows & watermark ink — tokenized so rules 1/3 stay literal-free | |
| (the faint radial page tint is the ONE allowed literal outside this | |
| block; rule 5 validates it WHEN ENABLED -- the style gate ships with rules 4-5 off). */ | |
| --shadow-screen: 0 0 60px rgba(0, 0, 0, 0.5); | |
| --shadow-card: 0 calc(2 * var(--u)) calc(6 * var(--u)) rgba(29, 78, 216, 0.05); | |
| --ornament-ink: rgba(29, 78, 216, 0.06); | |
| /* Corner-radius scale. Every border-radius calc() multiplies by this; | |
| 1 = the shipped soft look, 0 = square/flat (see templates/THEMES.md). */ | |
| --rs: 1; | |
| /* Figure mount: the ground behind paper figures (transparent PNGs sit on | |
| it) and the keyline around them (.figure img / .ff-fig img). Re-theme | |
| with the Axis 6 frame decision so figures sit mounted in the design | |
| instead of pasted on it; --fig-frame: transparent = frameless mount. | |
| QR backgrounds stay literal white -- that's scannability, not styling. */ | |
| --fig-bg: white; | |
| --fig-frame: var(--border-soft); | |
| /* ===== END DESIGN TOKENS ===== */ | |
| } | |
| /* ========================================================= | |
| RESET + BASE | |
| ========================================================= */ | |
| * { box-sizing: border-box; margin: 0; padding: 0; } | |
| /* ========================================================= | |
| BASE DEFENSES -- wrap & ink safety. KEEP this block in ANY | |
| skeleton, including a fully custom one (copy it over and | |
| EXTEND the selector lists with your own prose/display | |
| classes -- a hand-rolled skeleton that drops it strands | |
| single-word widows and ragged titles; polish warns as | |
| TEXT-WRAP). | |
| - pretty: fills each line, protects the last-line orphan | |
| (single-word widow). Safe on all prose. | |
| - balance: evens CENTERED display text only -- never pair | |
| it with left-aligned multi-sentence prose (SKILL.md wrap | |
| rules). | |
| - Any inline class you add that paints a background (a | |
| .mark highlight, a keyword chip) must declare its own | |
| `color` (Gate G -- never inherit ink across a ground | |
| change) plus `box-decoration-break: clone; | |
| -webkit-box-decoration-break: clone;` so a wrapped | |
| highlight keeps its padding on both fragments (then it | |
| never needs -gluing to hold one line). | |
| ========================================================= */ | |
| p, li, dd, figcaption, | |
| .body-text, .caption, .callout, .section-title { text-wrap: pretty; } | |
| .title { text-wrap: balance; } | |
| html, body { | |
| background: var(--bg-viewport); | |
| font-family: var(--font-serif); | |
| color: var(--text-primary); | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| /* ========================================================= | |
| UTILITY CLASSES — replace inline `style=` in the body markup. | |
| The template (and any finished poster) must carry ZERO `style=` | |
| attributes. Use these classes instead. Two documented exceptions | |
| exist ONLY as examples and may appear in comments, never live: | |
| - a logo/seal SVG flagged data-color-exempt="logo" | |
| - a paper figure `<img ... data-source="paper" style="width: NN%">` | |
| (AR width tweak; prefer the .w-NN classes below where possible) | |
| ========================================================= */ | |
| /* Poster container — exact print dimensions; data-measure-role="poster" so poster_check.py | |
| can verify the canvas size. */ | |
| .poster { | |
| width: calc(1524 * var(--u)); | |
| height: calc(914 * var(--u)); | |
| background: var(--bg-page); | |
| /* Page tint kept (radial only, all color stops alpha <= 0.06 per the | |
| de-gradient policy: linear-gradient is banned, this low-alpha radial | |
| wash is the single allowed exception). */ | |
| background-image: | |
| radial-gradient(ellipse at top left, rgba(29, 78, 216, 0.06), transparent 40%), | |
| radial-gradient(ellipse at bottom right, rgba(201, 162, 74, 0.05), transparent 50%); | |
| margin: 20px auto; | |
| padding: calc(10 * var(--u)) calc(14 * var(--u)); | |
| display: grid; | |
| grid-template-columns: minmax(0, 1fr); /* column-axis twin of the minmax(0,1fr) body-row defense: without it the implicit `auto` column grows to a wide child's max-content and a full-width row overflows the canvas (measure's canvas-overflow gate). Keep on any custom skeleton. */ | |
| grid-template-rows: auto auto minmax(0, 1fr) auto; /* header | banner | body | footer. minmax(0,1fr) (not bare 1fr): an over-tall body compresses instead of pushing footer off-canvas */ | |
| gap: calc(6 * var(--u)); | |
| box-shadow: var(--shadow-screen); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| /* Decorative top bar — flat solid accent (de-gradient). */ | |
| .poster::before { | |
| content: ""; | |
| position: absolute; top: 0; left: 0; right: 0; | |
| height: calc(8 * var(--u)); | |
| background: var(--accent); | |
| } | |
| /* ========================================================= | |
| HEADER | |
| ========================================================= */ | |
| .header { | |
| display: grid; | |
| grid-template-columns: 1fr minmax(50%, auto) 1fr; /* equal side tracks (1fr) -> the title track is centred on the poster, not just between the side blocks; the centre track is floored at 50% so a one-line title still fills it (else a short title measures narrow and trips a false HEADER/TITLE-SQUEEZED). Best-effort: a side block wide enough to clamp its 1fr track can still pull the title off-centre. */ | |
| align-items: center; | |
| gap: calc(16 * var(--u)); | |
| padding: calc(2 * var(--u)) calc(4 * var(--u)) calc(5 * var(--u)); | |
| border-bottom: calc(2 * var(--u)) solid var(--accent); | |
| } | |
| .venue-badge { | |
| justify-self: start; /* anchor to the far-left margin so the centre track stays centred */ | |
| display: flex; flex-direction: column; | |
| align-items: center; justify-content: center; | |
| min-width: calc(95 * var(--u)); | |
| text-align: center; | |
| border-right: calc(1 * var(--u)) solid var(--border-soft); | |
| padding-right: calc(12 * var(--u)); | |
| } | |
| .venue-badge .vb-venue { | |
| font-family: var(--font-sans); | |
| font-weight: 800; | |
| font-size: var(--fs-9); | |
| color: var(--accent-deep); | |
| line-height: 1; | |
| letter-spacing: -0.5px; | |
| } | |
| .venue-badge .vb-year { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-5); | |
| color: var(--text-secondary); | |
| margin-top: calc(3 * var(--u)); | |
| letter-spacing: 1.2px; | |
| } | |
| .venue-badge .vb-tag { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-2); | |
| color: var(--accent); | |
| font-weight: 700; | |
| margin-top: calc(2 * var(--u)); | |
| letter-spacing: 1.2px; | |
| } | |
| .title-block { text-align: center; min-width: 0; } | |
| .title { | |
| font-family: var(--font-sans); | |
| font-weight: 800; | |
| font-size: var(--fs-9); | |
| line-height: 1.05; | |
| color: var(--accent-deep); | |
| letter-spacing: -0.5px; | |
| } | |
| .title .accent { color: var(--accent); } | |
| .subtitle { | |
| font-family: var(--font-sans); | |
| font-weight: 500; | |
| font-size: var(--fs-6); | |
| color: var(--text-secondary); | |
| margin-top: calc(2 * var(--u)); | |
| font-style: italic; | |
| } | |
| .authors-line { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-4); | |
| color: var(--accent); | |
| font-weight: 600; | |
| margin-top: calc(3 * var(--u)); | |
| } | |
| .authors-line .author { margin: 0 calc(4 * var(--u)); } | |
| .authors-line sup { font-size: 0.7em; color: var(--accent); } | |
| .authors-line .aff { | |
| color: var(--text-secondary); | |
| font-weight: 400; | |
| display: block; | |
| margin-top: calc(2 * var(--u)); | |
| font-size: var(--fs-4); | |
| } | |
| .right-block { | |
| justify-self: end; /* keep logo+QR in the far-right corner */ | |
| display: flex; align-items: center; | |
| gap: calc(10 * var(--u)); | |
| } | |
| .qr-block { display: flex; flex-direction: column; align-items: center; gap: calc(2 * var(--u)); } | |
| .qr-block img { | |
| width: calc(85 * var(--u)); | |
| height: calc(85 * var(--u)); | |
| border: calc(2 * var(--u)) solid var(--accent); | |
| border-radius: calc(4 * var(--u) * var(--rs)); | |
| background: white; | |
| padding: calc(2 * var(--u)); | |
| } | |
| .qr-label { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-3); | |
| color: var(--accent); | |
| font-weight: 600; | |
| } | |
| /* Optional logo slot — drop your lab logo here. Keep its rendered height | |
| close to the QR (~85u) so the header doesn't grow disproportionately. | |
| A raster logo needs no exemption. An inline-SVG logo with brand colors | |
| must carry data-color-exempt="logo" so style_check skips its fills, e.g.: | |
| <svg data-color-exempt="logo" ...> ... </svg> */ | |
| .logo-slot img { height: calc(85 * var(--u)); width: auto; max-width: calc(360 * var(--u)); object-fit: contain; display: block; } | |
| /* Logo size classes on .logo-slot -- pick from the file's aspect ratio (SKILL.md Gate E). | |
| tall/square sit at the QR-matched slot height; wide is intentionally shorter (~68% of the | |
| QR) and width-capped so a long wordmark doesn't out-mass the title. Do NOT combine these | |
| with logo-stack (that row is width-normalized, below). */ | |
| .logo-slot.logo-tall img, | |
| .logo-slot.logo-square img { height: calc(85 * var(--u)); } | |
| .logo-slot.logo-wide img { height: calc(58 * var(--u)); max-width: calc(300 * var(--u)); } | |
| /* Logo chip: a solid backing that keeps a transparent / white-bordered logo legible on a | |
| colored/dark header (white chip) or a light header (.logo-chip-dark); the padding + radius | |
| fold a stray white box into a deliberate rounded tile (SKILL.md Gate E, Background). */ | |
| .logo-chip { | |
| display: inline-flex; align-items: center; justify-content: center; | |
| background: var(--bg-card); border-radius: calc(3 * var(--u) * var(--rs)); | |
| padding: calc(3 * var(--u)) calc(5 * var(--u)); | |
| } | |
| .logo-chip.logo-chip-dark { background: var(--text-primary); } | |
| /* logo-row: institution logos in the header right block (REAL logos the | |
| user provided — never fabricate a seal). Each img MUST carry | |
| data-color-exempt="logo"; height pairs with the QR. */ | |
| .logo-row { display: flex; align-items: center; gap: calc(5 * var(--u)); } | |
| .logo-row img { height: calc(68 * var(--u)); width: auto; display: block; } | |
| /* --boxed variant: each logo in a labeled tile (logo + institution name) — | |
| more presence at poster distance; white tile + soft border, no new hues. */ | |
| .logo-row .lr-item { | |
| display: flex; flex-direction: column; align-items: center; | |
| gap: calc(2 * var(--u)); | |
| background: var(--bg-card); | |
| border: 1px solid var(--border-soft); | |
| border-radius: calc(3 * var(--u) * var(--rs)); | |
| padding: calc(4 * var(--u)) calc(6 * var(--u)); | |
| } | |
| .logo-row .lr-item img { height: calc(58 * var(--u)); } | |
| .logo-row .lr-label { | |
| font-family: var(--font-sans); font-weight: 600; font-size: var(--fs-1); | |
| color: var(--text-secondary); text-align: center; line-height: 1.15; | |
| } | |
| /* logo-stack variant: WIDE WORDMARKS (AR >= ~2) normalized to EQUAL WIDTH | |
| and stacked vertically, left-aligned. Use when two wide wordmarks of | |
| different aspect ratio read unbalanced height-matched in a row (equal | |
| width lets the less-wide mark grow taller and aligns a clean block). | |
| NOT for a square seal or tall mark (equal width blows it up — keep those | |
| height-matched). Do NOT also apply the logo-wide/tall/square classes. */ | |
| .logo-row.logo-stack { flex-direction: column; align-items: flex-start; gap: calc(8 * var(--u)); } | |
| .logo-row.logo-stack img { width: calc(170 * var(--u)); height: auto; } | |
| /* venue badge may carry the official venue logo above its text line */ | |
| .venue-badge img { height: calc(62 * var(--u)); width: auto; display: block; margin: 0 auto calc(2 * var(--u)); } | |
| .venue-badge .vb-title { font-family: var(--font-sans); font-weight: 800; font-size: var(--fs-5); color: var(--accent-deep); letter-spacing: 0.5px; } | |
| /* ========================================================= | |
| OPTIONAL FRAMEWORK BANNER (delete this whole section if you don't need it) | |
| ========================================================= */ | |
| .framework-banner { | |
| display: flex; | |
| align-items: center; | |
| gap: calc(16 * var(--u)); | |
| /* Flat solid emphasis fill (de-gradient). */ | |
| background: var(--bg-emphasis); | |
| border: calc(1 * var(--u)) solid var(--border-soft); | |
| border-left: calc(6 * var(--u)) solid var(--accent); | |
| border-radius: calc(6 * var(--u) * var(--rs)); | |
| padding: calc(6 * var(--u)) calc(14 * var(--u)); | |
| } | |
| .framework-banner img { height: calc(120 * var(--u)); width: auto; display: block; } | |
| .framework-banner .banner-stats { | |
| flex: 1; | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: calc(6 * var(--u)); | |
| } | |
| .framework-banner .bs-item { | |
| background: white; | |
| border: calc(1 * var(--u)) solid var(--border-soft); | |
| border-left: calc(3 * var(--u)) solid var(--accent); | |
| border-radius: calc(3 * var(--u) * var(--rs)); | |
| padding: calc(2 * var(--u)) calc(8 * var(--u)); | |
| text-align: center; | |
| } | |
| .framework-banner .bs-num { | |
| font-family: var(--font-sans); | |
| font-weight: 800; | |
| font-size: var(--fs-8); | |
| color: var(--accent); | |
| line-height: 1; | |
| } | |
| .framework-banner .bs-label { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-3); | |
| color: var(--text-secondary); | |
| margin-top: calc(2 * var(--u)); | |
| line-height: 1.2; | |
| } | |
| .framework-banner .fb-text { | |
| flex: 1.6; | |
| font-family: var(--font-serif); | |
| font-size: var(--fs-6); | |
| line-height: 1.5; | |
| text-wrap: balance; /* centered banner headline: even the two lines so neither widows (Gate B) */ | |
| text-align: center; | |
| } | |
| .framework-banner .fb-text strong { color: var(--accent-deep); } | |
| .framework-banner .fb-label { | |
| display: inline-block; | |
| background: var(--accent); | |
| color: var(--accent-ink); | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-5); | |
| font-weight: 700; | |
| padding: calc(2 * var(--u)) calc(8 * var(--u)); | |
| border-radius: calc(4 * var(--u) * var(--rs)); | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| vertical-align: middle; | |
| line-height: 1; | |
| position: relative; | |
| top: calc(-1 * var(--u)); | |
| } | |
| /* Method-overview figure for the banner (banner-figure component, | |
| catalogued in COMPONENTS.md). Usually CAPTIONLESS -- the banner text | |
| block beside it is the figure's explanation. width:min-content collapses | |
| the slot to the IMAGE (a captionless figure's slot IS the image); if a | |
| short caption is used it wraps at the image box and can NEVER set the | |
| flex-item width; margin-inline centres a block image (text-align does | |
| not); overflow-wrap guards a long unbreakable token. Do NOT hand-roll a | |
| .fb-fig wrapper or a bare <img class="w-100"> here. */ | |
| .framework-banner .banner-figure { | |
| flex: 0 0 auto; | |
| width: min-content; | |
| margin: 0; | |
| text-align: center; | |
| } | |
| .framework-banner .banner-figure img { | |
| height: calc(120 * var(--u)); | |
| width: auto; | |
| display: block; | |
| margin-inline: auto; | |
| } | |
| .framework-banner .banner-figure figcaption { | |
| width: 100%; | |
| margin-top: calc(2 * var(--u)); | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-2); | |
| line-height: 1.2; | |
| color: var(--text-secondary); | |
| text-align: center; | |
| text-wrap: pretty; | |
| overflow-wrap: anywhere; | |
| } | |
| .framework-banner .banner-figure figcaption strong { color: var(--accent-deep); } | |
| /* ========================================================= | |
| BODY: 4 columns, variable-width hint via fr values | |
| ========================================================= */ | |
| .body-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1.05fr 1.05fr 1fr; | |
| gap: calc(10 * var(--u)); | |
| /* No overflow:hidden here — it would clip card shadows (pitfall #6). | |
| .poster already clips at the page boundary; min-height:0 is the | |
| grid-blowout guard. */ | |
| min-height: 0; | |
| } | |
| .column { | |
| display: flex; flex-direction: column; | |
| gap: calc(6 * var(--u)); | |
| min-height: 0; | |
| height: 100%; | |
| padding-bottom: calc(4 * var(--u)); /* shadow breathing room above takeaways */ | |
| } | |
| /* ========================================================= | |
| CARDS | |
| ========================================================= */ | |
| .card { | |
| background: var(--bg-card); | |
| border-radius: calc(5 * var(--u) * var(--rs)); | |
| padding: calc(4 * var(--u)) calc(9 * var(--u)); | |
| border: calc(1 * var(--u)) solid var(--border-soft); | |
| box-shadow: var(--shadow-card); | |
| position: relative; | |
| } | |
| .card.tinted { background: var(--bg-card-tint); } | |
| .card.card--compact { padding: calc(3 * var(--u)) calc(6 * var(--u)); } /* predefined variant: tighter padding (fix (f)) */ | |
| .card.highlight { | |
| border-left: calc(6 * var(--u)) solid var(--accent); | |
| /* Flat emphasis tint (de-gradient). */ | |
| background: var(--bg-emphasis); | |
| } | |
| .section-title { | |
| font-family: var(--font-sans); | |
| font-weight: 700; | |
| font-size: var(--fs-7); | |
| color: var(--accent-deep); | |
| margin-bottom: calc(3 * var(--u)); | |
| display: flex; align-items: center; | |
| gap: calc(5 * var(--u)); | |
| } | |
| /* Title text + any ★ marker share ONE .st-text span, so the heading wraps as | |
| natural text (hanging indent) instead of flex-wrapping atomic items: the | |
| number badge is never stranded on its own line and the ★ never widows. */ | |
| .section-title .st-text { flex: 1; min-width: 0; line-height: 1.18; } | |
| /* Graceful fallback if a title is NOT wrapped in .st-text: float the badge so | |
| bare inline text still wraps beside it rather than dropping below it. */ | |
| .section-title:not(:has(.st-text)) { display: block; line-height: 1.18; } | |
| .section-title:not(:has(.st-text)) .num { float: left; margin-right: calc(5 * var(--u)); } | |
| .section-title .num { | |
| display: inline-flex; align-items: center; justify-content: center; | |
| width: calc(22 * var(--u)); height: calc(22 * var(--u)); | |
| background: var(--accent); color: var(--accent-ink); | |
| border-radius: 50%; | |
| font-size: var(--fs-5); font-weight: 700; | |
| flex-shrink: 0; | |
| } | |
| /* Inline "★ KEY" / "★ Headline" marker beside a section title. */ | |
| .section-title .key-mark { color: var(--emph); font-size: var(--fs-3); } | |
| .body-text, .card p, .card li { | |
| font-family: var(--font-serif); | |
| font-size: var(--fs-4); | |
| line-height: 1.3; | |
| color: var(--text-primary); | |
| } | |
| .card ul, .card ol { padding-left: calc(18 * var(--u)); } | |
| .card li { margin-bottom: calc(2 * var(--u)); } | |
| .keyword { color: var(--accent); font-weight: 700; } | |
| .keyword-emph { color: var(--emph); font-weight: 700; } | |
| .highlight-text { | |
| background: var(--bg-emphasis); | |
| padding: 0 calc(3 * var(--u)); | |
| border-radius: calc(2 * var(--u) * var(--rs)); | |
| } | |
| /* Equation block */ | |
| .eqn { | |
| background: var(--bg-emphasis); | |
| border-left: calc(3 * var(--u)) solid var(--accent); | |
| padding: calc(4 * var(--u)) calc(10 * var(--u)); | |
| margin: calc(4 * var(--u)) 0; | |
| font-size: var(--fs-5); | |
| overflow-x: hidden; | |
| } | |
| /* Predefined variant for a larger / more legible display equation. | |
| `calc(var(--fs-N) * k)` is allowed here because this is a | |
| COMPONENTS.md-registered variant (DESIGN_FINAL §A / §10 f). */ | |
| .eqn--large { font-size: calc(var(--fs-5) * 1.25); } | |
| .eqn .label { | |
| display: block; | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-2); | |
| color: var(--accent); | |
| font-weight: 600; | |
| margin-bottom: calc(2 * var(--u)); | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| } | |
| /* Callout: solid accent for primary, solid emphasis fill for theorems / "★ key" strips */ | |
| .callout { | |
| background: var(--accent); | |
| color: var(--accent-ink); | |
| padding: calc(5 * var(--u)) calc(10 * var(--u)); | |
| border-radius: calc(4 * var(--u) * var(--rs)); | |
| font-size: var(--fs-4); | |
| margin: calc(4 * var(--u)) 0; | |
| } | |
| .callout strong { color: var(--emph-soft); } | |
| /* Flat solid emphasis fill (de-gradient). */ | |
| .callout.emph { | |
| background: var(--emph); | |
| color: var(--emph-ink); /* route through the token — accent-deep here would dodge the register swap AND fail AA on the default gold */ | |
| } | |
| .callout.emph strong { color: var(--emph-ink); } | |
| /* Figure container */ | |
| .figure { margin: calc(4 * var(--u)) 0; text-align: center; } | |
| .figure img:not([class*="w-"]) { width: 100%; } | |
| .figure--wide img { width: 100%; } /* predefined variant: force full card width over any .w-NN (fix (f)) */ | |
| .figure img { | |
| border-radius: calc(4 * var(--u) * var(--rs)); | |
| border: calc(1 * var(--u)) solid var(--fig-frame); | |
| background: var(--fig-bg); | |
| } | |
| .figure .caption { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-3); | |
| color: var(--text-secondary); | |
| margin-top: calc(3 * var(--u)); | |
| line-height: 1.3; | |
| text-align: left; | |
| } | |
| .figure .caption strong { color: var(--accent-deep); } | |
| /* Float a figure BESIDE text in a TEXT-RICH card: text wraps to its side | |
| and then below it. The clearfix grows the card to contain the float; | |
| mark the <img> data-fig-layout="beside-text" so the AR gates honour the | |
| intentionally small width. Use ONLY when there is enough text to fill the | |
| figure's height -- a text-sparse card should center .figure instead. A | |
| short-text float leaves an L-shaped void below the text, which polish's | |
| FIG/BESIDE-TEXT-VOID flags. */ | |
| .fig-wrap::after { content: ""; display: table; clear: both; } | |
| .ff-fig { | |
| float: right; | |
| width: 48%; max-width: 58%; min-width: 38%; | |
| margin: calc(1 * var(--u)) 0 calc(3 * var(--u)) calc(11 * var(--u)); | |
| text-align: center; | |
| } | |
| .ff-fig.left { | |
| float: left; | |
| margin: calc(1 * var(--u)) calc(11 * var(--u)) calc(3 * var(--u)) 0; | |
| } | |
| .ff-fig img { | |
| display: block; | |
| width: 100%; | |
| border-radius: calc(4 * var(--u) * var(--rs)); | |
| border: calc(1 * var(--u)) solid var(--fig-frame); | |
| background: var(--fig-bg); | |
| } | |
| .ff-fig .caption { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-3); | |
| color: var(--text-secondary); | |
| margin-top: calc(3 * var(--u)); | |
| line-height: 1.3; | |
| text-align: center; | |
| } | |
| /* Result table with .ours row highlighted with the emphasis tint */ | |
| .result-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-3); | |
| margin-top: calc(3 * var(--u)); | |
| } | |
| .result-table th, .result-table td { | |
| padding: calc(2 * var(--u)) calc(4 * var(--u)); | |
| text-align: center; | |
| border-bottom: calc(1 * var(--u)) solid var(--border-soft); | |
| } | |
| .result-table thead th { | |
| background: var(--accent); color: var(--accent-ink); | |
| font-weight: 600; font-size: var(--fs-2); | |
| } | |
| .result-table tbody tr.group-row td { | |
| background: var(--bg-emphasis); font-weight: 700; | |
| text-align: left; | |
| color: var(--accent-deep); | |
| padding-left: calc(8 * var(--u)); | |
| border-bottom: calc(2 * var(--u)) solid var(--accent); | |
| } | |
| .result-table tbody tr.ours td { background: var(--emph-soft); font-weight: 700; } | |
| .result-table tbody tr.ours td:first-child { color: var(--accent-deep); } | |
| /* Greyed reference row (was inline color:#888). */ | |
| .result-table tbody tr.reference td { color: var(--text-muted); } | |
| .result-table .method { text-align: left; padding-left: calc(8 * var(--u)); } | |
| .result-table .best { color: var(--accent); font-weight: 700; } | |
| /* 3-up stat box */ | |
| .keybox { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: calc(4 * var(--u)); | |
| margin: calc(4 * var(--u)) 0 0; | |
| } | |
| .keybox .kb-item { | |
| background: var(--bg-emphasis); | |
| border-top: calc(2 * var(--u)) solid var(--accent); | |
| padding: calc(3 * var(--u)); | |
| text-align: center; | |
| /* The grid stretches every tile to the tallest one; center the content | |
| vertically so a 1-line tile's number aligns with a 2-line neighbour's | |
| instead of top-ragged (SKILL Layout pitfall — stat-tile alignment). */ | |
| display: flex; flex-direction: column; justify-content: center; | |
| border-radius: 0 0 calc(3 * var(--u) * var(--rs)) calc(3 * var(--u) * var(--rs)); | |
| } | |
| .kb-item .kb-num { | |
| font-family: var(--font-sans); | |
| font-weight: 800; | |
| font-size: var(--fs-6); | |
| color: var(--accent); | |
| line-height: 1; | |
| } | |
| .kb-item .kb-label { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-1); | |
| color: var(--text-secondary); | |
| margin-top: calc(2 * var(--u)); | |
| line-height: 1.1; | |
| /* Reserve two label lines (2lh tracks this line-height) so 1-line | |
| and 2-line labels occupy the same height and the big numbers | |
| align across tiles. Keep labels <= 2 lines (COMPONENTS §keybox). */ | |
| min-height: 2lh; | |
| } | |
| /* Optional takeaways strip (delete the section if not needed) */ | |
| .takeaways-strip { | |
| display: grid; | |
| grid-template-columns: auto repeat(4, 1fr); | |
| align-items: center; | |
| gap: calc(10 * var(--u)); | |
| /* Flat solid emphasis fill (de-gradient). */ | |
| background: var(--bg-emphasis); | |
| border: calc(1 * var(--u)) solid var(--border-soft); | |
| border-radius: calc(5 * var(--u) * var(--rs)); | |
| padding: calc(8 * var(--u)) calc(12 * var(--u)); | |
| } | |
| .takeaways-strip .ts-title { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-6); | |
| font-weight: 800; | |
| color: var(--accent-deep); | |
| display: flex; align-items: center; gap: calc(6 * var(--u)); | |
| } | |
| .takeaways-strip .ts-title .num { | |
| display: inline-flex; align-items: center; justify-content: center; | |
| width: calc(22 * var(--u)); height: calc(22 * var(--u)); | |
| background: var(--accent); color: var(--accent-ink); | |
| border-radius: 50%; | |
| font-size: var(--fs-5); font-weight: 700; | |
| } | |
| .takeaways-strip .ts-item { | |
| border-left: calc(3 * var(--u)) solid var(--accent); | |
| padding-left: calc(8 * var(--u)); | |
| line-height: 1.3; | |
| text-align: center; | |
| text-wrap: balance; | |
| } | |
| .takeaways-strip .ts-key { | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-3); | |
| font-weight: 700; | |
| color: var(--accent); | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| } | |
| .takeaways-strip .ts-text { | |
| font-family: var(--font-serif); | |
| font-size: var(--fs-4); | |
| margin-left: calc(4 * var(--u)); | |
| } | |
| /* Footer */ | |
| .footer { | |
| grid-column: 1 / -1; | |
| display: flex; justify-content: space-between; align-items: baseline; | |
| /* When the two blocks can't sit side by side they stack (wrap) instead of | |
| overflowing; row-gap keeps the stacked blocks legible. */ | |
| flex-wrap: wrap; gap: calc(2 * var(--u)) calc(10 * var(--u)); | |
| padding-top: calc(8 * var(--u)); | |
| border-top: calc(1 * var(--u)) solid var(--border-soft); | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-5); | |
| color: var(--text-muted); | |
| } | |
| .footer .method-name { color: var(--accent-deep); } | |
| /* Long repo URL / email breaks mid-token rather than overflowing the margin. */ | |
| .footer .repo { color: var(--accent); font-weight: 600; overflow-wrap: anywhere; } | |
| /* Optional watermark */ | |
| .ornament { | |
| position: absolute; | |
| right: calc(20 * var(--u)); | |
| bottom: calc(20 * var(--u)); | |
| font-family: var(--font-sans); | |
| font-size: var(--fs-9); | |
| color: var(--ornament-ink); | |
| font-weight: 900; | |
| letter-spacing: 4px; | |
| pointer-events: none; | |
| user-select: none; | |
| } | |
| /* ========================================================= | |
| DENSITY COMPONENTS (catalogued — see COMPONENTS.md). | |
| Guardrail: no component-local color semantics. Distinction is | |
| carried by labels, order and typography — never by new hues. | |
| ========================================================= */ | |
| /* equation-stack: compact multi-row formula stack (denser than one big .eqn) */ | |
| .equation-stack { margin: calc(2 * var(--u)) 0; } | |
| .equation-stack .eqn { margin: calc(2 * var(--u)) 0; padding: calc(2 * var(--u)) calc(8 * var(--u)); } | |
| /* eqn-anatomy: term-by-term anatomy grid (2x2 default; --row variant = 1x4) */ | |
| .eqn-anatomy { | |
| display: grid; grid-template-columns: 1fr 1fr; | |
| gap: calc(2.5 * var(--u)); margin: calc(3 * var(--u)) 0; | |
| } | |
| .eqn-anatomy.eqn-anatomy--row { grid-template-columns: repeat(4, 1fr); } | |
| .eqn-anatomy .ea-item { | |
| background: var(--bg-card-tint); | |
| border: 1px solid var(--border-soft); | |
| border-left: calc(2 * var(--u)) solid var(--accent); | |
| border-radius: calc(2 * var(--u) * var(--rs)); | |
| padding: calc(2 * var(--u)) calc(4 * var(--u)); | |
| font-size: var(--fs-2); line-height: 1.3; | |
| } | |
| .eqn-anatomy .ea-tag { | |
| display: inline-block; font-family: var(--font-sans); font-weight: 700; | |
| font-size: var(--fs-1); color: var(--accent-deep); | |
| background: var(--accent-light); border-radius: calc(1.5 * var(--u) * var(--rs)); | |
| padding: calc(0.5 * var(--u)) calc(2.5 * var(--u)); | |
| margin-right: calc(1.5 * var(--u)); | |
| } | |
| /* flow-strip: labeled pipeline, ALL steps the same accent; ONLY the | |
| final step may carry the emphasis top bar. Not an "algorithm" unless the | |
| paper has one — see COMPONENTS.md. */ | |
| .flow-strip { display: flex; align-items: stretch; gap: calc(1.5 * var(--u)); margin: calc(3 * var(--u)) 0; } | |
| .flow-strip .step { | |
| flex: 1; background: var(--accent-light); | |
| border: 1px solid var(--accent-soft); border-radius: calc(2 * var(--u) * var(--rs)); | |
| padding: calc(2 * var(--u)) calc(2.5 * var(--u)); | |
| text-align: center; font-size: var(--fs-2); line-height: 1.25; | |
| } | |
| .flow-strip .step .step-name { | |
| display: block; font-family: var(--font-sans); font-weight: 700; | |
| font-size: var(--fs-1); color: var(--accent-deep); | |
| letter-spacing: 0.5px; text-transform: uppercase; | |
| margin-bottom: calc(1 * var(--u)); | |
| } | |
| .flow-strip .step--final { border-top: calc(1.5 * var(--u)) solid var(--emph); background: var(--emph-soft); } | |
| .flow-strip .arrow { | |
| align-self: center; color: var(--accent); | |
| font-family: var(--font-sans); font-weight: 700; font-size: var(--fs-4); | |
| flex: 0 0 auto; | |
| } | |
| /* figure--duo: two paper figures sharing one caption; each img MUST be | |
| a data-source="paper" asset and carry .w-45/.w-50 (42-48% each). */ | |
| .figure--duo { display: flex; gap: calc(3 * var(--u)); align-items: flex-start; justify-content: center; } | |
| .figure--duo img { max-width: 48%; min-width: 0; } /* hard cap: duo contract is 42-48% each; an oversized w-NN cannot overflow the card */ | |
| /* result-table derived column (emph-soft = DERIVED arithmetic; label it) */ | |
| .result-table th.derived, .result-table td.derived { | |
| background: var(--emph-soft); font-family: var(--font-sans); font-weight: 700; | |
| } | |
| /* Header cells keep the accent ink rule: on the emph-soft ground the white | |
| head ink would read 1.07:1, so route the header's derived cell through | |
| the emphasis ink token (Gate G -- never inherit ink across a ground change). */ | |
| .result-table thead th.derived { color: var(--emph-ink); } | |
| /* keybox 4-up variant */ | |
| .keybox.keybox--4 { grid-template-columns: repeat(4, 1fr); } | |
| /* algo: compact numbered procedure — ONLY when the paper itself states | |
| an explicit algorithm/procedure; never invent steps. */ | |
| ol.algo { padding-left: calc(16 * var(--u)); } | |
| ol.algo li { margin-bottom: calc(1.5 * var(--u)); font-size: var(--fs-3); line-height: 1.3; } | |
| /* claim-pills: provenance mini-table (numeric-heavy posters only) */ | |
| .claim-pills { width: 100%; border-collapse: collapse; font-family: var(--font-sans); font-size: var(--fs-2); } | |
| .claim-pills td { | |
| border-bottom: 1px solid var(--border-soft); | |
| padding: calc(1.5 * var(--u)) calc(3 * var(--u)); | |
| } | |
| .claim-pills .cp-id { | |
| font-weight: 700; color: var(--accent-deep); background: var(--accent-light); | |
| border-radius: calc(1.5 * var(--u) * var(--rs)); padding: 0 calc(2.5 * var(--u) * var(--rs)); white-space: nowrap; | |
| } | |
| .claim-pills .cp-fact { color: var(--accent-deep); font-weight: 700; } | |
| .claim-pills .cp-derived { color: var(--text-secondary); font-weight: 700; } | |
| /* Grid-blowout guards: (1) columns may shrink below min-content so a | |
| wide equation can never widen its track and squeeze siblings; | |
| (2) over-wide display math scales down to fit its box instead of | |
| blowing out the card (SVG keeps aspect via height:auto). */ | |
| .body-grid > .column { min-width: 0; } | |
| .card { min-width: 0; } | |
| .eqn mjx-container > svg { max-width: 100%; height: auto; } | |
| /* ── Utility classes — defined LAST so equal-specificity ties | |
| resolve in the utility's favor (source order). ── */ | |
| .fs-1 { font-size: var(--fs-1); } | |
| .fs-2 { font-size: var(--fs-2); } | |
| .fs-3 { font-size: var(--fs-3); } | |
| .fs-4 { font-size: var(--fs-4); } | |
| .fs-5 { font-size: var(--fs-5); } | |
| .fs-6 { font-size: var(--fs-6); } | |
| .fs-7 { font-size: var(--fs-7); } | |
| .fs-8 { font-size: var(--fs-8); } | |
| .fs-9 { font-size: var(--fs-9); } | |
| .mt-1 { margin-top: calc(1 * var(--u)); } | |
| .mt-2 { margin-top: calc(2 * var(--u)); } | |
| .mt-3 { margin-top: calc(3 * var(--u)); } | |
| .mt-4 { margin-top: calc(4 * var(--u)); } | |
| .mt-5 { margin-top: calc(5 * var(--u)); } | |
| .mt-6 { margin-top: calc(6 * var(--u)); } | |
| .mt-7 { margin-top: calc(7 * var(--u)); } | |
| .mt-8 { margin-top: calc(8 * var(--u)); } | |
| .mt-9 { margin-top: calc(9 * var(--u)); } | |
| .mt-10 { margin-top: calc(10 * var(--u)); } | |
| .mt-12 { margin-top: calc(12 * var(--u)); } | |
| .mt-14 { margin-top: calc(14 * var(--u)); } | |
| .mb-1 { margin-bottom: calc(1 * var(--u)); } | |
| .mb-2 { margin-bottom: calc(2 * var(--u)); } | |
| .mb-3 { margin-bottom: calc(3 * var(--u)); } | |
| .mb-4 { margin-bottom: calc(4 * var(--u)); } | |
| .w-45 { width: 45%; } | |
| .w-50 { width: 50%; } | |
| .w-55 { width: 55%; } | |
| .w-60 { width: 60%; } | |
| .w-65 { width: 65%; } | |
| .w-70 { width: 70%; } | |
| .w-75 { width: 75%; } | |
| .w-80 { width: 80%; } | |
| .w-85 { width: 85%; } | |
| .w-90 { width: 90%; } | |
| .w-95 { width: 95%; } | |
| .w-100 { width: 100%; } | |
| .text-secondary { color: var(--text-secondary); } | |
| .text-muted { color: var(--text-muted); } | |
| .nowrap { white-space: nowrap; } | |
| .text-center { text-align: center; } | |
| /* ========================================================= | |
| PRINT OVERRIDE — KEEP LAST so it wins source-order ties. | |
| ========================================================= */ | |
| @media print { | |
| html, body { background: white; } | |
| .poster { margin: 0; box-shadow: none; width: 60in; height: 36in; page-break-after: avoid; } | |
| :root { --u: 1mm; } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="poster" data-measure-role="poster"> | |
| <!-- =========================== HEADER =========================== --> | |
| <header class="header" data-measure-role="header"> | |
| <div class="venue-badge"> | |
| <div class="vb-venue">ICML</div> | |
| <div class="vb-year">2026</div> | |
| <div class="vb-tag">REPRO CHALLENGE</div> | |
| </div> | |
| <div class="title-block"> | |
| <h1 class="title">Reproducing: The Interplay Between <span class="accent">Interpolation and Aggregation</span> in Regression — Optimal Sample Complexity</h1> | |
| <div class="subtitle">Independent reproduction — ICML 2026 Reproducibility Challenge</div> | |
| <div class="authors-line"> | |
| <span class="author">SabaPivot</span> | |
| <span class="aff">Independent reimplementation of arXiv 2605.29819 · learning-theory paper, no code released by the authors</span> | |
| </div> | |
| </div> | |
| <div class="right-block"> | |
| <div class="qr-block"> | |
| <div class="qr-label">arXiv 2605.29819</div> | |
| <div class="qr-label">OpenReview qXlovWytwg</div> | |
| <div class="qr-label">6 / 6 claims reproduced</div> | |
| </div> | |
| </div> | |
| </header> | |
| <!-- ===================== VERDICT BANNER ===================== --> | |
| <section class="framework-banner" data-measure-role="banner"> | |
| <div class="fb-text"> | |
| <span class="fb-label">Verdict</span> | |
| Every construction is rebuilt as an explicit finite hypothesis class; the $\gamma$-graph and $\gamma$-OIG dimensions are computed <strong>exhaustively</strong> from Definitions 3.1/3.2/3.9 and every aggregation rule is Monte-Carloed. The $\Omega(d_\gamma/\varepsilon)$ barrier, the total failure of finite interpolating aggregation, the $O(d_\gamma/n)$ median-of-three rate and the extra $\ln(1/\varepsilon)$ for proper learners <strong>all reproduce</strong>. | |
| </div> | |
| <div class="banner-stats"> | |
| <div class="bs-item"><div class="bs-num">6/6</div><div class="bs-label">claims<br>verified</div></div> | |
| <div class="bs-item"><div class="bs-num">$0</div><div class="bs-label">CPU only,<br>< 12 min</div></div> | |
| <div class="bs-item"><div class="bs-num">−0.999</div><div class="bs-label">fitted $n$-exponent,<br>median-of-3</div></div> | |
| <div class="bs-item"><div class="bs-num">0.77</div><div class="bs-label">measured $\ln(1/\varepsilon)$<br>slope, proper</div></div> | |
| </div> | |
| </section> | |
| <!-- ============================ BODY ============================ --> | |
| <div class="body-grid" data-measure-role="body"> | |
| <!-- ============ COLUMN 1 : SETTING, MAP, VERDICT ============ --> | |
| <div class="column" data-measure-role="column"> | |
| <div class="card highlight" data-measure-role="card" | |
| data-logbook-target="executive-summary" data-logbook-label="Executive summary"> | |
| <div class="section-title"><span class="num">1</span><span class="st-text">Setting & Question</span></div> | |
| <p class="body-text"> | |
| <span class="keyword">Realizable regression</span>, <span class="keyword">cutoff loss</span> | |
| $L^\gamma_D(h)=\Pr_{(x,y)\sim D}[|h(x)-y|>\gamma]$. An <span class="keyword">interpolator</span> returns a member | |
| of $H$ matching every training label; a rule is <span class="keyword">proper</span> if its output is one of its | |
| inputs, <span class="keyword">interpolating</span> if it lies in $[\min_i z_i,\max_i z_i]$. | |
| </p> | |
| <div class="eqn mt-5"> | |
| <span class="label">Definitions 3.1 & 3.2 — $\gamma$-graph dimension</span> | |
| $$\forall b\in\{0,1\}^d\;\exists h_b\in H:\; b_i=0 \Rightarrow h_b(x_i)=h(x_i),\quad b_i=1 \Rightarrow |h_b(x_i)-h(x_i)|>\gamma$$ | |
| </div> | |
| <p class="body-text mt-6"> | |
| Does aggregating interpolators beat a single one, which measure governs it, and how does it compare to | |
| proper and general improper learning? | |
| </p> | |
| <div class="flow-strip"> | |
| <div class="step"><span class="step-name">Lower</span>$\Omega(d_\gamma/\varepsilon)$</div> | |
| <div class="arrow">→</div> | |
| <div class="step"><span class="step-name">Upper</span>median-of-3 $O(d_\gamma/n)$</div> | |
| <div class="arrow">→</div> | |
| <div class="step step--final"><span class="step-name">Proper</span>$\Omega(\tfrac{d_\gamma}{\varepsilon}\ln\tfrac1\varepsilon)$</div> | |
| </div> | |
| </div> | |
| <div class="card" data-measure-role="card"> | |
| <div class="section-title"><span class="num">2</span><span class="st-text">Reproduction Map</span></div> | |
| <table class="claim-pills"> | |
| <tbody> | |
| <tr><td class="cp-id">C1</td><td>Def 3.1/3.2 — $d_\gamma$ characterises aggregation</td><td class="cp-fact">exhaustive</td></tr> | |
| <tr><td class="cp-id">C2</td><td>Thm 3.5 — proper aggregation needs $\Omega(d_\gamma/\varepsilon)$</td><td class="cp-derived">simulated</td></tr> | |
| <tr><td class="cp-id">C3</td><td>Thm 3.8 — OIG $\le 3$ yet still $\Omega(d_\gamma/\varepsilon)$</td><td class="cp-derived">simulated</td></tr> | |
| <tr><td class="cp-id">C4</td><td>Thm 3.10 — finite interpolating aggregation fails</td><td class="cp-derived">simulated</td></tr> | |
| <tr><td class="cp-id">C5</td><td>Thm 3.11 — median-of-three is $O(d_\gamma/n)$</td><td class="cp-fact">exact + MC</td></tr> | |
| <tr><td class="cp-id">C6</td><td>Thm 3.12 — proper learners pay $\ln(1/\varepsilon)$</td><td class="cp-fact">exact + MC</td></tr> | |
| </tbody> | |
| </table> | |
| <p class="body-text fs-3 mt-2"> | |
| <span class="cp-fact">exhaustive</span> = every witness, subset and $2^d$ pattern. | |
| <span class="cp-derived">simulated</span> = seeded Monte-Carlo on the paper's hard distributions. | |
| </p> | |
| </div> | |
| <div class="card" data-measure-role="card" | |
| data-logbook-target="conclusion" data-logbook-label="Conclusion"> | |
| <div class="section-title"><span class="num">3</span><span class="st-text">Scope, Cost & Verdict</span></div> | |
| <ul class="fs-3 mt-3"> | |
| <li><span class="keyword">Nothing quoted from the proofs:</span> every construction is rebuilt as an explicit matrix and re-measured.</li> | |
| <li><span class="keyword">All six claims hold;</span> no contradiction anywhere in the tested envelope, and every stated assumption was probed from both sides.</li> | |
| <li><span class="keyword">Honest scope:</span> the classes live over $\mathbb{N}$; truncating to $[k_u]$ caps $d_\gamma$ at $\min(d,k_u-d)$, and the truncated Thm 3.8/3.10 classes have $\gamma$-OIG dimension $2$ rather than $3$. Both are verified, not hidden.</li> | |
| </ul> | |
| <div class="keybox mt-10"> | |
| <div class="kb-item"><div class="kb-num">CPU</div><div class="kb-label">no GPU,<br>no API key</div></div> | |
| <div class="kb-item"><div class="kb-num">12m</div><div class="kb-label">total<br>wall clock</div></div> | |
| <div class="kb-item"><div class="kb-num">$0</div><div class="kb-label">total<br>cost</div></div> | |
| </div> | |
| <div class="callout emph mt-6"> | |
| <strong>Bottom line.</strong> $d_\gamma$ governs aggregation, the median of three interpolators is optimal among such rules, and it strictly beats every proper learner. | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ============ COLUMN 2 : CLAIMS 1 & 2 ============ --> | |
| <div class="column" data-measure-role="column"> | |
| <div class="card highlight" data-measure-role="card" | |
| data-logbook-target="claim-1-claim-1-gamma-graph-dimension-definition" | |
| data-logbook-label="Claim 1: gamma-graph dimension (Def 3.1/3.2)"> | |
| <div class="section-title"><span class="num">4</span><span class="st-text">Claim 1 — $d_\gamma$, Computed Exhaustively</span></div> | |
| <p class="body-text fs-3"> | |
| Definitions 3.1/3.2 transcribed to code and evaluated over <strong>every</strong> witness, subset and sign | |
| pattern. Shattering is downward closed in the point set, so the search runs level-wise and is exact rather | |
| than sampled; a set counts only when all $2^d$ patterns are realised. | |
| </p> | |
| <table class="result-table"> | |
| <thead> | |
| <tr><th class="method">class</th><th>$|H|$</th><th>computed $d_\gamma$</th><th class="derived">predicted</th><th>ok</th></tr> | |
| </thead> | |
| <tbody> | |
| <tr><td class="method">$\{0,1\}^X$, $|X|=5$</td><td>32</td><td class="best">5</td><td class="derived">5</td><td>✓</td></tr> | |
| <tr><td class="method">thresholds on 8 pts</td><td>9</td><td class="best">1</td><td class="derived">1</td><td>✓</td></tr> | |
| <tr><td class="method">Thm 3.8 class, $k_u{=}10,d{=}5$</td><td>252</td><td class="best">5</td><td class="derived">5</td><td>✓</td></tr> | |
| <tr><td class="method">Thm 3.12 class, $d{=}4$</td><td>57</td><td class="best">4</td><td class="derived">4</td><td>✓</td></tr> | |
| <tr><td class="method">Thm 3.10 block $k{=}9$</td><td>84</td><td class="best">3</td><td class="derived">$\sqrt{k}=3$</td><td>✓</td></tr> | |
| <tr><td class="method">Thm 3.10 block $k{=}16$</td><td>1820</td><td class="best">4</td><td class="derived">$\sqrt{k}=4$</td><td>✓</td></tr> | |
| <tr class="ours"><td class="method">Thm 3.8, $k_u{=}9,d{=}5$ (truncated)</td><td>126</td><td>4</td><td class="derived">$\min(d,k_u{-}d)$</td><td>✓</td></tr> | |
| </tbody> | |
| </table> | |
| <p class="body-text fs-3"> | |
| <strong>25 / 25</strong> exhaustive checks match. $d_\gamma$ is decoupled from $|H|$ ($d_\gamma=2$ at both | |
| $|H|=15$ and $|H|=28$) and moves with $\gamma$: on $\{0,0.3\}^4$, $d_{0.2}=4$ but $d_{0.5}=0$. | |
| </p> | |
| <div class="callout mt-1"> | |
| <strong>Characterisation.</strong> The sample size median-of-three actually needs scales as | |
| $\log n(\varepsilon) = 1.05\,\log d_\gamma$ — linear in $d_\gamma$, as the measure claims. | |
| </div> | |
| </div> | |
| <div class="card" data-measure-role="card" | |
| data-logbook-target="claim-2-claim-2-omega-d-eps-for-proper-aggregation" | |
| data-logbook-label="Claim 2: Omega(d/eps) for proper aggregation (Thm 3.5)"> | |
| <div class="section-title"><span class="num">5</span><span class="st-text">Claim 2 — Thm 3.5, $\Omega(d_\gamma/\varepsilon)$</span></div> | |
| <p class="body-text fs-3"> | |
| Hard instance rebuilt from scratch: a $\gamma$-shattered set of size $d_\gamma$, Ehrenfeucht masses | |
| $1-2\varepsilon$ / $2\varepsilon/(d_\gamma{-}1)$, and the worst-case interpolator that is $\gamma$-far from the | |
| witness on every <em>unobserved</em> point. Each $S_j\subseteq S$ inherits those misses. | |
| </p> | |
| <table class="result-table"> | |
| <thead> | |
| <tr><th class="method">sub-sequences</th><th>rule</th><th>$E[L]/\varepsilon$</th><th>ok</th></tr> | |
| </thead> | |
| <tbody> | |
| <tr><td class="method">$m=1$</td><td>median</td><td class="best">1.86</td><td>✓</td></tr> | |
| <tr><td class="method">bagging $m=101$</td><td>median</td><td class="best">1.86</td><td>✓</td></tr> | |
| <tr><td class="method">bagging $m=101$</td><td>best proper rule</td><td class="best">1.86</td><td>✓</td></tr> | |
| <tr><td class="method">disjoint 3-split</td><td>min / order-stat</td><td class="best">1.86</td><td>✓</td></tr> | |
| <tr><td class="method">leave-one-out</td><td>median</td><td class="best">18.73</td><td>✓</td></tr> | |
| <tr class="ours"><td class="method">any</td><td>const-0 (not proper)</td><td>0.00</td><td>—</td></tr> | |
| </tbody> | |
| </table> | |
| <p class="body-text fs-3"> | |
| A Monte-Carlo over five sub-sequence constructions and seven rules matches the closed form | |
| $\sum_i p_i(1-p_i)^n$ to three digits; the strongest possible proper rule (pick, at every $x$, whichever | |
| input is closest to the label) does no better than the plain median. | |
| </p> | |
| <p class="body-text fs-3"> | |
| <strong>30 / 30</strong> cells over $d_\gamma\in\{2..64\}$, $\varepsilon\in\{0.01..0.2\}$ satisfy | |
| $E[L]>\varepsilon$ at $n=\lfloor d_\gamma/(32\varepsilon)\rfloor$; min margin $1.77\times$. Last row is the | |
| <span class="keyword">assumption probe</span>: drop properness and the bound vanishes. | |
| </p> | |
| </div> | |
| </div> | |
| <!-- ============ COLUMN 3 : CLAIMS 3 & 4 ============ --> | |
| <div class="column" data-measure-role="column"> | |
| <div class="card highlight" data-measure-role="card" | |
| data-logbook-target="claim-3-claim-3-d-gamma-vs-oig-3-separation" | |
| data-logbook-label="Claim 3: d_gamma vs OIG-3 separation (Thm 3.8)"> | |
| <div class="section-title"><span class="num">6</span><span class="st-text">Claim 3 — Thm 3.8, the Separation</span></div> | |
| <p class="body-text fs-3"> | |
| The Cantor-style class $H=\{h_A: A\subset\mathbb{N}, |A|=d\}$: $h_A=0$ on $A$, a unique $\gamma_A\in(\gamma,1]$ | |
| elsewhere. Both dimensions computed exhaustively; then a best-effort finite aggregation zeroes every observed | |
| point and guesses the rest. | |
| </p> | |
| <div class="figure"> | |
| <img src="fig4_separation.png" data-source="paper" data-asset-id="fig4-separation" class="w-100" | |
| alt="Left: the gap between finite aggregation and a general improper learner grows with the graph dimension. Right: the empirical sample threshold collapses onto a line proportional to d over epsilon."> | |
| <div class="caption fs-2"> | |
| <strong>Left:</strong> the gap to a general improper learner grows $1.4\times\to11.0\times$ as $d_\gamma$ | |
| goes $32\to256$. <strong>Right:</strong> $n^*(\varepsilon)$ collapses onto $0.339\,d_\gamma/\varepsilon$, | |
| CV $1.2\%$. | |
| </div> | |
| </div> | |
| <p class="body-text fs-3 mt-2"> | |
| The blocks give $d_\gamma=\sqrt{k}$, so their union has <strong>infinite</strong> $\gamma$-graph dimension | |
| while the $\gamma$-OIG dimension stays constant — the regime Claim 4 exploits. | |
| </p> | |
| <p class="body-text fs-3 mt-2"> | |
| <strong>64 / 64</strong> cells hold at $n=\lfloor d_\gamma/(128\varepsilon)\rfloor$ (min margin $1.96\times$), | |
| for $m\in\{1,3,10,100\}$ and mean / median / midrange / min / max alike — each verified | |
| <em>interpolating</em> by Def. 3.7 first. Exhaustive $\gamma$-OIG dimension $\le 3$ throughout. | |
| </p> | |
| </div> | |
| <div class="card" data-measure-role="card" | |
| data-logbook-target="claim-4-claim-4-finite-interpolating-aggregation-fails" | |
| data-logbook-label="Claim 4: finite interpolating aggregation fails (Thm 3.10)"> | |
| <div class="section-title"><span class="num">7</span><span class="st-text">Claim 4 — Thm 3.10, Total Failure</span></div> | |
| <p class="body-text fs-3"> | |
| Split space $X=\bigcup_{k=i^2}\{(k,x):x\le k\}$, $|A|=\sqrt{k}$. With $k_u=\omega(n'^2)$ the $m$ selected | |
| hypotheses zero only $m\sqrt{k_u}$ of $k_u$ points, so a $1-m/\sqrt{k_u}$ fraction is mispredicted by | |
| <em>every</em> interpolating rule. | |
| </p> | |
| <table class="result-table"> | |
| <thead> | |
| <tr><th class="method">predictor</th><th>$E[L^\gamma_D]$</th><th class="derived">note</th></tr> | |
| </thead> | |
| <tbody> | |
| <tr><td class="method">finite interpolating agg., $n'{=}10^4$</td><td class="best">0.99501</td><td class="derived">$\ge 1-\varepsilon$</td></tr> | |
| <tr><td class="method">random guess, uniform $[0,1]$</td><td>0.90024</td><td class="derived">$1-\gamma = 0.9$</td></tr> | |
| <tr><td class="method">random guess, $\gamma$-net</td><td>0.83311</td><td class="derived">$1-\Theta(\gamma)$</td></tr> | |
| <tr class="ours"><td class="method">$m=10\sqrt{k_u}$ (infinite agg.)</td><td>0.00005</td><td class="derived">escape 1</td></tr> | |
| <tr class="ours"><td class="method">const-0 (non-interpolating)</td><td>0.00000</td><td class="derived">escape 2</td></tr> | |
| </tbody> | |
| </table> | |
| <p class="body-text fs-3 mt-4"> | |
| <strong>27 / 27</strong> cells satisfy $E[L]\ge 1-\varepsilon$; min observed loss $0.951$. Loss does | |
| <em>not</em> fall with $n'$: $0.994$ at $n'=1$, $0.995$ at $n'=10^4$. | |
| </p> | |
| <div class="callout emph"> | |
| <strong>Worse than trivial — and both exits are real.</strong> At $\varepsilon=0.02\lt\gamma=0.1$ it | |
| loses to random guessing; holding $k_u$ fixed and raising $m$ walks the loss from $0.99995$ down to $0.368$ | |
| at $m=\sqrt{k_u}$, and a non-interpolating rule drives it to $0$. | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ============ COLUMN 4 : CLAIMS 5 & 6 ============ --> | |
| <div class="column" data-measure-role="column"> | |
| <div class="card highlight" data-measure-role="card" | |
| data-logbook-target="claim-5-claim-5-median-of-three-o-d-n" | |
| data-logbook-label="Claim 5: median-of-three O(d/n) (Thm 3.11)"> | |
| <div class="section-title"><span class="num">8</span><span class="st-text">Claim 5 — Thm 3.11, Median-of-Three</span></div> | |
| <p class="body-text fs-3"> | |
| Structural step, re-derived executably: over $4{,}000{,}000$ random triples and a $41^4$ grid the median is | |
| $\gamma$-far from $y$ <strong>only</strong> when two of the three are — | |
| <span class="keyword">0 violations</span>. Then the worst case over mass profiles, $q_i=(1-p_i)^n$: | |
| </p> | |
| <div class="eqn"> | |
| $$E[L^\gamma_D(M)] = \sum_i p_i(3q_i^2 - 2q_i^3), \qquad \max_p \tfrac{n}{d_\gamma}E[L^\gamma_D(M)] = 0.3468$$ | |
| </div> | |
| <div class="figure"> | |
| <img src="fig1_median3_rate.png" data-source="paper" data-asset-id="fig1-median3" class="w-45" | |
| alt="Log-log plot of worst-case median-of-three cutoff loss against sample size for three graph dimensions, all parallel to a reference line of slope minus one."> | |
| <div class="caption fs-2"> | |
| $n\,E[L]/d_\gamma\in[0.297,0.347]$ over $n/d_\gamma$ from $1$ to $1000$ and $d_\gamma$ from $2$ to $128$ | |
| — bounded, so <strong>no hidden $\log n$</strong>. | |
| </div> | |
| </div> | |
| <p class="body-text fs-3"> | |
| Fitted exponents $-0.999$ in $n$, $+1.000$ in $d_\gamma$ ($R^2=1.000$); $n(\varepsilon)=0.347\,d_\gamma/\varepsilon$ | |
| at CV $0.3\%$, matching Claims 2–3. Real Monte-Carlo agrees to $\le 0.42\%$. | |
| </p> | |
| </div> | |
| <div class="card" data-measure-role="card" | |
| data-logbook-target="claim-6-claim-6-proper-learners-need-extra-ln-1-eps" | |
| data-logbook-label="Claim 6: proper learners need extra ln(1/eps) (Thm 3.12)"> | |
| <div class="section-title"><span class="num">9</span><span class="st-text">Claim 6 — Thm 3.12, Proper Learning</span></div> | |
| <p class="body-text fs-3"> | |
| The unobserved points are exchangeable, so a proper learner places its $d_\gamma-1$ $\gamma$-far points | |
| blindly. Five strategies (random / lowest / highest / spread / middle) land within <strong>0.05%</strong> | |
| of each other and of the closed form. | |
| </p> | |
| <div class="figure mt-2"> | |
| <img src="fig2_proper_log_factor.png" data-source="paper" data-asset-id="fig2-proper" class="w-45" | |
| alt="The rescaled sample complexity of a proper learner rises linearly in the log of one over epsilon, while median-of-three stays flat."> | |
| <div class="caption fs-2"> | |
| $n^*(\varepsilon)\varepsilon/d_\gamma = 0.77\ln(1/\varepsilon) - 1.17$, $R^2 = 0.9988$: the extra | |
| $\ln(1/\varepsilon)$, measured. A constant model is refused — the ratio moves $4.45\times$. | |
| </div> | |
| </div> | |
| <p class="body-text fs-3"> | |
| <strong>25 / 25</strong> cells satisfy $E[L]\ge 4\varepsilon/3$ at the theorem's $n$; min margin $2.25\times$. | |
| </p> | |
| <div class="callout emph"> | |
| <strong>Aggregation wins on the same instance.</strong> Median-of-three beats the best proper learner by | |
| $17\times$ to $107\times$ at identical $(d_\gamma,\varepsilon,k_u,n)$. | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ============================ FOOTER ============================ --> | |
| <div class="footer" data-measure-role="footer"> | |
| <div> | |
| <strong class="method-name">Interpolation and aggregation in realizable regression</strong> · | |
| Independent reproduction, ICML 2026 Reproducibility Challenge · all six claims verified on CPU, $0. | |
| </div> | |
| <div> | |
| Paper: <span class="repo">arXiv:2605.29819</span> · | |
| OpenReview: <span class="repo">qXlovWytwg</span> · | |
| Reproduction: <span class="repo">SabaPivot</span> | |
| </div> | |
| </div> | |
| </div> | |
| </body> | |
| </html> | |
Xet Storage Details
- Size:
- 62.1 kB
- Xet hash:
- 01d443520d75adfbcd23550a566199a8693ebd619e763bc78178a09821849bb6
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.