sabaridsnfuji's picture
download
raw
14.4 kB
"""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> &middot;
<span class="author">Author Two</span> &middot;
<span class="author">Author Three<sup>&#9993;</sup></span>
<span class="aff">Lab / Department &middot; Institution &middot; City, Country</span>''',
'''<span class="author">ICML-2026-agent-repro community challenge</span>
<span class="aff">Hugging Face &amp; AlphaXiv &middot; Trackio logbook &middot; 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)&nbsp;<span class="tag-key">&#9733;</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 &eta;<sub>t</sub>=1/(&lambda;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&nbsp;<span class="tag-key">&#9733; 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 &rarr; 0.11 &rarr; 0.01 &rarr; 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&nbsp;<span class="tag-key fs-3">&#9733; Headline</span></span>',
'<span class="st-text">New step size vs. Chiang\'s (Claim 2)&nbsp;<span class="tag-key fs-3">&#9733;</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 &eta;=1/(&lambda;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 &#8593;</th>', '<th>Table 1</th>')
html = html.replace('<th>Metric B &#8593;</th>', '<th>Theorem</th>')
html = html.replace('<th>Cost &#8595;</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/&lambda;</td><td>d<sup>1.5</sup>, d/&lambda;</td><td class="best">&check;</td></tr>
<tr><td class="method">Grad. varnc. (3)</td><td>&radic;d, d, d/&lambda;</td><td>&radic;d, d, d/&lambda;</td><td class="best">&check;</td></tr>
<tr><td class="method">Small loss (4)</td><td>&radic;d, d/&lambda;</td><td>&radic;d, d/&lambda;</td><td class="best">&check;</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 &amp; 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> &mdash; 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('—','&mdash;'),
'<li><strong>Held</strong> &mdash; ratios &le;1, shrinking with d (0.74&rarr;0.11 linear; 0.52&rarr;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&nbsp;<span class="tag-key fs-3">&#9733;</span></span>',
'<span class="st-text">Verdict&nbsp;<span class="tag-key fs-3">&#9733;</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> &middot; Venue Year &middot;
Acknowledgements: TODO.''',
''' <strong class="method-name">BCO Gradient Variation</strong> &middot; ICML 2026 repro &middot;
Trackio logbook, published to Hugging Face.''')
html = html.replace(
''' Code: <span class="repo">github.com/&lt;org&gt;/&lt;repo&gt;</span> &nbsp;&middot;&nbsp;
Contact: <span class="repo">presenter@example.com</span>''',
''' Paper: <span class="repo">openreview.net/forum?id=X8evkEdMxb</span> &nbsp;&middot;&nbsp;
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('&nbsp;<span class="tag-key">&#9733;</span>', '')
html = html.replace('&nbsp;<span class="tag-key fs-3">&#9733;</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 &amp; 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.