|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Variables | |
| str | RUNS = Path(__file__).resolve().parents[1] / ".userdata" / "local" / "engine" / "layerx" / "runs" |
| str | REFERENCE = RUNS / "20261002-231658-7e47d1.json" |
| float | PSI = 6894.757293168361 |
| SAVED = _saved_burns() | |
| needs_saved = pytest.mark.skipif(not SAVED, reason="no saved Layer X burns in .userdata (the user's runs)") | |
| dict | VERDICT |
| dict | SERIES_BACKED |
One graded list of limits for a Layer X burn (engine/layerx/diag/limits.py). What these check, and against what: * **Today's UI grades.** ``verdictItems`` in ``frontend/src/components/layerx/LayerXResult.tsx`` is transcribed below, line for line, as an independent oracle (``_ui_verdict``), and every saved burn in ``.userdata`` (read only) must grade the same through :func:`grade`. The saved runs are the user's; when none is present the parity test skips and the hand-built results below still run. * **Worst-case times, by hand.** For the 2026-10-02 flown GN2 run ``7e47d1`` the audit (AUDIT 9.9 D) worked out each limit's worst time from the series by hand: LOX dP/Pc 0.3082 at 0.75 s, fuel 0.2858 at 0.20 s, both tank peaks at burnout (3.466 s), the sag at 0.40 s (fuel), chug 1.2046 at 0.80 s. Those numbers are asserted. * **The index is the time.** For every series-backed limit on every saved run, the series value at ``index_worst`` is the graded value and ``series.t[index_worst]`` is ``t_worst``. * **Each new grader on a hand-built result**: thresholds at, just inside and just outside their edges, so a flipped comparison or a wrong default goes red.
|
protected |
Definition at line 52 of file test_layerx_limits.py.
Referenced by test_a_burn_that_never_ran_dry_says_so(), test_a_design_cap_the_design_never_stated_is_reported_not_graded(), test_a_drawing_basis_run_without_its_stability_block_does_not_grade_the_config_margin(), test_a_stated_flag_margin_moves_the_saturation_amber_edge(), test_a_vessel_trip_is_red_at_its_instant(), test_bottle_sag_and_depletion_edges(), test_cavitation_is_red_once_the_orifice_cavitates_and_amber_near_it(), test_chug_from_the_stability_diagnostics_grades_the_settled_minimum_and_reports_the_start(), test_chug_margin_is_red_below_one_and_amber_below_one_point_two(), test_diagnostics_blocks_are_graded_when_present_and_skipped_when_absent(), test_flight_limits_fall_back_to_the_competition_rules(), test_nozzle_separation_from_the_delivered_exit_pressure(), test_requirements_are_read_from_the_recorded_yaml_without_a_config(), test_separation_from_the_hardware_block_and_schmucker_as_amber(), test_stiffness_band_edges_and_the_rule_of_thumb_without_a_band(), test_stiffness_worst_time_ignores_the_first_fifth_of_a_second(), test_tank_peak_against_mawp_meop_and_the_design_cap(), test_the_chug_amber_edge_follows_a_requirement_above_one_point_two_but_never_below_it(), test_the_delivered_chug_minimum_maps_onto_the_series_by_firing_step(), and test_the_reference_run_matches_the_audits_hand_worked_worst_times().
|
protected |
A small burn: two lead-in samples, ``n`` firing steps, dull numbers.
Definition at line 193 of file test_layerx_limits.py.
Referenced by test_a_burn_that_never_ran_dry_says_so(), test_a_design_cap_the_design_never_stated_is_reported_not_graded(), test_a_drawing_basis_run_without_its_stability_block_does_not_grade_the_config_margin(), test_a_malformed_block_costs_only_its_own_grades(), test_a_stated_flag_margin_moves_the_saturation_amber_edge(), test_a_vessel_trip_is_red_at_its_instant(), test_bottle_sag_and_depletion_edges(), test_cavitation_is_red_once_the_orifice_cavitates_and_amber_near_it(), test_chug_from_the_stability_diagnostics_grades_the_settled_minimum_and_reports_the_start(), test_chug_margin_is_red_below_one_and_amber_below_one_point_two(), test_diagnostics_blocks_are_graded_when_present_and_skipped_when_absent(), test_every_entry_carries_the_contract_keys(), test_flight_limits_fall_back_to_the_competition_rules(), test_nozzle_separation_from_the_delivered_exit_pressure(), test_requirements_are_read_from_the_recorded_yaml_without_a_config(), test_separation_from_the_hardware_block_and_schmucker_as_amber(), test_stiffness_band_edges_and_the_rule_of_thumb_without_a_band(), test_stiffness_worst_time_ignores_the_first_fifth_of_a_second(), test_tank_peak_against_mawp_meop_and_the_design_cap(), test_the_chug_amber_edge_follows_a_requirement_above_one_point_two_but_never_below_it(), and test_the_delivered_chug_minimum_maps_onto_the_series_by_firing_step().
|
protected |
Definition at line 36 of file test_layerx_limits.py.
|
protected |
``verdictItems`` + the context ``LayerXResultView`` builds, as the UI ran on 2026-10-02.
Returns {my key: grade} for the items the UI would show.
Definition at line 63 of file test_layerx_limits.py.
References max.
| test_layerx_limits.test_a_burn_that_never_ran_dry_says_so | ( | ) |
Definition at line 396 of file test_layerx_limits.py.
| test_layerx_limits.test_a_burn_with_nothing_to_grade_grades_nothing | ( | ) |
Definition at line 222 of file test_layerx_limits.py.
| test_layerx_limits.test_a_design_cap_the_design_never_stated_is_reported_not_graded | ( | ) |
``max_*_tank_pressure_psi`` default to 700 / 850 psi in the schema with no source. A design that states its caps (LE4: 600 / 600) is graded against them; one that does not gets the default reported as information, and says so, rather than amber against a number nobody chose.
Definition at line 350 of file test_layerx_limits.py.
| test_layerx_limits.test_a_drawing_basis_run_without_its_stability_block_does_not_grade_the_config_margin | ( | ) |
A run graded on the drawing's feed (``options.chug_basis``, decided 2026-10-03) that carries no stability block -- every set-point, Hardware, reconcile and sweep burn -- has only the replay's margin, on EngineDesign's feed_system. It was graded as "the" chug margin: 1.21 'ok' on LE4 (3), where the drawing basis grades 1.004 'warn'. It is now information, labelled with its basis. A run saved before the decision (no options, or ``config``) grades it as it always did.
Definition at line 276 of file test_layerx_limits.py.
| test_layerx_limits.test_a_malformed_block_costs_only_its_own_grades | ( | ) |
Definition at line 534 of file test_layerx_limits.py.
References _result().
| test_layerx_limits.test_a_stated_flag_margin_moves_the_saturation_amber_edge | ( | ) |
Definition at line 456 of file test_layerx_limits.py.
| test_layerx_limits.test_a_vessel_trip_is_red_at_its_instant | ( | ) |
Definition at line 403 of file test_layerx_limits.py.
| test_layerx_limits.test_bottle_sag_and_depletion_edges | ( | ) |
Definition at line 379 of file test_layerx_limits.py.
| test_layerx_limits.test_cavitation_is_red_once_the_orifice_cavitates_and_amber_near_it | ( | ratio, | |
| expect ) |
Definition at line 450 of file test_layerx_limits.py.
| test_layerx_limits.test_chug_from_the_stability_diagnostics_grades_the_settled_minimum_and_reports_the_start | ( | ) |
Definition at line 227 of file test_layerx_limits.py.
| test_layerx_limits.test_chug_margin_is_red_below_one_and_amber_below_one_point_two | ( | margin, | |
| expect ) |
Definition at line 251 of file test_layerx_limits.py.
| test_layerx_limits.test_diagnostics_blocks_are_graded_when_present_and_skipped_when_absent | ( | ) |
Definition at line 413 of file test_layerx_limits.py.
| test_layerx_limits.test_every_entry_carries_the_contract_keys | ( | ) |
Definition at line 541 of file test_layerx_limits.py.
References _result().
| test_layerx_limits.test_flight_limits_fall_back_to_the_competition_rules | ( | ) |
A design that states no rail-exit or static-margin requirement is graded against FAR-OUT's (2024-25 rules 5.1.4 and 5.1.5), and says so: a 21.7 m/s rail exit used to drop out of the limits altogether and leave the Overview reading "Within limits" (D-59).
Definition at line 487 of file test_layerx_limits.py.
| test_layerx_limits.test_nozzle_separation_from_the_delivered_exit_pressure | ( | ) |
Definition at line 477 of file test_layerx_limits.py.
| test_layerx_limits.test_requirements_are_read_from_the_recorded_yaml_without_a_config | ( | ) |
Definition at line 527 of file test_layerx_limits.py.
| test_layerx_limits.test_separation_from_the_hardware_block_and_schmucker_as_amber | ( | ) |
Definition at line 467 of file test_layerx_limits.py.
| test_layerx_limits.test_stiffness_band_edges_and_the_rule_of_thumb_without_a_band | ( | ) |
Definition at line 303 of file test_layerx_limits.py.
| test_layerx_limits.test_stiffness_worst_time_ignores_the_first_fifth_of_a_second | ( | ) |
Definition at line 318 of file test_layerx_limits.py.
| test_layerx_limits.test_tank_peak_against_mawp_meop_and_the_design_cap | ( | ) |
Definition at line 328 of file test_layerx_limits.py.
| test_layerx_limits.test_the_chug_amber_edge_follows_a_requirement_above_one_point_two_but_never_below_it | ( | ) |
Definition at line 260 of file test_layerx_limits.py.
| test_layerx_limits.test_the_delivered_chug_minimum_maps_onto_the_series_by_firing_step | ( | ) |
Definition at line 294 of file test_layerx_limits.py.
| test_layerx_limits.test_the_reference_run_matches_the_audits_hand_worked_worst_times | ( | ) |
AUDIT 9.9 D, worked by hand from the series of run 7e47d1.
Definition at line 127 of file test_layerx_limits.py.
References _by_key().
| test_layerx_limits.test_the_worst_index_points_at_the_graded_value | ( | name, | |
| result ) |
Definition at line 165 of file test_layerx_limits.py.
References min.
| test_layerx_limits.needs_saved = pytest.mark.skipif(not SAVED, reason="no saved Layer X burns in .userdata (the user's runs)") |
Definition at line 49 of file test_layerx_limits.py.
| float test_layerx_limits.PSI = 6894.757293168361 |
Definition at line 33 of file test_layerx_limits.py.
| str test_layerx_limits.REFERENCE = RUNS / "20261002-231658-7e47d1.json" |
Definition at line 32 of file test_layerx_limits.py.
| str test_layerx_limits.RUNS = Path(__file__).resolve().parents[1] / ".userdata" / "local" / "engine" / "layerx" / "runs" |
Definition at line 31 of file test_layerx_limits.py.
| test_layerx_limits.SAVED = _saved_burns() |
Definition at line 48 of file test_layerx_limits.py.
| dict test_layerx_limits.SERIES_BACKED |
Definition at line 158 of file test_layerx_limits.py.
| dict test_layerx_limits.VERDICT |
Definition at line 59 of file test_layerx_limits.py.