# H-0126 (#295) measurements run in the foreground, 2026-10-13, Python 3.11.14,
# isolated venv built by floors_probe.sh (run1). Output copied verbatim.

## attribute2.sh (1): LightGBM minors, early_stopping_round=0 case
## (tests/test_tuning/test_space_merge.py::test_removed_training_dimension_admission)
== lgb_4.0.0: 1 failed, 1 passed, 4 warnings in 0.83s
== lgb_4.1.0: 1 failed, 1 passed, 4 warnings in 0.74s
== lgb_4.2.0: 1 failed, 1 passed, 4 warnings in 0.67s
== lgb_4.3.0: 1 failed, 1 passed, 4 warnings in 0.72s
== lgb_4.4.0: 2 passed, 4 warnings in 0.64s
== lgb_4.5.0: 2 passed, 4 warnings in 0.66s
== lgb_4.6.0: 2 passed, 4 warnings in 0.64s
# failing trials at 4.0.0: "ValueError: For early stopping, at least one dataset and eval metric is required for evaluation"

## attribute2.sh (2): Platt TNC (test_calibration_params_codegen params1); UPPER set, one package back at its floor
== cal_all_upper: 1 failed, 5 passed
== cal_down_numpy==1.24.0 / pandas==2.0.0 / scikit-learn==1.3.0 / scipy==1.10.0 / lightgbm==4.0.0 / optuna==3.4.0 / pydantic==2.11.0: 1 failed, 5 passed (each)
# UPPER = numpy 1.26.4, pandas 2.2.3, scikit-learn 1.5.2, scipy 1.13.1, lightgbm 4.6.0, optuna 4.7.0, pydantic 2.12.5

## attribute3.sh: Platt TNC, UPPER plus one package toward the lock
== up_scipy==1.14.1 / 1.15.3 / 1.16.3 / 1.17.1: 1 failed, 5 passed (numpy 1.26.4)
== up_numpy==2.0.2: 6 passed
== up_numpy==2.4.2: 6 passed
== up_scikit-learn==1.8.0: 1 failed, 5 passed
== up_pandas==3.0.1: 1 failed, 5 passed

## probe_platt.py: same input under numpy 1.24.0/pandas 2.0.0 and numpy 2.4.2/pandas 3.0.1
data sha256 8ff23e5062e1f122 (both); oof sha256 48158a82ab094ac3 (both)
logit(oof) Platt coef: (-1.3193801087771848, 0.18258217212933042) vs (-1.3193800923924675, 0.1825821709103945)

## probe_platt2.py: the failing stage and the generated fitter on the same scores
numpy 1.24.0: runtime fit: CALIBRATION_FAILED {'method': 'TNC', 'stage': 'c_final'}
numpy 1.24.0: oof_raw_scores (c_final input): runtime=refused CALIBRATION_FAILED | generated=refused RuntimeError
numpy 2.4.2:  runtime fit: ok
numpy 2.4.2:  oof_raw_scores (c_final input): runtime={'a': -1.319380090644954, 'b': 0.1825821707804422} | generated= the same values

## pydantic_loop.sh after schema.py imports ModelWrapValidatorHandler under TYPE_CHECKING only
2.0     import-fail  TypeError: `discriminator` can only be used with `Union` type with more than one variant
2.1.0 .. 2.12.0  import-ok (every minor)

## optuna: get_all_study_summaries in place of get_all_study_names at optuna 3.1.0 (reverted)
tests/test_tuning tests/test_plots tests/test_core: 75 failed, 7669 passed
  66+3+2 AttributeError: ... has no attribute 'get_all_study_names' (tests call the API), 1 DataFrame.columns are different, 1 int64_Int64 (pandas)
optuna 3.0.*: uv pip install --dry-run resolves scipy 1.8.1 (below the calibration extra's scipy>=1.10)

## pandas boundary for test_hash_pandas_object_alone_misses_the_auxiliary_cases (int64 vs Int64)
pandas 2.0.3: 1 failed; 2.1.0: 1 failed; 2.1.4: 1 failed; 2.2.0: 1 passed

## pydantic 2.0 with the single-variant discriminator also removed (reverted)
import still fails: lizyml/config/schema.py:560 (TrainingConfig, field `inner_valid: InnerValidConfig | None`, schema.py:455), same TypeError

## probe_platt_seeds.py (seeds 0-11, platt + TNC, target_smoothing=False)
numpy 1.24.0: seed 6 CALIBRATION_FAILED c_final; ok seeds [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11]
numpy 2.4.2: ok seeds [0..11]

## uv lock --check negative control
pyproject numpy>=1.25 without uv lock: exit 1 "The lockfile at uv.lock needs to be updated"; restored: exit 0

## check_dependency_floors.py in the locked .venv (negative control): 11 of 11 requirement(s) are not at their floor, exit 1
