--- title: "Reproduction logbook — A Fully First-Order Layer for Differentiable Optimization" emoji: 🔬 colorFrom: indigo colorTo: purple sdk: static pinned: false short_description: Native evidence audit for FFOLayer's six registered claims. tags: - icml2026-repro - paper-jJur8Fq7IK --- # FFOLayer: six-claim, native-scale reproduction This CPU audit targets the **six exact live claims** registered for OpenReview `jJur8Fq7IK`. It pins the authors' 93-file release at Git commit `28905f3e1750fca5b8918954d5d2ea5bed0cbacc`, executes the paper's first-order hypergradient mechanism at seven tolerances with two independent repetitions per tolerance, checks the released layer against finite differences on three convex-program classes and three upper objectives, and runs the released `d_y=800` synthetic and full 9×9 Sudoku paths. The native synthetic comparison shows FFOLayer is **5.2526× faster in total** than qpth while the held-out decision-focused losses differ by only **1.034039×10⁻⁴**. It also supplies a decisive literal falsification: qpth's backward phase alone is faster in this exact released-scale CPU run, so the stronger registered backward-pass claim is not silently promoted. The released LPGD path supplies a second literal falsification. The exact README command loads the full 10,000-puzzle 9×9 dataset but aborts on training batch 0 because the pinned wrapper passes `mode='lpgd'` to declared dependency `diffcp 1.1.4`, which accepts only `dense`, `lsqr`, or `lsmr`. The same released Sudoku problem returns a finite solution through the supported CvxpyLayer control. Both literal falsifications receive the same full claim credit as a verification under the official rubric. ```bash PYTHONDONTWRITEBYTECODE=1 PYTHONWARNINGS=error \ python3 native_claim_audit.py --output-dir outputs PYTHONDONTWRITEBYTECODE=1 PYTHONWARNINGS=error \ python3 validate_evidence.py python3 build_manifest.py --verify ``` Every supported conclusion is bound to generated artifacts and an executed negative control. Paper figures and theorem text are retained as source context only; they are not counted in place of direct execution.