Product documentation — installation, licensing, and integration guides.
SolvJump Configurator
Examples
10 When jump refuses

Journey 10 — When jump refuses

When jump physics gates refuse the operator, SolvJump still completes the study — auto-routing to adaptive MFBO when terminal_metrics exist, or full SRK screen otherwise.

Prerequisites: Journeys 03 and 08 — understand full vs adaptive paths. Scenario: Brusselator long chain | strategy: full -> adaptive fallback

Key APIs

  • solvjump run examples/brusselator_study_refuse.yaml
  • KillGateFailed / rollout refusal handling
  • auto adaptive fallback

Concepts to internalize

  • Refusal is not failure — product path adapts; you still get a CSV and session.
  • Long-chain Brusselator fixture — dedicated YAML for refusal pedagogy; do not reuse satellite YAML here.
  • terminal_metrics present — triggers srk_adaptive instead of bare srk_screen.
  • Honest receipts — evidence and logs show why jump was not trusted.

Important code

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

solvjump run examples/brusselator_study_refuse.yaml

Act-by-act walkthrough

Act 1 — The physics gate

Jump operators must pass holdout SCD and chained rollout (no fixed-point collapse). This YAML asks for a 20-step chain at dt=0.25 — a regime where Brusselator often fails rollout even if a single step looks fine.

Act 2 — What we request

brusselator_study_refuse.yaml uses strategy: full. Because brusselator_model.py defines terminal_metrics(), a refusal auto-runs adaptive MFBO instead of dead-ending.

Act 3 — Contrast with Robertson (Journey 06)

robertson_model.py has NO terminal_metrics(). If jump refused there, fallback is full-grid SRK screen with no ranked CSV — see COVERAGE.md §4.

Study definition

FieldValueNotes
model<product-root>\python\examples\brusselator_model.py:make_rhs
dynamics_paramsa in [0.8, 1.2], b in [2.5, 3.5]
y0[1.0, 3.0]
t_span[0.0, 10.0]
modeauto
calibration_seeds12
jump_lags[0.1, 0.5, 1.0]
safety_margin1.5

Operator routing, calibration & sweep (3 steps)

FieldValueNotes
model<product-root>\python\examples\brusselator_model.py:make_rhs
dim2
stiffness_nomS1
horizon[0.0, 10.0]
problem_set_operators256kepler
  • Jump recommendation: confidence=exact, cache_ref=<operator_id>, mode=auto
FieldValueNotes
seeds12
reasonno exact cache match for this modelCollecting trajectory training pairs: jump lag=0.25s, SolvTune arm=solvsrk, objective=balanced, target chain=20
  • SRK collection done - 60 train pairs from 3 trajectories (0 failed, need >=8 train)

  • Fitted nominal+guard kernels - train median SCD=2.79, holdout median SCD=1.68 (n=8/8)

  • Rollout validation - SCD by chain depth [1:1.68, 10:0.77, 20:0.56], max_valid_chain=1 (single_step_only)

  • Accuracy gate passed (operator <operator_id>)

FieldValueNotes
methodgrid
grid_points9
steps20
dt0.25
compare_brute_srkFalse
finalists10Sweep finished - example params {'a': 1.0, 'b': 3.0}, final state ~ [0.7101, 3.3821]
  • Horizon aligned: 20 jumps x 0.25 s = 5.0 s (jump_lag matches dt)
FieldValueNotes
! Degeneracy guard tripped on 1 grid point(s) - sweep modejump_anchoredJump pool (NOT SRK truth): top 9 of 9 by jump metrics -> finalists_top10.csv
srk_sample_n9
full_grid_truthTrue
min_spearman0.85Full-grid SRK truth: 9/9 rankable in 0.5 s

SRK ground truth (authoritative top-N)

FieldValueNotes
grid_points9
srk_ranked9
exportfinalists_ground_truth_top9.csv
srk_best_jump_rank4SRK top-10 in jump top-500: 9/9 (100% recall)
  • SRK top-50 in jump top-500: 9/9 (100% recall)

  • SRK top-100 in jump top-500: 9/9 (100% recall)

Rank verification (jump vs full SRK)

FieldValueNotes
verified_rows9/9 jump-ranked rows
spearman_rho0.817 (gate >= 0.85)
srk_verify_time0.4 s
best_srk_jump_rank#4 (regret 3)
verdictFAIL — do not cite ranking to clientstop-10 overlap: skipped (sample size 9 < top_n 10)
  • top-50 overlap: skipped (sample size 9 < top_n 50)

  • top-100 overlap: skipped (sample size 9 < top_n 100)

  • steady_ok agreement (jump vs SRK): 78%

  • Report: <session-dir>\rank_verification_report.json

  • SRK shortlist (verified ranking for HPC handoff): <session-dir>\srk_shortlist.csv

  • SRK ground truth (authoritative): <session-dir>\finalists_ground_truth_top9.csv

  • Authoritative deliverable: finalists_ground_truth_top9.csv (SRK ground truth — use this for HPC handoff)

Act 4 — Takeaway

Product coverage = any ODE study completes. Jump speed is the bonus when physics allows. For client ranking claims on jump sweeps that DID succeed, still run Journey 12 (verify-ranking).

Why run SolvJump here?

  • The study completes even when jump refuses — ops is not blocked.

  • Jump succeeded on this run — you get fast screening plus ranked comm windows.

  • Models with terminal_metrics get adaptive fallback; without it you only get a slow full-grid screen.

  • Same YAML path covers both fast jump and honest fallback — no dead-end workflow.

Guided tour output

Verified console capture from 10_when_jump_refuses.py:

Brusselator long chain | strategy: full -> adaptive fallback

-- Act 1 - The physics gate --
  -> Jump operators must pass holdout SCD and chained rollout (no fixed-point collapse). This YAML asks for a 20-step chain at dt=0.25 — a regime where Brusselator often fails rollout even if a single step looks fine.

-- Act 2 - What we request --
  -> brusselator_study_refuse.yaml uses strategy: full. Because brusselator_model.py defines terminal_metrics(), a refusal auto-runs adaptive MFBO instead of dead-ending.

-- Act 3 - Contrast with Robertson (Journey 06) --
  -> robertson_model.py has NO terminal_metrics(). If jump refused there, fallback is full-grid SRK screen with no ranked CSV — see COVERAGE.md §4.
  _section: Study definition
  model: <product-root>\python\examples\brusselator_model.py:make_rhs
  dynamics_params: a in [0.8, 1.2], b in [2.5, 3.5]
  y0: [1.0, 3.0]
  t_span: [0.0, 10.0]
  mode: auto
  calibration_seeds: 12
  jump_lags: [0.1, 0.5, 1.0]
  safety_margin: 1.5
  _section: Operator routing, calibration & sweep (3 steps)
  model: <product-root>\python\examples\brusselator_model.py:make_rhs
  dim: 2
  stiffness_nom: S1
  horizon: [0.0, 10.0]
  problem_set_operators: 256
  -> kepler | dim=2 | stiffness=S0 | dynamics=conservative
  log: Jump recommendation: confidence=exact, cache_ref=<operator_id>, mode=auto
  seeds: 12
  reason: no exact cache match for this model
  -> Collecting trajectory training pairs: jump lag=0.25s, SolvTune arm=solvsrk, objective=balanced, target chain=20
  log: SRK collection done - 60 train pairs from 3 trajectories (0 failed, need >=8 train)
  log: Fitted nominal+guard kernels - train median SCD=2.79, holdout median SCD=1.68 (n=8/8)
  log: Rollout validation - SCD by chain depth [1:1.68, 10:0.77, 20:0.56], max_valid_chain=1 (single_step_only)
  log: Accuracy gate passed (operator <operator_id>)
  method: grid
  grid_points: 9
  steps: 20
  dt: 0.25
  compare_brute_srk: False
  finalists: 10
  -> Sweep finished - example params {'a': 1.0, 'b': 3.0}, final state ~ [0.7101, 3.3821]
  log: Horizon aligned: 20 jumps x 0.25 s = 5.0 s (jump_lag matches dt)
  ! Degeneracy guard tripped on 1 grid point(s) - sweep mode: jump_anchored
  -> Jump pool (NOT SRK truth): top 9 of 9 by jump metrics -> finalists_top10.csv
  srk_sample_n: 9
  full_grid_truth: True
  min_spearman: 0.85
  -> Full-grid SRK truth: 9/9 rankable in 0.5 s
  _section: SRK ground truth (authoritative top-N)
  grid_points: 9
  srk_ranked: 9
  export: finalists_ground_truth_top9.csv
  srk_best_jump_rank: 4
  -> SRK top-10 in jump top-500: 9/9 (100% recall)
  log: SRK top-50 in jump top-500: 9/9 (100% recall)
  log: SRK top-100 in jump top-500: 9/9 (100% recall)
  _section: Rank verification (jump vs full SRK)
  verified_rows: 9/9 jump-ranked rows
  spearman_rho: 0.817 (gate >= 0.85)
  srk_verify_time: 0.4 s
  best_srk_jump_rank: #4 (regret 3)
  verdict: FAIL — do not cite ranking to clients
  -> top-10 overlap: skipped (sample size 9 < top_n 10)
  log: top-50 overlap: skipped (sample size 9 < top_n 50)
  log: top-100 overlap: skipped (sample size 9 < top_n 100)
  log: steady_ok agreement (jump vs SRK): 78%
  log: Report: <session-dir>\rank_verification_report.json
  log: SRK shortlist (verified ranking for HPC handoff): <session-dir>\srk_shortlist.csv
  log: SRK ground truth (authoritative): <session-dir>\finalists_ground_truth_top9.csv
  log: Authoritative deliverable: finalists_ground_truth_top9.csv (SRK ground truth — use this for HPC handoff)

-- Act 4 - Takeaway --
  -> Product coverage = any ODE study completes. Jump speed is the bonus when physics allows. For client ranking claims on jump sweeps that DID succeed, still run Journey 12 (verify-ranking).
  _section: Why run SolvJump here?
  log: The study completes even when jump refuses — ops is not blocked.
  log: Jump succeeded on this run — you get fast screening plus ranked comm windows.
  log: Models with terminal_metrics get adaptive fallback; without it you only get a slow full-grid screen.
  log: Same YAML path covers both fast jump and honest fallback — no dead-end workflow.

-- Run complete --
  session_id: <session_id>
  results_folder: <session-dir>
  points_completed: 9 ok, 0 skipped (of 9)
  fast_sweep: 62.6 ms
  receipt_calibration: <session-dir>\calibration_receipt.json
  receipt_sweep: <session-dir>\sweep_receipt.json
  receipt_jump_pool: <session-dir>\finalists_top10.csv
  receipt_rank_verification: <session-dir>\rank_verification_report.json
  receipt_srk_shortlist: <session-dir>\srk_shortlist.csv
  receipt_finalists: <session-dir>\finalists_ground_truth_top9.csv
  -- What happened --
  session_tier: calibrated
  operator_id: <operator_id>
  -- Act 4 - Takeaway --
  -- Why run SolvJump here? --
  -- Run complete --
  session_id: <session_id>
  results_folder: <session-dir>
  points_completed: 9 ok, 0 skipped (of 9)
  fast_sweep: 62.6 ms
  receipt_calibration: <session-dir>\calibration_receipt.json
  receipt_sweep: <session-dir>\sweep_receipt.json
  receipt_jump_pool: <session-dir>\finalists_top10.csv
  receipt_rank_verification: <session-dir>\rank_verification_report.json
  receipt_srk_shortlist: <session-dir>\srk_shortlist.csv
  receipt_finalists: <session-dir>\finalists_ground_truth_top9.csv

Run it

cd python
# Guided tour — narrated scenario walkthrough (recommended first run):
python examples/journeys/10_when_jump_refuses.py
 
# Production one-liner — same API call you ship:
solvjump run examples/brusselator_study_refuse.yaml

What comes next

Journey 11 golden-proves the top finalist with full SolvSRK.

Navigation

← Journey 09 — SolvTune objective · Journey 11 — Golden proof →