Skip to content

ui: live solver dashboard — a run() front-end on the stepped-session seam (fleet UI proposal) #76

Description

@InauguralPhysicist

Proposal (from Jon): EigenMiniSat could have UI. The pieces are already in place — minisat.eigs is a pure importable core, and the stepped-session API exposes the full stats struct mid-solve (conflicts, resolutions, learnts, peak_learnts, max_level, decisions, propagations, restarts — the same counters the ladder harness prints every 300s). That's exactly the fleet's core + run() split (eigen-edit pattern): add a front-end that opens a window and drives the solver a step-budget per frame.

Scope sketch:

  1. Problem picker — the built-in families (pigeonhole, graph coloring, Tseitin tori by rows×cols) + DIMACS file load.
  2. Live trajectory dashboard — conflicts/resolutions/learnts-over-time plots updating as the solver runs, peak_learnts and max_level readouts, restart markers. This is the counters-are-the-result-of-record discipline made visible.
  3. Search view — current assignment as a variable grid (colored by value/unassigned), decision-level depth bar, activity heat. Solve/pause/step/reset transport.
  4. Fleet UI standard from birth (Tidepool#43 / eigen-edit#3 / eigen-sheet#50): themed toolkit shell, render-decode + mouse oracles alongside the UI, desktop-gui-qa screenshots as acceptance.

Forcing-function contract (the reason to build it, not just the demo):

  • lib/ui has no chart/plot widget — this forces that gap upstream from a second consumer simultaneously with eigen-sheet#26 (dynamic charts). Two consumers forcing one gap is the strongest upstream signal we get.
  • A step-budget-per-frame compute loop inside a UI event loop is a new pattern for the toolkit (long-running work + responsive chrome) — likely to surface scheduling/repaint gaps no current app hits.
  • Observer angle: the solver's bindings under the observer while it runs is the on-brand demo — measurement of a live search, for free.

Gate before build: eigen-portfolio-strategist validates the contract and adds the coverage-map row (hq/PORTFOLIO.md), per the fleet-membership rule. Build owner once approved: eigenscript-app-fleet-engineer.

Non-goal: solver performance work — the UI must not perturb the counters; a headless run and a UI-stepped run of the same case must produce byte-identical counter trajectories (that assert IS the oracle).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions