Product documentation — installation, licensing, and integration guides.
SolvJump Configurator
Examples
05 Sessions and live what-if

Journey 05 — Sessions and live what-if

Inspect prior study sessions, read sweep metadata, and call propagate() for fast what-if on a calibrated jump operator — Python-only live queries after a sweep.

Prerequisites: Journey 03 or 04 — at least one jump-calibrated session exists (or Journey 06 Robertson for trajectory-only). Scenario: Reload a calibrated operator — no new fit

Key APIs

  • solvjump sessions list
  • solvjump sessions show <session_id>
  • session.propagate()
  • Session.load()

Concepts to internalize

  • Session persistence — sweeps are replayable artifacts; list/show without re-running the grid.
  • propagate() — fast forward on the fitted operator; only valid when calibration succeeded.
  • Prerequisite chain — what-if needs a prior calibrated session from 03/04/06/07.
  • Ground-side only — propagate is for trade studies, not onboard deployment.

Important code

The guided tour script wraps this pattern. Copy the production shape into your pipeline:

solvjump sessions list
solvjump sessions show <session_id>
 
# Python what-if (requires calibrated session):
# session.propagate(params={...}, t_end=...)

Act-by-act walkthrough

Act 1 — The situation

Yesterday you ran a study. In today's review someone asks: 'what if this knob moves a little?' You reload the session — no recalibration. propagate() is Python-only; the CLI is sessions list / show.

Act 2 — Inventory

solvjump sessions list — every session under ~/.solvjump/sessions.

Sessions (3)

FieldValueNotes
id439c8ae64112...
tiercalibrated
modelbrusselator_model.py:make_rhs
id74465eb894b3...
tiercalibrated
modelbrusselator_model.py:make_rhs
id87957655899d...
tiercalibrated
modelbrusselator_model.py:make_rhsUsing most recent calibrated session: <session_id>

Model

FieldValueNotes
model_ref<product-root>\python\examples\brusselator_model.py:make_rhs
problem_id29c89c6449dd0461
stiffness_nomS1
y0[1.0, 3.0]
t_span[0.0, 10.0]
parametersa in [0.8, 1.2], b in [2.5, 3.5]

Routing

FieldValueNotes
tiercalibrated
operator_id<operator_id>
calibration<session-dir>\calibration_receipt.json
sweep<session-dir>\sweep_receipt.json

Act 3 — The what-if

Four steps of 0.25 s. Each step prints safety mode (nominal / guard / anchor / srk_fallback) and a micro-verify digit count.

FieldValueNotes
step1/4
modenominal
sim_time0.25 s
state[0.9588, 3.0465]
micro_verify_scdn/a
step2/4
modenominal
sim_time0.50 s
state[0.9160, 3.1053]
micro_verify_scdn/a
step3/4
modenominal
sim_time0.75 s
state[0.8757, 3.1720]
micro_verify_scdn/a
step4/4
modenominal
sim_time1.00 s
state[0.8412, 3.2424]
micro_verify_scdn/a

Act 4 — Answer in the meeting

At params={'a': 1.0, 'b': 3.2}, state after 1.0 s is [np.float64(0.8411567983241416), np.float64(3.2423550195766753)]. Modes stayed in nominal/guard/anchor — operator still valid for this what-if.

Act 5 — After the meeting

Log the session id. Formal sign-off is Journey 11 golden, not propagate().

Why run SolvJump here?

  • Answer live what-if questions in a review without recalibrating — reuse yesterday's operator from a saved session.

  • Each propagate step shows safety mode and accuracy check so you can explain the answer, not just quote a number.

  • Turn a hallway question into a receipted answer in seconds instead of scheduling another overnight sweep.

Guided tour output

Verified console capture from 05_sessions_and_whatif.py:

Reload a calibrated operator — no new fit

-- Act 1 - The situation --
  -> Yesterday you ran a study. In today's review someone asks: 'what if this knob moves a little?' You reload the session — no recalibration. propagate() is Python-only; the CLI is sessions list / show.

-- Act 2 - Inventory --
  -> solvjump sessions list — every session under ~/.solvjump/sessions.
  _section: Sessions (3)
  id: 439c8ae64112...
  tier: calibrated
  model: brusselator_model.py:make_rhs
  id: 74465eb894b3...
  tier: calibrated
  model: brusselator_model.py:make_rhs
  id: 87957655899d...
  tier: calibrated
  model: brusselator_model.py:make_rhs
  -> Using most recent calibrated session: <session_id>
  _section: Model
  model_ref: <product-root>\python\examples\brusselator_model.py:make_rhs
  problem_id: 29c89c6449dd0461
  stiffness_nom: S1
  y0: [1.0, 3.0]
  t_span: [0.0, 10.0]
  parameters: a in [0.8, 1.2], b in [2.5, 3.5]
  _section: Routing
  tier: calibrated
  operator_id: <operator_id>
  calibration: <session-dir>\calibration_receipt.json
  sweep: <session-dir>\sweep_receipt.json

-- Act 3 - The what-if --
  -> Four steps of 0.25 s. Each step prints safety mode (nominal / guard / anchor / srk_fallback) and a micro-verify digit count.
  step: 1/4
  mode: nominal
  sim_time: 0.25 s
  state: [0.9588, 3.0465]
  micro_verify_scd: n/a
  step: 2/4
  mode: nominal
  sim_time: 0.50 s
  state: [0.9160, 3.1053]
  micro_verify_scd: n/a
  step: 3/4
  mode: nominal
  sim_time: 0.75 s
  state: [0.8757, 3.1720]
  micro_verify_scd: n/a
  step: 4/4
  mode: nominal
  sim_time: 1.00 s
  state: [0.8412, 3.2424]
  micro_verify_scd: n/a

-- Act 4 - Answer in the meeting --
  -> At params={'a': 1.0, 'b': 3.2}, state after 1.0 s is [np.float64(0.8411567983241416), np.float64(3.2423550195766753)]. Modes stayed in nominal/guard/anchor — operator still valid for this what-if.

-- Act 5 - After the meeting --
  -> Log the session id. Formal sign-off is Journey 11 golden, not propagate().
  _section: Why run SolvJump here?
  log: Answer live what-if questions in a review without recalibrating — reuse yesterday's operator from a saved session.
  log: Each propagate step shows safety mode and accuracy check so you can explain the answer, not just quote a number.
  log: Turn a hallway question into a receipted answer in seconds instead of scheduling another overnight sweep.

Run it

cd python
# Guided tour — narrated scenario walkthrough (recommended first run):
python examples/journeys/05_sessions_and_whatif.py
 
# Production one-liner — same API call you ship:
solvjump sessions list

What comes next

Journey 06 runs stiff Robertson chemistry — trajectories without ranked finalists.

Navigation

← Journey 04 — Python Session and LHS · Journey 06 — Proprietary chemistry →