Buckets:
| from __future__ import annotations | |
| import json | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parents[1] | |
| LOGBOOK = ROOT / ".trackio" / "logbook" | |
| PAGES = LOGBOOK / "pages" | |
| POSTER = ROOT / "logbook_assets" / "poster_embed.html" | |
| PAPER_TITLE = ( | |
| "Loss-Aware Distributionally Robust Optimization via Trainable Optimal " | |
| "Transport Ambiguity Sets" | |
| ) | |
| PAPER_URL = "https://huggingface.co/papers/2509.12689" | |
| OPENREVIEW_URL = "https://openreview.net/forum?id=K1EPPO9t2c" | |
| JOB_TOKEN = "{{HF_JOB_URL_PENDING_AFTER_APPROVED_LAUNCH}}" | |
| BASELINE = { | |
| "experiment": "5d9e993d-65d3-41b1-845c-ec995c213e3e", | |
| "run": "6d021de5-89c2-4b0d-a0b8-2997d5d3c1fa", | |
| "commit": "1bf139b9651fab1b9cf243e72ec340530d32eae2", | |
| "payload": "6ecedb11e6114ba0b44af7617489ebe89734c2512f9bfecf08b237a232b3a3e8", | |
| } | |
| CHILD = { | |
| "experiment": "011ea9c7-db7c-4815-a732-f8054db7c59b", | |
| "run": "b7320a54-2d8b-46a6-a89c-4f616eab936b", | |
| "commit": "656fbf32259324c2bae0117d314a2f817932c3b6", | |
| "payload": "44bd9190418b7309d25973cf418dee1cb877fb026dd1d8d40ceb033bf6d7bbf0", | |
| } | |
| AGGREGATE = "sha256:4b4b1ef2383fecf4baa1565e7f9fbf2bc1b300b0b55dc67ba934f2bac5cf771a" | |
| RESULTS_SHA = "025f51a63fd75de100390b13374942cc5b57400d900b36c544777f9e67e0bd78" | |
| MANIFEST = "sha256:ac1d3c6cb4b87b3b9deb430352aadc7a0bc07acb421c95f6b6858bee4a67be8d" | |
| RECOVERY = "sha256:99c791f43a6423bf4e5f9c5710b92d1cfe85994e33758405ef2f0b15d22a9fbf" | |
| ANALYSIS = "sha256:1ffc132991f8d970011d9c0aa49da3e04cc78d2b0363bab634cedd32714280fd" | |
| CLAIMS_LOCK = "8c852634725aa2d678d87ec3517eca882a095af8770fcebe971547910943a046" | |
| THEOREM = "5555a358cbe1040cd39c6637e2b57d9012318a0a9ae5d2a4a696e216466ae011" | |
| HYPERGRADIENT = "85ba8545c76a780fdd68934686db1ce616e2a2162aa8c59e4860c9c802a28a43" | |
| def cell(kind: str, cell_id: str, title: str, body: str, *, pinned: bool = False) -> str: | |
| metadata: dict[str, object] = { | |
| "type": kind, | |
| "id": cell_id, | |
| "created_at": "2026-07-20T09:30:22+00:00", | |
| "title": title, | |
| } | |
| if pinned: | |
| metadata["pinned"] = True | |
| metadata["pinned_at"] = "2026-07-20T09:30:22+00:00" | |
| return ( | |
| "\n\n---\n<!-- trackio-cell\n" | |
| + json.dumps(metadata, ensure_ascii=False, separators=(",", ":")) | |
| + "\n-->\n" | |
| + body.strip() | |
| + "\n" | |
| ) | |
| def openresearch_receipt() -> str: | |
| return f"""## OpenResearch lineage | |
| [OpenResearch](https://openresearch.sh) executed the same fixed command for a frozen baseline and one child boundary audit. Both runs validated all 14,000 rows locally at zero paid cost. | |
| | Node | Experiment ID | Run ID | Commit | Result | | |
| | --- | --- | --- | --- | --- | | |
| | Baseline | `{BASELINE['experiment']}` | `{BASELINE['run']}` | `{BASELINE['commit']}` | done in 10 s | | |
| | Leave-one-distribution-out child | `{CHILD['experiment']}` | `{CHILD['run']}` | `{CHILD['commit']}` | done in 5 s | | |
| The OpenResearch repository is private during review, so these are immutable IDs rather than public repository links. Baseline payload: `{BASELINE['payload']}`. Child payload: `{CHILD['payload']}`.""" | |
| def provenance(*extra: str) -> str: | |
| items = [ | |
| f"Frozen manifest: `{MANIFEST}`", | |
| f"Reconciled aggregate: `{AGGREGATE}`", | |
| f"14,000-row result file: `{RESULTS_SHA}`", | |
| f"Five-task recovery attestation: `{RECOVERY}`", | |
| f"Six-claim analysis: `{ANALYSIS}`", | |
| ] | |
| items.extend(extra) | |
| return "## Artifact provenance\n\n" + "\n".join(f"- {item}" for item in items) | |
| CLAIM_BODIES = { | |
| 1: f"""Can the ambiguity set itself be learned, instead of choosing one fixed ball before seeing the decision problem? This page tests the paper's central software object: an outer update to the transport geometry wrapped around a standard OT-DRO solve. | |
| ## Setup and method | |
| We independently implemented the Gaussian portfolio and absolute-regression routes required by this claim. Each task freezes the dataset fingerprint, distribution seed, sample size, optimizer seed, lower-level solver contract, and out-of-sample evaluation. The broader matrix contains seven suites so the same implementation is also tested under discrete, mixture, high-dimensional, squared-loss, and coverage-ablation conditions. | |
| ## Exact paper target | |
| The upper level must tune the ambiguity geometry parameter `theta`, while the lower level solves a standard OT-DRO problem. A full verification additionally requires the learning trajectories to reach a defensible terminal condition. | |
| ## Reproduced result | |
| Both required bilevel routes executed. The reconciled matrix contains **14,000 validated tasks**, all lower-level solver checks were accepted, and exactly five controller exceptions were replaced by scientifically identical recovery outputs. However, **1,954 of the 5,500 claim-required tasks hit the preregistered 5,000-iteration cap**. Across the complete seven-suite matrix, 4,579 tasks were capped. | |
| ## Uncertainty and scale | |
| The two required suites cover 50 portfolio distributions and 10 regression distributions, 10 dataset replicates per distribution, and 10 or 5 sample sizes respectively. This is execution evidence, not an estimate with a sampling interval. Capped trajectories are treated as right-censored. | |
| ## Verdict: partially verified | |
| The bilevel formulation is implemented and exercised end to end, but a capped trajectory does not establish that the reported ambiguity geometry finished learning. | |
| ## Limitation | |
| The 5,000-step ceiling preserves feasibility but is shorter than the paper's million-step maximum. We do not relabel a cap hit as convergence. | |
| {openresearch_receipt()} | |
| {provenance()}""", | |
| 2: f"""A long optimization trace can look settled without satisfying a convergence theorem. This page separates numerical behavior from the mathematical statement in Theorem 5.1. | |
| ## Setup and method | |
| We converted the theorem into a 12-item assumption and bridge audit. The audit checks the stated step-size regime, regularity assumptions, solution-map requirements, limiting argument, and whether the algorithm actually executed by the reproduction is the recurrence analyzed by the theorem. | |
| ## Exact paper target | |
| Under the stated conditions, including square-summable step sizes, the proposed hypergradient descent procedure converges to a critical point of the bilevel problem. | |
| ## Reproduced result | |
| No proof receipt establishes all theorem assumptions for the released instances. The executed trajectories are finite and capped, and the implementation used for the matrix is not certified as the ideal recurrence analyzed in the theorem. | |
| ## Uncertainty and scale | |
| Sampling uncertainty is not the relevant quantity for a theorem. The evidence consists of 12 audited assumptions and logical bridges, plus finite trajectories that can illustrate behavior but cannot prove asymptotic convergence. | |
| ## Verdict: inconclusive | |
| The numerical runs neither verify nor falsify Theorem 5.1. They fall outside the proof obligation. | |
| ## Limitation | |
| A stronger verdict requires a hash-bound proof audit that closes every assumption and an execution contract demonstrably inside the theorem's scope. | |
| {openresearch_receipt()} | |
| {provenance(f'Theorem audit file: `{THEOREM}`')}""", | |
| 3: f"""The difficult step is not solving the inner conic program. It is differentiating the outer decision through a solution map that may kink when the active set changes. | |
| ## Setup and method | |
| Five pinned route configurations were checked with central finite differences at multiple step sizes: Gaussian portfolio exact, Gaussian portfolio moment class, empirical W1 portfolio, absolute regression, and squared regression. Each configuration also checks its active coverage-penalty component. Solver and transport residuals use a preregistered `1e-7` threshold. | |
| ## Exact paper target | |
| Algorithm 1 must compute hypergradients through the nonsmooth conservative implicit function theorem without assuming that the conic solution map is continuously differentiable. | |
| ## Reproduced result | |
| The component receipt reports all required route families passing at the chosen smooth evaluation points. The final six-claim analysis does not accept that component check as a paper-scale Algorithm 1 receipt because it does not bind active-set switching or the full nonsmooth execution path. | |
| ## Uncertainty and scale | |
| This is a deterministic derivative check over five route families and several finite-difference step sizes, not a seeded performance estimate. Agreement at smooth points is necessary but insufficient for the nonsmooth claim. | |
| ## Verdict: inconclusive | |
| Implemented gradients agree locally with finite differences. The conservative nonsmooth implicit-differentiation claim remains unverified. | |
| ## Limitation | |
| The missing experiment must deliberately cross active-set boundaries, compare admissible generalized derivatives, and bind the exact Algorithm 1 formula to the paper source. | |
| {openresearch_receipt()} | |
| {provenance(f'Component hypergradient receipt: `{HYPERGRADIENT}`')}""", | |
| 4: f"""When data are scarce, the shape of a transport ball should matter more. The paper's Figure 2 makes that intuition testable with one exact parameter contract. | |
| ## Setup and method | |
| We swept portfolio sample sizes and measured both worst-case and out-of-sample relative improvement. Before scoring, the analysis compared the frozen matrix against the anchored Figure 2 tuple `k=2`, `J=30`, `n_b=20`, `gamma=0.05`, `beta=0.1` and the paper's relative-improvement formula. | |
| ## Exact paper target | |
| Under that exact tuple and estimand, improvement from the learned ambiguity set over a fixed Wasserstein ball should increase as sample size decreases. | |
| ## Reproduced result | |
| Only **3 of the 5 anchored setup fields** are bound by the frozen plan, and the exact Figure 2 estimand is not source-bound. The available sample-size slope is therefore reported only as an extension and receives no claim credit. | |
| ## Uncertainty and scale | |
| The sensitivity sweep spans 50 Gaussian portfolio distributions, 10 replicates per distribution, and sample sizes 10 through 100. Distribution-first 95% deterministic bootstrap intervals use 10,000 replicates. Those intervals describe the extension, not the unmatched paper target. | |
| ## Verdict: inconclusive | |
| The experiment is broad, but it is not the exact Figure 2 experiment. | |
| ## Limitation | |
| This page needs a run with all five paper parameters and a source-audited formula before the trend can be scored. | |
| ## Hugging Face Job | |
| **Pending insertion after launch:** `{JOB_TOKEN}`. The planned CPU Job is a preregistered scaled sensitivity audit across the Figure 2 sample-size axis. It does not bind the missing exact paper parameters and cannot by itself verify A4. | |
| {openresearch_receipt()} | |
| {provenance()}""", | |
| 5: f"""A learned ambiguity set is useful only if it does not buy lower loss by abandoning the promised coverage. Figure 3 asks whether the true distribution still lies inside the learned set at least 90% of the time. | |
| ## Setup and method | |
| For every portfolio sample size, coverage is averaged within each data-generating distribution and then aggregated across 50 distributions. This prevents the 10 replicates from masquerading as 500 independent distributions. The predeclared pass rule requires the 95% lower bound to reach 0.90 at every sample size. | |
| ## Exact paper target | |
| The learned set preserves the `1 - beta = 0.90` coverage guarantee despite being shaped to reduce decision loss. | |
| ## Reproduced result | |
| | Sample size | Coverage | 95% interval | | |
| | ---: | ---: | ---: | | |
| | 10 | 0.752 | [0.710, 0.792] | | |
| | 20 | 0.798 | [0.762, 0.832] | | |
| | 30 | 0.838 | [0.808, 0.866] | | |
| | 40 | 0.822 | [0.784, 0.858] | | |
| | 50 | 0.868 | [0.836, 0.898] | | |
| | 60 | 0.852 | [0.820, 0.882] | | |
| | 70 | 0.828 | [0.798, 0.858] | | |
| | 80 | 0.842 | [0.812, 0.872] | | |
| | 90 | 0.842 | [0.808, 0.876] | | |
| | 100 | 0.834 | [0.796, 0.870] | | |
| Every upper bound remains below 0.90. The pattern is adverse to the claim, but capped training trajectories prevent a terminal falsified verdict. | |
| ## Uncertainty and scale | |
| Each row uses 50 independent distributions and 500 total dataset realizations. Intervals are distribution-first 95% deterministic percentile bootstrap intervals with 10,000 replicates. | |
| ## Verdict: inconclusive | |
| The observed matrix misses the 90% target at every sample size. Because many learned geometries are right-censored, this is not yet a clean falsification of the paper's converged method. | |
| ## Limitation | |
| The required follow-up must remove the training cap or establish that extending capped runs cannot restore coverage. | |
| ## Hugging Face Job | |
| **Pending insertion after launch:** `{JOB_TOKEN}`. The planned CPU Job reruns a scaled coverage audit with the frozen implementation. It is substantive infrastructure evidence, but it does not remove the current training-cap limitation. | |
| {openresearch_receipt()} | |
| {provenance()}""", | |
| 6: f"""Average improvement can hide a losing trial. Figure 5 uses stronger language: the learned set should produce lower regression loss consistently across ten independent trials. | |
| ## Setup and method | |
| We evaluated the absolute-regression main suite at five sample sizes. Improvements are first averaged within each of the ten data-generating trials, then summarized across trials. The preregistered rule requires a positive 95% lower bound at every sample size and a positive mean for every individual trial. | |
| ## Exact paper target | |
| All ten independent linear-regression trials yield less conservative decisions with lower average loss than the baseline OT-DRO ambiguity sets. | |
| ## Reproduced result | |
| | Sample size | Relative OOS improvement | 95% interval | | |
| | ---: | ---: | ---: | | |
| | 10 | 0.0403 | [0.0231, 0.0575] | | |
| | 20 | 0.0605 | [0.0358, 0.0857] | | |
| | 30 | 0.0732 | [0.0450, 0.1028] | | |
| | 40 | 0.0930 | [0.0556, 0.1304] | | |
| | 50 | 0.1016 | [0.0618, 0.1410] | | |
| The distribution-level mean is positive at all five sample sizes. The stricter all-ten-trials condition fails. | |
| ## Uncertainty and scale | |
| Each row contains ten independent distributions and 100 total dataset realizations. Intervals are distribution-first 95% deterministic percentile bootstrap intervals with 10,000 replicates. | |
| ## Verdict: partially verified | |
| The mean effect is consistently favorable across sample sizes, but the paper's stronger per-trial wording does not reproduce. | |
| ## Limitation | |
| The matrix is capped, and the page does not reinterpret a positive grand mean as ten unanimous trial results. | |
| ## Hugging Face Job | |
| **Pending insertion after launch:** `{JOB_TOKEN}`. The planned CPU Job covers all ten published regression trial families at scaled compute and records its public logs here. It does not replace the larger local matrix. | |
| {openresearch_receipt()} | |
| {provenance()}""", | |
| } | |
| def build() -> None: | |
| model = json.loads((LOGBOOK / "logbook.json").read_text(encoding="utf-8")) | |
| children = model["root"]["children"] | |
| claims = [item for item in children if item["title"].startswith("Claim ")] | |
| if len(claims) != 6: | |
| raise RuntimeError(f"expected six canonical claim pages, found {len(claims)}") | |
| index = ( | |
| f"# Reproduction: {PAPER_TITLE}\n\n" | |
| f"[HF paper page]({PAPER_URL}) · [OpenReview]({OPENREVIEW_URL})\n\n" | |
| "## Pages\n\n| Page |\n| --- |\n" | |
| + "\n".join(f"| [{item['title']}](#/{item['slug']}) |" for item in children) | |
| + "\n" | |
| ) | |
| (PAGES / "index.md").write_text(index, encoding="utf-8", newline="\n") | |
| summary_body = f"""**The central bilevel pipeline reproduces only in part.** We independently validated 14,000 task outputs with perfect solver acceptance, but 4,579 trajectories reached the 5,000-step cap, so convergence and downstream coverage cannot be promoted. Coverage stayed below the paper's 90% target at all ten sample sizes, while mean regression improvement was positive at all five sample sizes but not in every one of the ten trials. The full matrix used a local Intel Core Ultra 9 275HX CPU for 9 h 6 min wall time, 35.3 summed task-hours, and $0 paid compute; two clean OpenResearch evaluations added 15 seconds at $0. | |
| ## Scope & cost | |
| | Item | This reproduction | Full replication | | |
| | --- | --- | --- | | |
| | Scope | 14,000 validated tasks across seven suites; 50 portfolio and 10 regression distributions; 10 replicates; five recovered controller exceptions | Exact anchored setup for every figure, uncapped or demonstrably converged optimization, and a public Hub rerun for empirical claims | | |
| | Hardware | Local Intel Core Ultra 9 275HX CPU, four process workers, one BLAS thread per task | CPU is sufficient; a Hugging Face CPU Job supplies public execution provenance | | |
| | Compute time | 9 h 6 min wall time; 35.3 summed task-hours; OpenResearch baseline + child 15 s | Unknown until the uncapped and claim-bound reruns finish | | |
| | Cost | $0 paid compute so far | Pending exact Hub Job receipt; launch remains budget-capped | | |
| | Outcome | A1 and A6 partially verified; A2 through A5 inconclusive | Full verdicts require the missing theorem, nonsmooth, exact Figure 2, convergence, and public-job evidence |""" | |
| summary_page = "# Executive summary\n" + cell( | |
| "markdown", "cell_ab6fce33e394", "Executive summary", summary_body, pinned=True | |
| ) | |
| poster_html = POSTER.read_text(encoding="utf-8").strip() | |
| summary_page += cell( | |
| "figure", | |
| "cell_b8c145768d5a", | |
| "Reproduction poster", | |
| "````html\n<!-- poster_embed.html -->\n" + poster_html + "\n````", | |
| pinned=True, | |
| ) | |
| executive = next(item for item in children if item["title"] == "Executive summary") | |
| executive_path = LOGBOOK / executive["file"] | |
| executive_path.write_text(summary_page, encoding="utf-8", newline="\n") | |
| (executive_path.parent / "poster_embed.html").write_text( | |
| poster_html + "\n", encoding="utf-8", newline="\n" | |
| ) | |
| for number, item in enumerate(claims, start=1): | |
| title = item["title"] | |
| content = f"# {title}\n" + cell( | |
| "markdown", f"cell_claim_{number:02d}_evidence", title, CLAIM_BODIES[number] | |
| ) | |
| (LOGBOOK / item["file"]).write_text(content, encoding="utf-8", newline="\n") | |
| conclusion = next(item for item in children if item["title"] == "Conclusion") | |
| artifact_body = """Reproduction bundle pending Trackio publication. | |
| Local artifact name: `repro-loss-aware-distributionally-robust-optimization-via-trainable-optimal-transport-ambiguity/repro-bundle:v0` | |
| Published Bucket URL: `{{REPRO_BUNDLE_ARTIFACT_CELL_INSERTED_BY_TRACKIO_PUBLISH}}`""" | |
| conclusion_body = """The reproduction bundle contains the independent implementation, frozen configs, environment locks, the reconciled 14,000-row aggregate, recovery attestation, theorem and hypergradient audits, raw plot data, OpenResearch receipts, and this deterministic logbook builder. It excludes secrets, virtual environments, and caches. | |
| After downloading the bundle: | |
| ```bash | |
| python -m pip install -r environment/requirements.lock | |
| python -B scripts/validate_live_claims.py | |
| python -B scripts/analyze_full_matrix.py \ | |
| --manifest .openresearch/control/full-matrix-capped5000-v3/manifest.json \ | |
| --reconciled-root .openresearch/artifacts/reconciled-full-matrix \ | |
| --gradient-receipt .openresearch/artifacts/validation/hypergradient.json \ | |
| --theorem-receipt configs/theorem-5.1-audit.json \ | |
| --output reproduced-analysis.json | |
| python -B presentation/validate_package.py | |
| python -B scripts/validate_trackio_logbook.py | |
| ``` | |
| The artifact cell above will replace its token with a Hugging Face Bucket URL during publication. No private GitHub URL is presented as public code.""" | |
| conclusion_page = "# Conclusion\n" + cell( | |
| "artifact", "cell_repro_bundle_pending", "Reproduction bundle", artifact_body | |
| ) | |
| conclusion_page += cell( | |
| "markdown", "cell_70e28eff27d1", "Download and rerun", conclusion_body | |
| ) | |
| (LOGBOOK / conclusion["file"]).write_text( | |
| conclusion_page, encoding="utf-8", newline="\n" | |
| ) | |
| metadata_path = ROOT / ".trackio" / "metadata.json" | |
| metadata = json.loads(metadata_path.read_text(encoding="utf-8")) | |
| metadata["emoji"] = "\U0001f9ed" | |
| metadata_path.write_text( | |
| json.dumps(metadata, indent=2, ensure_ascii=False) + "\n", | |
| encoding="utf-8", | |
| newline="\n", | |
| ) | |
| model["emoji"] = "\U0001f9ed" | |
| (LOGBOOK / "logbook.json").write_text( | |
| json.dumps(model, indent=2, ensure_ascii=False) + "\n", | |
| encoding="utf-8", | |
| newline="\n", | |
| ) | |
| if __name__ == "__main__": | |
| build() | |
Xet Storage Details
- Size:
- 20.9 kB
- Xet hash:
- 2b788f446a85f7b052bf0327d4959cc18f95f44f4d4f52ebe9713a24655be661
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.