Skip to content

Compare POUNCE 0.10.0 across NLP applications - #148

Draft
Mazhar331 wants to merge 2 commits into
feat/issue-146-surface-convergence-qualityfrom
feat/pounce-0.10-nlp-comparison
Draft

Compare POUNCE 0.10.0 across NLP applications#148
Mazhar331 wants to merge 2 commits into
feat/issue-146-surface-convergence-qualityfrom
feat/pounce-0.10-nlp-comparison

Conversation

@Mazhar331

@Mazhar331 Mazhar331 commented Aug 14, 2026

Copy link
Copy Markdown

Summary

  • add a pounce extra pinned to pounce-solver==0.10.0 and pyomo-pounce==0.10.0
  • add an automatic, path-scoped POUNCE solver lane for non-draft Pyomo-sensitive changes, while retaining local and manual-dispatch entry points
  • exercise the complete optional Pyomo application suite, including solver-backed notebooks, through the same AMPL/ASL interface used for IPOPT
  • record and test the POUNCE pseudosteady-limit baseline beside IPOPT
  • extend solver-backed coverage to the remaining parameter-estimation, design-space, and multi-vial applications
  • document solver-status differences and keep the known Problem 2 GDP restart instability visible as a strict xfail

The POUNCE and IPOPT jobs remain separate CI results. Both use the existing Pyomo scope decision, run for relevant non-draft changes, and report a clean skip elsewhere so either can later become a required check. POUNCE does not replace IPOPT or become a default package dependency.

Results

Across the shared successful pseudosteady rungs, POUNCE and IPOPT agree within the committed scientific tolerances. The application-wide lane passes except for one deliberate strict xfail:

  • POUNCE #590: released 0.10.0 reports the feasible Problem 1 f=0.02 rung as infeasible. The proposed upstream fix in #596 has been validated downstream, but is not released.
  • POUNCE #592: one Problem 2 fixed-policy NLP reports success before its solution is restart-stable. The exact GPL-licensed .nl reproducer is available upstream.

This PR intentionally pins the released 0.10.0 behavior. A later POUNCE release should be handled in a focused follow-up that regenerates the baseline and removes the xfail only when the original cold GDP path is stable.

Validation

  • actionlint .github/workflows/pyomo-tests.yml .github/workflows/slow-tests.yml
  • python -m ruff check lyopronto tests examples main.py
  • pytest -n 0 -q tests/test_packaging_config.py tests/test_pounce_solver_comparison.py — 21 passed
  • local SKIP_INSTALL=1 ./run_local_ci.sh pounce — 183 passed, 1 xfailed, 418 deselected
  • exact-head GitHub Actions run — POUNCE 0.10.0 installed and the POUNCE solver lane passed with 183 passed, 1 xfailed, 418 deselected

Stacking

This PR is intentionally based on feat/issue-146-surface-convergence-quality / #147 because the comparison consumes the convergence-quality schema introduced there. Retarget it to main after #147 lands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants