Skip to content

Tech debt: Python routing facade is designed (lp-qp-routing.md) but not built #106

@jkitchin

Description

@jkitchin

Area: Python routing facade (designed, not built)

State. dev-notes/lp-qp-routing.md specifies a ProblemClass-driven router,
and crates/pounce-cli/src/dispatch.rs already classifies/routes on the CLI
(solver_selection=auto). But the Python surface exposes parallel, hand-picked
entry points -- minimize, solve_qp, solve_socp, sos_minimize,
minimize_global -- with no unifying dispatch.

Debt.

  • Python callers must know solver theory to choose; the CLI can auto-route from a
    parsed .nl, Python cannot.
  • Two divergent dispatch stories (CLI classifier vs. Python explicit) will drift.
  • minimize deliberately cannot route (opaque callable), so a router can't just
    hide behind it -- it needs structured input. That design question is unresolved.

Recommendation. Decide explicitly: (a) build a Python router taking structured
problems and dispatching by ProblemClass (mirroring dispatch.rs), or (b)
commit to explicit entry points and make "Choosing a Solver" the documented front
door. Track this as the designed-but-unbuilt piece it is.

See dev-notes/multi-solver-tech-debt.md (area 2).

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtLong-term maintainability / technical debt

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions