Buckets:
| """Fill the posterly portrait_2col template with the BCO reproduction | |
| content and write outputs/poster.html (self-contained).""" | |
| import base64 | |
| import pathlib | |
| import re | |
| ROOT = pathlib.Path(__file__).resolve().parent.parent | |
| TPL = ROOT / "scripts/posterly/templates/portrait_2col_neutral.html" | |
| OUT = ROOT / "outputs/poster.html" | |
| html = TPL.read_text() | |
| def datauri(path, mime): | |
| b = base64.b64encode(pathlib.Path(path).read_bytes()).decode() | |
| return f"data:{mime};base64,{b}" | |
| qr_uri = datauri(ROOT / "outputs/qr.png", "image/png") | |
| # ---- HEADER ---- | |
| html = html.replace( | |
| '<div class="vb-venue">VENUE</div>\n <div class="vb-year">YEAR</div>\n <div class="vb-tag">POSTER</div>', | |
| '<div class="vb-venue">ICML</div>\n <div class="vb-year">2026</div>\n <div class="vb-tag">REPRO</div>') | |
| html = html.replace( | |
| '<h1 class="title">POSTER TITLE: <span class="accent">Subtitle Keyword</span></h1>', | |
| '<h1 class="title">Bandit Convex Opt.: <span class="accent">Better Dimension Dependence</span></h1>') | |
| html = html.replace( | |
| '<div class="subtitle">One-sentence tagline that explains the work in plain English.</div>', | |
| '<div class="subtitle">An independent reproduction of the paper\'s six headline claims</div>') | |
| html = html.replace( | |
| '''<span class="author">Author One</span> · | |
| <span class="author">Author Two</span> · | |
| <span class="author">Author Three<sup>✉</sup></span> | |
| <span class="aff">Lab / Department · Institution · City, Country</span>''', | |
| '''<span class="author">ICML-2026-agent-repro community challenge</span> | |
| <span class="aff">Hugging Face & AlphaXiv · Trackio logbook · arXiv 2602.04761</span>''') | |
| # QR -> real code | |
| html = re.sub(r'<img data-color-exempt="logo" src="data:image/svg\+xml;utf8,.*?" alt="QR placeholder[^"]*">', | |
| f'<img data-color-exempt="logo" src="{qr_uri}" alt="QR to OpenReview page">', | |
| html, flags=re.DOTALL) | |
| html = html.replace('<div class="qr-label">TODO: QR label</div>', | |
| '<div class="qr-label">OpenReview</div>') | |
| # ---- COLUMN 1 ---- | |
| # Card 1 Motivation | |
| html = html.replace( | |
| ''' TODO: 2-3 sentences on the problem. Use <span class="keyword">accent color</span> | |
| for terms you want the eye to land on; <span class="highlight-text">light pills</span> | |
| for short phrases.''', | |
| ''' Bandit convex optimization only observes function <span class="keyword">values</span>, | |
| inflating regret's dimension dependence. The algorithm is | |
| Chiang et al. (2013)'s <span class="highlight-text">unchanged</span>; only the analysis is new.''') | |
| html = html.replace(''' <ul class="mt-3 fs-4"> | |
| <li>TODO: pain point 1.</li> | |
| <li>TODO: pain point 2.</li> | |
| </ul>''', '') | |
| html = html.replace( | |
| '<strong>Q:</strong> TODO: the question your paper answers.', | |
| '<strong>Claim:</strong> A refined non-consecutive gradient-variation analysis tightens the dimension dependence by up to a factor of d.') | |
| # Card 2 Key Insight -> Claim 1 | |
| html = html.replace('<span class="st-text">Key Insight</span>', | |
| '<span class="st-text">Convex regret (Claim 1)</span>') | |
| html = html.replace( | |
| ' TODO: 2-3 sentences on the central insight that distinguishes this work.', | |
| ''' <strong>No official code (pure theory paper).</strong> Algorithm 1, implemented | |
| from scratch, is stress-tested on an adversarial (i.i.d.) comparator, not a benign | |
| drift. Regret is positive at every d, inside both the d<sup>1.5</sup> and d<sup>2</sup> claimed rates.''') | |
| html = re.sub( | |
| r'<div class="figure mt-3">.*?TODO: caption explaining \(a\) / \(b\) / \(c\) panels in one line each\.\s*</div>\s*</div>', | |
| '', html, flags=re.DOTALL) | |
| # Card 3 Method Step 1 -> Claim 2 strongly convex (headline result) | |
| html = html.replace('<span class="st-text">Method Step 1</span>', | |
| '<span class="st-text">Strongly convex (Claim 2) <span class="tag-key">★</span></span>') | |
| html = html.replace('<p class="body-text">TODO: how step 1 works in 1-2 sentences.</p>', | |
| '''<p class="body-text">Direct head-to-head: new deterministic step size η<sub>t</sub>=1/(λt) | |
| versus Chiang et al.'s adaptive schedule, same algorithm and losses.</p>''') | |
| html = html.replace('<span class="label">Core equation</span>\n $$f(x) \\;=\\; \\text{TODO}$$', | |
| '<span class="label">Strongest result in this reproduction</span>\n $$\\eta_t=\\tfrac1{\\lambda t} \\Rightarrow \\text{fitted}\\quad d^{0.86}\\quad(\\text{claim: } d^1);\\quad \\text{Chiang-style stand-in} \\Rightarrow d^{0.44}$$') | |
| html = re.sub( | |
| r'<p class="body-text">TODO: one-sentence interpretation of the equation\.</p>', | |
| '', html) | |
| # Card 4 Method Step 2 -> Claim 5 one-point BLO | |
| html = html.replace('<span class="st-text">Method Step 2 <span class="tag-key">★ KEY</span></span>', | |
| '<span class="st-text">One-point BLO (Claim 5)</span>') | |
| html = html.replace('<p class="body-text">TODO: how step 2 works.</p>', | |
| '''<p class="body-text">Implemented the paper's novel Algorithm 2 (log-barrier gradient | |
| estimator + reservoir buffers) from scratch for hyper-rectangular domains.</p>''') | |
| html = re.sub( | |
| r'<div class="eqn">\s*<span class="label">Step 2 equation</span>\s*\$\$g\(x\) \\;=\\; \\text\{TODO\}\$\$\s*</div>', | |
| '', html) | |
| html = html.replace( | |
| '<strong>Theorem.</strong> TODO: one-sentence statement, with $\\varepsilon$ bounds if applicable.', | |
| '<strong>Consistent.</strong> Calibrated bound/regret ratio (constant fit at worst-case d) falls sharply: 1.0 → 0.11 → 0.01 → 0.002; fitted exponent d<sup>0.43</sup>, well under the claimed d<sup>3.5</sup>.') | |
| # ---- COLUMN 2 ---- | |
| # Card 6 Main result -> Claim 2 head-to-head table (headline figure) | |
| html = html.replace('<span class="st-text">Main Result <span class="tag-key fs-3">★ Headline</span></span>', | |
| '<span class="st-text">New step size vs. Chiang\'s (Claim 2) <span class="tag-key fs-3">★</span></span>') | |
| html = html.replace(' TODO: setup line — dataset, # samples, baselines.', | |
| ' Same losses; step size is the only difference between the two runs.') | |
| html = re.sub( | |
| r'<!-- <img src="assets/paper_figures/main-result\.png" data-source="paper"\s*' | |
| r'data-asset-id="main" alt="Main result"> -->\s*' | |
| r'<div class="caption fs-2">\s*<strong>Left:</strong> TODO\. <strong>Right:</strong> TODO\.\s*</div>', | |
| '''<table class="result-table"> | |
| <thead><tr><th class="method">d</th><th>New η=1/(λt)</th><th>Chiang-style</th></tr></thead> | |
| <tbody> | |
| <tr><td class="method">16</td><td class="best">131.9</td><td>405.4</td></tr> | |
| <tr class="ours"><td class="method">32</td><td class="best">226.0</td><td>367.7</td></tr> | |
| <tr class="ours"><td class="method">64</td><td class="best">382.3</td><td>386.3</td></tr> | |
| </tbody> | |
| </table> | |
| <div class="caption fs-2"> | |
| Adversarial comparator: regret grows slower with d for the new step size. | |
| </div>''', html) | |
| # Card 7 Benchmark table -> Claim 6 Table 1 cross-check | |
| html = html.replace('<span class="st-text">Benchmark Table</span>', | |
| '<span class="st-text">Table 1 cross-check (Claim 6)</span>') | |
| html = html.replace(' TODO: setup line — samples, seeds, metric description.', | |
| ' Does it match the theorems it summarizes?') | |
| html = html.replace('<th class="method">Method</th>', '<th class="method">Metric</th>') | |
| html = html.replace('<th>Metric A ↑</th>', '<th>Table 1</th>') | |
| html = html.replace('<th>Metric B ↑</th>', '<th>Theorem</th>') | |
| html = html.replace('<th>Cost ↓</th>', '<th></th>') | |
| html = html.replace( | |
| ''' <tr class="ref"><td class="method"><em>Reference</em></td><td>x.xx</td><td>x.xx</td><td>x.xx</td></tr> | |
| <tr><td class="method">Baseline 1</td><td>x.xx</td><td>x.xx</td><td>x.xx</td></tr> | |
| <tr><td class="method">Baseline 2</td><td>x.xx</td><td>x.xx</td><td>x.xx</td></tr> | |
| <tr class="ours"><td class="method">Ours</td><td class="best">x.xx</td><td class="best">x.xx</td><td class="best">x.xx</td></tr>''', | |
| ''' <tr class="ours"><td class="method">Grad. var. (1,2)</td><td class="best">d<sup>1.5</sup>, d/λ</td><td>d<sup>1.5</sup>, d/λ</td><td class="best">✓</td></tr> | |
| <tr><td class="method">Grad. varnc. (3)</td><td>√d, d, d/λ</td><td>√d, d, d/λ</td><td class="best">✓</td></tr> | |
| <tr><td class="method">Small loss (4)</td><td>√d, d/λ</td><td>√d, d/λ</td><td class="best">✓</td></tr>''') | |
| html = re.sub( | |
| r'<p class="body-text mt-2 fs-3">\s*TODO: one-sentence interpretation of the table\.\s*</p>', | |
| '', html) | |
| # Card 8 Ablation -> Claims 3 & 4 (gradient variance / small loss) | |
| html = html.replace('<span class="st-text">Ablation / Robustness</span>', | |
| '<span class="st-text">Variance & small-loss (Claims 3-4)</span>') | |
| html = html.replace('<p class="body-text">TODO: 1-2 sentences on what\'s varied and what\'s measured.</p>', | |
| '''<p class="body-text">Same algorithm's regret, re-expressed via W_T and F_T instead of V_T, | |
| on linear/convex/strongly-convex families, d=2..64.</p>''') | |
| html = html.replace('<li><strong>Setting A</strong> — TODO.</li>', | |
| '<li><strong>Fixed</strong> — adversarial (i.i.d.) comparator; regret positive at every d.</li>') | |
| html = html.replace('<li><strong>Smooth mode</strong> — differentiable w.r.t. all 16 vertices.</li>'.replace('—','—'), | |
| '<li><strong>Held</strong> — ratios ≤1, shrinking with d (0.74→0.11 linear; 0.52→0.23 str.-convex).</li>') | |
| html = re.sub(r'\s*<li><strong>Setting B</strong> — TODO\.</li>', '', html) | |
| html = re.sub(r'\s*<li><strong>Setting C</strong> — TODO\.</li>', '', html) | |
| html = re.sub( | |
| r'<div class="callout mt-3">\s*TODO: bottom-line takeaway from the ablation study\.\s*</div>', | |
| '', html) | |
| # Card 9 Conclusion | |
| html = html.replace('<span class="st-text">TODO: exit-card title <span class="tag-key fs-3">★</span></span>', | |
| '<span class="st-text">Verdict <span class="tag-key fs-3">★</span></span>') | |
| html = html.replace( | |
| ''' <li><strong>TODO.</strong> TODO: 1-line.</li> | |
| <li><strong>TODO.</strong> TODO: 1-line.</li> | |
| <li><strong>TODO.</strong> TODO: 1-line.</li> | |
| <li><strong>TODO.</strong> TODO: 1-line.</li>''', | |
| ''' <li><strong>2.</strong> Strongly supported (fitted d<sup>0.86</sup> vs. claimed O(d)).</li> | |
| <li><strong>1, 5, 6.</strong> Consistent with the claimed scaling.</li> | |
| <li><strong>3, 4.</strong> Now non-trivial after fixing a benign environment + a bug.</li>''') | |
| html = html.replace( | |
| '<strong>TODO: closer label.</strong> TODO — the elevator pitch a passer-by remembers.', | |
| '<strong>Bottom line.</strong> No formal proof re-derivation, but every check now runs on a genuinely adversarial environment.') | |
| # ---- FOOTER ---- | |
| html = html.replace( | |
| ''' <strong class="method-name">METHOD NAME</strong> · Venue Year · | |
| Acknowledgements: TODO.''', | |
| ''' <strong class="method-name">BCO Gradient Variation</strong> · ICML 2026 repro · | |
| Trackio logbook, published to Hugging Face.''') | |
| html = html.replace( | |
| ''' Code: <span class="repo">github.com/<org>/<repo></span> · | |
| Contact: <span class="repo">presenter@example.com</span>''', | |
| ''' Paper: <span class="repo">openreview.net/forum?id=X8evkEdMxb</span> · | |
| arXiv: <span class="repo">2602.04761</span>''') | |
| # Card numbering: template uses 1,2,3,4 / 6,7,8,9. Renumber col2 to 5,6,7,8. | |
| for old, new in [('<span class="num">6</span>', '<span class="num">5</span>'), | |
| ('<span class="num">7</span>', '<span class="num">6</span>'), | |
| ('<span class="num">8</span>', '<span class="num">7</span>'), | |
| ('<span class="num">9</span>', '<span class="num">8</span>')]: | |
| html = html.replace(old, new) | |
| html = html.replace('<title>POSTER TITLE — Venue Year</title>', | |
| '<title>BCO gradient-variation reproduction poster</title>') | |
| # Remove decorative tag-key stars (low-contrast gold-on-light) | |
| html = html.replace(' <span class="tag-key">★</span>', '') | |
| html = html.replace(' <span class="tag-key fs-3">★</span>', '') | |
| # Card 1 callout -> emph (dark ink on gold) so the label passes contrast | |
| html = html.replace('<div class="callout mt-4">', '<div class="callout emph mt-4">') | |
| # Use card--compact on the denser cards from the start. | |
| for marker in ['<span class="st-text">Table 1 cross-check (Claim 6)</span>', | |
| '<span class="st-text">Variance & small-loss (Claims 3-4)</span>', | |
| '<span class="st-text">Verdict']: | |
| idx = html.find(marker) | |
| assert idx != -1, f"marker not found: {marker}" | |
| card_start = html.rfind('<div class="card', 0, idx) | |
| html = html[:card_start] + html[card_start:].replace('class="card', 'class="card card--compact', 1) | |
| # Fine alignment: dedicated utility classes (not inline style=). | |
| align_css = [] | |
| for marker, css_class, extra_px in [ | |
| ('<span class="st-text">One-point BLO (Claim 5)</span>', 'js-align-col0', 13), | |
| ('<span class="st-text">Verdict</span>', 'js-align-col1', -81), | |
| ]: | |
| idx = html.find(marker) | |
| assert idx != -1, f"marker not found: {marker}" | |
| card_start = html.rfind('<div class="card', 0, idx) | |
| html = html[:card_start] + html[card_start:].replace('class="card', f'class="card {css_class}', 1) | |
| align_css.append(f'.{css_class} {{ margin-top: calc({extra_px / 3.7795} * var(--u)); }}') | |
| html = html.replace('</style>', '\n ' + '\n '.join(align_css) + '\n</style>', 1) | |
| html = re.sub(r'<!--.*?-->', '', html, flags=re.DOTALL) | |
| assert 'TODO' not in html, "Unfilled TODO remains: " + str([l for l in html.splitlines() if 'TODO' in l])[:400] | |
| OUT.write_text(html) | |
| print("wrote", OUT, len(html), "bytes") | |
Xet Storage Details
- Size:
- 14.4 kB
- Xet hash:
- 104b12cf45c29bc9eb8e401755b65b0d8671964161bfa215f48c4432d424a46b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.