codadapt 1.0.0rc2__tar.gz → 1.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. {codadapt-1.0.0rc2 → codadapt-1.0.1}/BENCHMARKS.md +1 -1
  2. {codadapt-1.0.0rc2 → codadapt-1.0.1}/CHANGELOG.md +26 -1
  3. {codadapt-1.0.0rc2 → codadapt-1.0.1}/PKG-INFO +24 -24
  4. {codadapt-1.0.0rc2 → codadapt-1.0.1}/README.md +21 -21
  5. codadapt-1.0.1/RELEASE_NOTES.md +28 -0
  6. {codadapt-1.0.0rc2 → codadapt-1.0.1}/SECURITY.md +2 -2
  7. {codadapt-1.0.0rc2 → codadapt-1.0.1}/docs/ALGORITHM.md +1 -1
  8. {codadapt-1.0.0rc2 → codadapt-1.0.1}/docs/API.md +3 -3
  9. {codadapt-1.0.0rc2 → codadapt-1.0.1}/docs/LARGE_DATASETS.md +11 -12
  10. codadapt-1.0.1/docs/PYTHON_COMPATIBILITY.md +51 -0
  11. codadapt-1.0.1/docs/RELEASING.md +53 -0
  12. {codadapt-1.0.0rc2 → codadapt-1.0.1}/docs/SAFE_BLEND_EXPERIMENTAL.md +1 -1
  13. codadapt-1.0.1/docs/STABILITY.md +73 -0
  14. {codadapt-1.0.0rc2 → codadapt-1.0.1}/examples/kaggle_quickstart.ipynb +13 -22
  15. {codadapt-1.0.0rc2 → codadapt-1.0.1}/pyproject.toml +2 -2
  16. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/_multiclass.py +2 -2
  17. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/_training.py +8 -0
  18. codadapt-1.0.1/src/codadapt/_version.py +1 -0
  19. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt.egg-info/PKG-INFO +24 -24
  20. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt.egg-info/SOURCES.txt +1 -0
  21. codadapt-1.0.1/tests/test_cardinality.py +78 -0
  22. codadapt-1.0.0rc2/RELEASE_NOTES.md +0 -186
  23. codadapt-1.0.0rc2/docs/PYTHON_COMPATIBILITY.md +0 -80
  24. codadapt-1.0.0rc2/docs/RELEASING.md +0 -79
  25. codadapt-1.0.0rc2/docs/STABILITY.md +0 -73
  26. codadapt-1.0.0rc2/src/codadapt/_version.py +0 -1
  27. {codadapt-1.0.0rc2 → codadapt-1.0.1}/.github/workflows/publish-pypi.yml +0 -0
  28. {codadapt-1.0.0rc2 → codadapt-1.0.1}/.github/workflows/publish-testpypi.yml +0 -0
  29. {codadapt-1.0.0rc2 → codadapt-1.0.1}/.github/workflows/release-qualification.yml +0 -0
  30. {codadapt-1.0.0rc2 → codadapt-1.0.1}/.github/workflows/tests.yml +0 -0
  31. {codadapt-1.0.0rc2 → codadapt-1.0.1}/CONTRIBUTING.md +0 -0
  32. {codadapt-1.0.0rc2 → codadapt-1.0.1}/LICENSE +0 -0
  33. {codadapt-1.0.0rc2 → codadapt-1.0.1}/MANIFEST.in +0 -0
  34. {codadapt-1.0.0rc2 → codadapt-1.0.1}/benchmarks/reproducibility/benchmark_codadapt_cv.py +0 -0
  35. {codadapt-1.0.0rc2 → codadapt-1.0.1}/benchmarks/run_benchmarks.py +0 -0
  36. {codadapt-1.0.0rc2 → codadapt-1.0.1}/docs/EBM_COMPILER.md +0 -0
  37. {codadapt-1.0.0rc2 → codadapt-1.0.1}/examples/basic_classification.py +0 -0
  38. {codadapt-1.0.0rc2 → codadapt-1.0.1}/examples/basic_multiclass.py +0 -0
  39. {codadapt-1.0.0rc2 → codadapt-1.0.1}/examples/basic_regression.py +0 -0
  40. {codadapt-1.0.0rc2 → codadapt-1.0.1}/examples/release_smoke.py +0 -0
  41. {codadapt-1.0.0rc2 → codadapt-1.0.1}/setup.cfg +0 -0
  42. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/__init__.py +0 -0
  43. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/_base.py +0 -0
  44. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/_core.py +0 -0
  45. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/_multiclass_artifact.py +0 -0
  46. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/_multiclass_packing.py +0 -0
  47. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/classifier.py +0 -0
  48. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/experimental/__init__.py +0 -0
  49. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/experimental/_compiler.py +0 -0
  50. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/experimental/_model.py +0 -0
  51. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/experimental/_rational.py +0 -0
  52. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/experimental/_safe_blend.py +0 -0
  53. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/preprocessing.py +0 -0
  54. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt/regressor.py +0 -0
  55. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt.egg-info/dependency_links.txt +0 -0
  56. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt.egg-info/requires.txt +0 -0
  57. {codadapt-1.0.0rc2 → codadapt-1.0.1}/src/codadapt.egg-info/top_level.txt +0 -0
  58. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/_binary_reference.py +0 -0
  59. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/_multiclass_helpers.py +0 -0
  60. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/conftest.py +0 -0
  61. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_adaptive_levels.py +0 -0
  62. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_addressing.py +0 -0
  63. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_classifier.py +0 -0
  64. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_classifier_training.py +0 -0
  65. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_coded_memory.py +0 -0
  66. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_default_api.py +0 -0
  67. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_ebm_compiler.py +0 -0
  68. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_incremental_gain.py +0 -0
  69. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_independence.py +0 -0
  70. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_memory_budget.py +0 -0
  71. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_multiclass.py +0 -0
  72. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_no_leakage.py +0 -0
  73. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_packaging.py +0 -0
  74. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_persistence.py +0 -0
  75. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_pre_rc_api.py +0 -0
  76. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_preprocessing.py +0 -0
  77. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_rational_callback.py +0 -0
  78. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_regressor.py +0 -0
  79. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_release_contracts.py +0 -0
  80. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_safe_blend.py +0 -0
  81. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_shared_encoder.py +0 -0
  82. {codadapt-1.0.0rc2 → codadapt-1.0.1}/tests/test_sklearn_compat.py +0 -0
@@ -1,7 +1,7 @@
1
1
  # Benchmark Disclosure
2
2
 
3
3
  The later independent SafeBlend regression qualification takes precedence for
4
- current **1.0.0rc1 candidate SafeBlend positioning**: compact serialized models were confirmed,
4
+ current **1.0.0 SafeBlend positioning**: compact serialized models were confirmed,
5
5
  while predictive quality leadership was not. The frozen blind NEW_EXTERNAL panel
6
6
  remains the primary binary/multiclass evidence and its library-wide verdict remains
7
7
  **PRODUCT_POSITION_MIXED**. Earlier external pilots are secondary/historical evidence;
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.1 — prepared locally, publication pending
4
+
5
+ - Optimize exact training metadata cardinality counts for native one- and
6
+ two-feature codes, including Shared OVR's existing count cache. Predictions,
7
+ fitted numeric state, API, defaults and model format are unchanged. This is
8
+ an internal training-speed optimization; no accuracy, inference-speed or
9
+ memory improvement is claimed. This patch preserves the learned model and
10
+ predictions; local preparation does not publish 1.0.1.
11
+
12
+ ## 1.0.0
13
+
14
+ - Finalize stable native CodAdapt/Classifier/Regressor API from qualified RC2;
15
+ keyword-only construction, active defaults and predictive/resource semantics unchanged.
16
+ - Retain Shared OVR multiclass, clear failed-fit state and configurable native
17
+ memory_budget_mb=512MiB with external-validation accounting.
18
+ - Keep SafeBlend and EBM compilation experimental; BucketEncoder stays private.
19
+ - Finalize version/installation/metadata/stability/persistence/release documentation.
20
+ Same-version matching-environment persistence is supported; cross-version portability is not guaranteed.
21
+ - Preserve mixed blind competitiveness and compact-specialist SafeBlend evidence;
22
+ no new algorithm, predictive promotion, runtime dependency or benchmark is introduced.
23
+ - Stable publication remains a separate maintainer-only action after qualification.
24
+
25
+ The following entries preserve earlier prerelease preparation history, including
26
+ their availability statements at that time; they do not describe current1.0.1 availability.
27
+
3
28
  ## 1.0.0rc2 — prepared locally, not published
4
29
 
5
30
  - Add native `memory_budget_mb=512` as a positive integer MiB admission budget.
@@ -36,7 +61,7 @@
36
61
  historical; the version bump makes no new performance claim.
37
62
 
38
63
  The entries below record preparation of the historical 0.2.0rc2 line. Their
39
- version statements describe that earlier work, not the current 1.0.0rc2 candidate.
64
+ version statements describe that earlier work, not the current1.0.1 source.
40
65
 
41
66
  ## Historical 0.2.0rc2 preparation — pre-1.0 API cleanup
42
67
 
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codadapt
3
- Version: 1.0.0rc2
4
- Summary: Experimental tabular learning with adaptive coded memory and shared multi-resolution encoding
3
+ Version: 1.0.1
4
+ Summary: Native tabular learning with adaptive coded memory and shared multi-resolution encoding
5
5
  Author: Luca Lullo
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/lucalullo/codadapt
8
8
  Project-URL: Repository, https://github.com/lucalullo/codadapt
9
9
  Project-URL: Issues, https://github.com/lucalullo/codadapt/issues
10
10
  Keywords: tabular,machine-learning,adaptive-codes,numpy
11
- Classifier: Development Status :: 4 - Beta
11
+ Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Science/Research
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Classifier: Programming Language :: Python :: 3.10
@@ -43,9 +43,9 @@ Dynamic: license-file
43
43
 
44
44
  CodAdapt is a compact native tabular model family with mixed predictive competitiveness across tasks. Its native estimator uses **adaptive coded memory with shared multi-resolution encoding** for binary and multiclass classification and single-target regression, while preserving a scikit-learn-style API.
45
45
 
46
- **CodAdapt 1.0.0rc2 is a prerelease candidate with native binary classification, Shared OVR multiclass and regression, a fully native experimental SafeBlend regressor and an optional EBM compiler/import tool.** The compiler can export supported additive EBM models into compact standalone CodAdapt lookup models that no longer require the EBM teacher at inference time.
46
+ **CodAdapt 1.0.1 provides a stable native API for binary classification, Shared OVR multiclass and regression. SafeBlend and the optional EBM compiler remain experimental.** The compiler can export supported additive EBM models into compact standalone CodAdapt lookup models that no longer require the EBM teacher at inference time.
47
47
 
48
- This candidate prepares product and API stability; it is **not stable 1.0.0** and this documentation does not announce publication. It is intended for reproducible evaluation and practical tabular workflows. It does not claim universal superiority over established tree-based models.
48
+ The 1.x stability contract covers the documented native API. It is intended for reproducible evaluation and practical tabular workflows; stability does not imply benchmark leadership. It does not claim universal superiority over established tree-based models.
49
49
 
50
50
  ## Highlights
51
51
 
@@ -71,22 +71,20 @@ The native CodAdapt default remains the architecture selected during the 0.1 dev
71
71
 
72
72
  ## Installation
73
73
 
74
- ### From a locally built wheel
75
-
76
- Use Python **3.10–3.14** in a virtual environment. Activate that environment using
77
- your platform's normal command, then install the artifact you have built or received:
74
+ Use Python **3.10–3.14** in a virtual environment:
78
75
 
79
76
  ```bash
80
77
  python -m venv .venv
81
- python -m pip install ./dist/codadapt-1.0.0rc2-py3-none-any.whl
78
+ # Activate the environment using your platform's normal command.
79
+ python -m pip install codadapt
82
80
  python -c "import codadapt; print(codadapt.__version__)"
83
81
  ```
84
82
 
85
- The current candidate source version is **1.0.0rc2**, a PEP 440 prerelease, not
86
- stable 1.0.0 or an announcement of a PyPI release. Historical RC2 artifacts and
87
- tags remain unchanged. Retain artifact SHA256 and dependency versions. See the
88
- [compatibility policy](https://github.com/lucalullo/codadapt/blob/main/docs/PYTHON_COMPATIBILITY.md) for executed evidence and
89
- remaining platform gates, and [release procedure](https://github.com/lucalullo/codadapt/blob/main/docs/RELEASING.md) for qualification.
83
+ Before publication, install the locally built `dist/codadapt-1.0.1-py3-none-any.whl`.
84
+ After publication, use `python -m pip install codadapt==1.0.1` for an exact environment.
85
+ Retain artifact SHA256 and dependency versions. See the
86
+ [compatibility policy](https://github.com/lucalullo/codadapt/blob/main/docs/PYTHON_COMPATIBILITY.md)
87
+ and [release procedure](https://github.com/lucalullo/codadapt/blob/main/docs/RELEASING.md).
90
88
 
91
89
  To compile an already fitted supported EBM teacher, install the optional dependency:
92
90
 
@@ -203,10 +201,9 @@ print(f"Mean ROC-AUC: {np.mean(scores):.6f}")
203
201
 
204
202
  ## Data handling
205
203
 
206
- For large datasets, the **1.0.0rc2 candidate** adds `memory_budget_mb=512`
207
- (positive integer MiB), including external validation in its admission estimate.
208
- See [LARGE_DATASETS.md](docs/LARGE_DATASETS.md) before increasing it. This parameter
209
- is unavailable in published 1.0.0rc1; RC2 is not published by this preparation. The budget
204
+ For large datasets, native estimators expose `memory_budget_mb=512`
205
+ (positive integer MiB), including external validation in the admission estimate.
206
+ See [LARGE_DATASETS.md](docs/LARGE_DATASETS.md) before increasing it. The budget
210
207
  is not a total-RSS cap or an OOM guarantee.
211
208
 
212
209
  With pandas DataFrames, supported numeric columns are treated as numerical features. String/object, `category`, boolean, and nullable-boolean columns are handled as categorical features. Missing values are handled natively.
@@ -304,7 +301,7 @@ for inputs, fitted diagnostics, persistence, costs and limitations.
304
301
 
305
302
  ## Experimental EBM compilation
306
303
 
307
- CodAdapt 1.0.0rc2 retains an **experimental, opt-in** compiler for supported additive `interpret-core==0.7.8` EBM models. Install the [optional `ebm` extra](#installation) when compiling a fitted teacher; the native CodAdapt installation remains independent of interpret.
304
+ CodAdapt 1.0.1 retains an **experimental, opt-in** compiler for supported additive `interpret-core==0.7.8` EBM models. Install the [optional `ebm` extra](#installation) when compiling a fitted teacher; the native CodAdapt installation remains independent of interpret.
308
305
 
309
306
  ```python
310
307
  from codadapt.experimental import compile_ebm
@@ -545,17 +542,20 @@ These files are development documentation and are intentionally excluded from th
545
542
 
546
543
  ## Status
547
544
 
548
- CodAdapt 1.0.0rc2 is a **prerelease candidate**, not stable 1.0.0. The binary and regression algorithms remain unchanged from the validated 0.1 line. Native multiclass Shared OVR is included; SafeBlend and the EBM compiler remain opt-in and experimental. No publication or tag is created by candidate preparation.
545
+ CodAdapt 1.0.1 retains the stable native API and exact learned model while reducing training time.
546
+ It preserves RC2 predictive training semantics,
547
+ prediction and resource-admission behavior. Native multiclass Shared OVR is included;
548
+ SafeBlend and the EBM compiler remain opt-in and experimental. Source preparation
549
+ does not perform publication or create a tag.
549
550
 
550
551
  Current independent evidence supports SafeBlend as a **compact regression specialist**,
551
552
  with strong serialized-size savings and faster inference on the tested hardware,
552
553
  but weaker median predictive quality than the external leader. Classification
553
554
  competitiveness remains mixed on the earlier blind panel.
554
555
 
555
- The native API is frozen as a candidate for the future 1.x contract described in
556
+ The native API follows the 1.x contract described in
556
557
  [STABILITY.md](https://github.com/lucalullo/codadapt/blob/main/docs/STABILITY.md).
557
- Stable guarantees take effect only when stable 1.0 is published; experimental and
558
- private components are excluded. See the [release notes](https://github.com/lucalullo/codadapt/blob/main/RELEASE_NOTES.md)
558
+ Experimental and private components are excluded from the stable contract. See the [release notes](https://github.com/lucalullo/codadapt/blob/main/RELEASE_NOTES.md)
559
559
  for migration, known limitations and persistence scope.
560
560
 
561
561
  ## License
@@ -2,9 +2,9 @@
2
2
 
3
3
  CodAdapt is a compact native tabular model family with mixed predictive competitiveness across tasks. Its native estimator uses **adaptive coded memory with shared multi-resolution encoding** for binary and multiclass classification and single-target regression, while preserving a scikit-learn-style API.
4
4
 
5
- **CodAdapt 1.0.0rc2 is a prerelease candidate with native binary classification, Shared OVR multiclass and regression, a fully native experimental SafeBlend regressor and an optional EBM compiler/import tool.** The compiler can export supported additive EBM models into compact standalone CodAdapt lookup models that no longer require the EBM teacher at inference time.
5
+ **CodAdapt 1.0.1 provides a stable native API for binary classification, Shared OVR multiclass and regression. SafeBlend and the optional EBM compiler remain experimental.** The compiler can export supported additive EBM models into compact standalone CodAdapt lookup models that no longer require the EBM teacher at inference time.
6
6
 
7
- This candidate prepares product and API stability; it is **not stable 1.0.0** and this documentation does not announce publication. It is intended for reproducible evaluation and practical tabular workflows. It does not claim universal superiority over established tree-based models.
7
+ The 1.x stability contract covers the documented native API. It is intended for reproducible evaluation and practical tabular workflows; stability does not imply benchmark leadership. It does not claim universal superiority over established tree-based models.
8
8
 
9
9
  ## Highlights
10
10
 
@@ -30,22 +30,20 @@ The native CodAdapt default remains the architecture selected during the 0.1 dev
30
30
 
31
31
  ## Installation
32
32
 
33
- ### From a locally built wheel
34
-
35
- Use Python **3.10–3.14** in a virtual environment. Activate that environment using
36
- your platform's normal command, then install the artifact you have built or received:
33
+ Use Python **3.10–3.14** in a virtual environment:
37
34
 
38
35
  ```bash
39
36
  python -m venv .venv
40
- python -m pip install ./dist/codadapt-1.0.0rc2-py3-none-any.whl
37
+ # Activate the environment using your platform's normal command.
38
+ python -m pip install codadapt
41
39
  python -c "import codadapt; print(codadapt.__version__)"
42
40
  ```
43
41
 
44
- The current candidate source version is **1.0.0rc2**, a PEP 440 prerelease, not
45
- stable 1.0.0 or an announcement of a PyPI release. Historical RC2 artifacts and
46
- tags remain unchanged. Retain artifact SHA256 and dependency versions. See the
47
- [compatibility policy](https://github.com/lucalullo/codadapt/blob/main/docs/PYTHON_COMPATIBILITY.md) for executed evidence and
48
- remaining platform gates, and [release procedure](https://github.com/lucalullo/codadapt/blob/main/docs/RELEASING.md) for qualification.
42
+ Before publication, install the locally built `dist/codadapt-1.0.1-py3-none-any.whl`.
43
+ After publication, use `python -m pip install codadapt==1.0.1` for an exact environment.
44
+ Retain artifact SHA256 and dependency versions. See the
45
+ [compatibility policy](https://github.com/lucalullo/codadapt/blob/main/docs/PYTHON_COMPATIBILITY.md)
46
+ and [release procedure](https://github.com/lucalullo/codadapt/blob/main/docs/RELEASING.md).
49
47
 
50
48
  To compile an already fitted supported EBM teacher, install the optional dependency:
51
49
 
@@ -162,10 +160,9 @@ print(f"Mean ROC-AUC: {np.mean(scores):.6f}")
162
160
 
163
161
  ## Data handling
164
162
 
165
- For large datasets, the **1.0.0rc2 candidate** adds `memory_budget_mb=512`
166
- (positive integer MiB), including external validation in its admission estimate.
167
- See [LARGE_DATASETS.md](docs/LARGE_DATASETS.md) before increasing it. This parameter
168
- is unavailable in published 1.0.0rc1; RC2 is not published by this preparation. The budget
163
+ For large datasets, native estimators expose `memory_budget_mb=512`
164
+ (positive integer MiB), including external validation in the admission estimate.
165
+ See [LARGE_DATASETS.md](docs/LARGE_DATASETS.md) before increasing it. The budget
169
166
  is not a total-RSS cap or an OOM guarantee.
170
167
 
171
168
  With pandas DataFrames, supported numeric columns are treated as numerical features. String/object, `category`, boolean, and nullable-boolean columns are handled as categorical features. Missing values are handled natively.
@@ -263,7 +260,7 @@ for inputs, fitted diagnostics, persistence, costs and limitations.
263
260
 
264
261
  ## Experimental EBM compilation
265
262
 
266
- CodAdapt 1.0.0rc2 retains an **experimental, opt-in** compiler for supported additive `interpret-core==0.7.8` EBM models. Install the [optional `ebm` extra](#installation) when compiling a fitted teacher; the native CodAdapt installation remains independent of interpret.
263
+ CodAdapt 1.0.1 retains an **experimental, opt-in** compiler for supported additive `interpret-core==0.7.8` EBM models. Install the [optional `ebm` extra](#installation) when compiling a fitted teacher; the native CodAdapt installation remains independent of interpret.
267
264
 
268
265
  ```python
269
266
  from codadapt.experimental import compile_ebm
@@ -504,17 +501,20 @@ These files are development documentation and are intentionally excluded from th
504
501
 
505
502
  ## Status
506
503
 
507
- CodAdapt 1.0.0rc2 is a **prerelease candidate**, not stable 1.0.0. The binary and regression algorithms remain unchanged from the validated 0.1 line. Native multiclass Shared OVR is included; SafeBlend and the EBM compiler remain opt-in and experimental. No publication or tag is created by candidate preparation.
504
+ CodAdapt 1.0.1 retains the stable native API and exact learned model while reducing training time.
505
+ It preserves RC2 predictive training semantics,
506
+ prediction and resource-admission behavior. Native multiclass Shared OVR is included;
507
+ SafeBlend and the EBM compiler remain opt-in and experimental. Source preparation
508
+ does not perform publication or create a tag.
508
509
 
509
510
  Current independent evidence supports SafeBlend as a **compact regression specialist**,
510
511
  with strong serialized-size savings and faster inference on the tested hardware,
511
512
  but weaker median predictive quality than the external leader. Classification
512
513
  competitiveness remains mixed on the earlier blind panel.
513
514
 
514
- The native API is frozen as a candidate for the future 1.x contract described in
515
+ The native API follows the 1.x contract described in
515
516
  [STABILITY.md](https://github.com/lucalullo/codadapt/blob/main/docs/STABILITY.md).
516
- Stable guarantees take effect only when stable 1.0 is published; experimental and
517
- private components are excluded. See the [release notes](https://github.com/lucalullo/codadapt/blob/main/RELEASE_NOTES.md)
517
+ Experimental and private components are excluded from the stable contract. See the [release notes](https://github.com/lucalullo/codadapt/blob/main/RELEASE_NOTES.md)
518
518
  for migration, known limitations and persistence scope.
519
519
 
520
520
  ## License
@@ -0,0 +1,28 @@
1
+ # CodAdapt 1.0.1 release notes
2
+
3
+ Patch release focused on exact training-speed optimization. CodAdapt1.0.1
4
+ substantially reduces native training time while preserving the exact learned
5
+ model and predictions. This source candidate is prepared locally; publication
6
+ and final remote release gates are maintainer actions.
7
+
8
+ The change replaces structured-row distinct counting in training metadata with
9
+ exact scalar counting for native one- and two-feature codes, including Shared
10
+ OVR's existing cache. API, defaults, addressing, learned numeric values,
11
+ probabilities and model-format semantics are unchanged. No new algorithm,
12
+ feature, parameter or dependency is introduced.
13
+
14
+ Controlled local qualification measured a Windows median fit ratio of about
15
+ 0.24× and a WSL ratio of about0.19× versus unpatched1.0.0. Installed-wheel
16
+ qualification also showed strong speedup. These are measured workload results,
17
+ not a promise of the same speedup on every dataset or machine. No accuracy,
18
+ inference-speed or memory improvement is claimed.
19
+
20
+ Python3.10–3.14 and the stable1.0 native API remain supported. SafeBlend and the
21
+ optional additive EBM compiler remain experimental. Same-version trusted
22
+ pickle/joblib persistence requires matching environments; successful1.0.0
23
+ artifact replay does not establish general cross-version portability.
24
+
25
+ The four known sklearn scope XFAIL remain documented. Classification quality
26
+ is still mixed; benchmark and compact-specialist SafeBlend positioning are
27
+ unchanged. See [BENCHMARKS.md](BENCHMARKS.md), [STABILITY.md](docs/STABILITY.md)
28
+ and the [manual release procedure](docs/RELEASING.md).
@@ -1,6 +1,6 @@
1
1
  # Security Policy
2
2
 
3
- The current prerelease candidate is CodAdapt 1.0.0rc2, not stable 1.0.0. Its Python requirement is
3
+ The current source release line is CodAdapt 1.0.1. Its Python requirement is
4
4
  `>=3.10,<3.15`, with Python 3.10–3.14 in the qualified matrix. No support duration is promised.
5
5
  Report suspected vulnerabilities privately to
6
6
  the repository owner with the affected version, reproduction, impact, and suggested mitigation.
@@ -8,7 +8,7 @@ Do not open a public issue containing secrets or private data.
8
8
 
9
9
  CodAdapt is not a security boundary. Treat external schemas and outputs as untrusted where
10
10
  appropriate. Pickle and joblib can execute code while loading; load only trusted artifacts in
11
- compatible environments. No remediation SLA is guaranteed for this experimental prerelease.
11
+ compatible environments. No remediation SLA or support duration is guaranteed. The stable native API does not make CodAdapt a security boundary.
12
12
 
13
13
  Native binary and multiclass training use explicit shared training functions and
14
14
  fit-local caches. Training does not reconstruct or execute source text, and input
@@ -1,4 +1,4 @@
1
- # Current native CodAdapt algorithm (1.0.0rc2 candidate)
1
+ # Current native CodAdapt algorithm (1.0.0)
2
2
 
3
3
  This describes the explicit shared trainer in `_training.py`. Historical
4
4
  coordinate-wise code-move experiments do not describe this public runtime.
@@ -30,7 +30,7 @@ Il costruttore memorizza i parametri; il primo `fit` crea lo stato appreso.
30
30
  | `tol` | `1e-5` | Soglia relativa: gain > tol × max(1, abs(previous_validation_loss)). |
31
31
  | `random_state` | `None` | `None`, intero `[0, 2**32-1]` o `np.random.RandomState`; usa un intero per riprodurre il fit. |
32
32
  | `verbosity` | `0` | 0 silenzioso; 1–2 riepilogo del fit corrente. |
33
- | `memory_budget_mb` | `512` | **Candidate 1.0.0rc2 non pubblicata:** intero positivo in MiB; budget della stima preventiva, non limite RSS. La RC1 pubblicata non espone questo parametro. |
33
+ | `memory_budget_mb` | `512` | Intero positivo in MiB; budget della stima preventiva, non limite RSS. Introdotto nella RC2 e mantenuto invariato in 1.0.0. |
34
34
 
35
35
  Non esiste un parametro pubblico `verbose`. Nessun livello di `verbosity` sopprime
36
36
  globalmente warning o eccezioni. I default non lanciano l'esplorazione dei candidati
@@ -70,12 +70,12 @@ l'ambiente originale. Un load riuscito non rende nuovamente validi i parametri r
70
70
 
71
71
  ## Input
72
72
 
73
- La candidate introduce un budget memoria esplicito conservando il default 512 MiB.
73
+ La versione 1.0.0 conserva il budget memoria esplicito introdotto nella RC2 e il default 512 MiB.
74
74
  La stima ora include anche le righe di `eval_set` esterno prima delle copie e
75
75
  dell'encoding. Non cambia fitting o predizioni dei fit ammessi; può rifiutare
76
76
  validation molto grandi prima ignorate dal guard. Vedere
77
77
  [LARGE_DATASETS.md](LARGE_DATASETS.md) per formula, configurazione, limiti e migrazione.
78
- L'introduzione richiede RC2 prima della stable; non modifica la RC1 già pubblicata.
78
+ La finalizzazione stable non modifica il comportamento qualificato nella RC2.
79
79
 
80
80
  `X` deve essere un DataFrame pandas o un array NumPy numerico bidimensionale. Nei
81
81
  DataFrame, colonne numeriche sono numeriche; `category`, stringhe/`object` con scalari
@@ -1,16 +1,15 @@
1
1
  # Large datasets and memory admission
2
2
 
3
- ## 1.0.0rc2 candidate: not yet published
3
+ ## Stable 1.0.0 resource contract
4
4
 
5
- The published **1.0.0rc1** has a fixed 512 MiB fit-admission budget. The 1.0.0rc2
6
- candidate adds `memory_budget_mb=512` to the native classifier and regressor.
7
- This parameter is **not available in the published RC1**. It requires a separately
8
- qualified RC2 before stable 1.0; these changes do not publish or replace RC1.
5
+ CodAdapt 1.0.0 preserves the `memory_budget_mb=512` parameter introduced in RC2
6
+ for the native classifier and regressor. The scientific recipe, arithmetic and
7
+ admission semantics are unchanged. Historical RC1 lacked this configurable parameter.
9
8
 
10
9
  ```python
11
10
  from codadapt import CodAdaptClassifier
12
11
 
13
- # 1.0.0rc2 candidate only; reserve RAM for the process and caller data.
12
+ # Native 1.0.0; reserve RAM for the process and caller data.
14
13
  model = CodAdaptClassifier(memory_budget_mb=1024, random_state=42)
15
14
  model.fit(X_train, y_train)
16
15
  ```
@@ -36,7 +35,7 @@ Here N is input training rows before zero-weight filtering, P is feature count,
36
35
  T=`n_tables`, F=`features_per_table`, B=`n_bins`, C=`max_categories`, and
37
36
  S=`table_size`. V is external `eval_set` rows, or zero with internal validation.
38
37
  Internal validation is already part of N. External validation accounting is a
39
- candidate safety change; RC1 omitted V. A fit is admitted when E is at most the
38
+ RC2 safety change retained in 1.0.0; RC1 omitted V. A fit is admitted when E is at most the
40
39
  configured budget. Rejection occurs before row copies and encoding, after basic
41
40
  input/target/weight validation. Converting an array-like input itself can allocate
42
41
  memory before this check; prefer an existing ndarray or DataFrame.
@@ -50,8 +49,8 @@ is no universal row limit, and a rejected shape is not proof that the machine la
50
49
  RAM. Do not infer a safe budget from installed RAM alone.
51
50
 
52
51
  At defaults, 699,635 rows and 21 features require **624.72 MiB** by this formula,
53
- so RC1/default admission rejects them even with float32 input. A 1,024 MiB explicit
54
- budget admits that shape in the candidate. Admission and synthetic engineering
52
+ so default admission rejects them even with float32 input. A 1,024 MiB explicit
53
+ budget admits that shape in 1.0.0. Admission and synthetic engineering
55
54
  qualification do not validate the user's undisclosed dataset, arbitrary categories,
56
55
  or every workload of the same shape.
57
56
 
@@ -61,7 +60,7 @@ Dense input bytes alone are N*P*4 for float32 and N*P*8 for float64. Native fitt
61
60
  also keeps raw row selections, multiple uint16 code levels and full-length float64
62
61
  working vectors. Float32 reduces raw input/copy storage, but does not halve total
63
62
  RSS; numeric conversions and learned values still use float64. Casting arbitrary
64
- float64 data to float32 can change cut assignments and predictions. The candidate
63
+ float64 data to float32 can change cut assignments and predictions. The stable finalization
65
64
  does not change internal precision. The guard intentionally remains dtype-neutral.
66
65
 
67
66
  Shared OVR fits K heads sequentially with one shared encoder and a bounded X-only
@@ -95,11 +94,11 @@ Python exception handling; preserve data/checkpoints outside the process.
95
94
 
96
95
  Experimental `SafeBlendRegressor` retains its frozen API and recipe. It does not
97
96
  expose `memory_budget_mb`; its internal Base keeps the 512 MiB default and the
98
- candidate now accounts for its external validation rows. SafeBlend also prepares
97
+ internal Base accounts for its external validation rows. SafeBlend also prepares
99
98
  a numeric DataFrame and fits its Rational component, which has separate temporary
100
99
  allocations. A successful Base fit is not a SafeBlend memory guarantee. No universal
101
100
  large-N SafeBlend guarantee or unlimited-memory mode is supported.
102
101
 
103
102
  Persistence policy remains [STABILITY.md](STABILITY.md). Trusted RC1 native objects
104
- loaded by this candidate receive the historical 512 MiB parameter default. Tested
103
+ loaded by 1.0.0 receive the historical 512 MiB parameter default. Tested
105
104
  loads do not create a general cross-version compatibility promise.
@@ -0,0 +1,51 @@
1
+ # Python compatibility and release policy
2
+
3
+ CodAdapt1.0.1 declares **Python>=3.10,<3.15** and qualifies minors3.10–3.14.
4
+ Metadata/resolver success alone does not prove execution. Each release requires
5
+ installed-artifact numerical imports/Cholesky, pip check, native binary/multiclass/
6
+ regression, categorical/missing inputs, clone/Pipeline/CV, memory admission and
7
+ trusted persistence checks. Test minimum and modern numerical stacks; no claim
8
+ that every allowed dependency combination has been executed.
9
+
10
+ ## Dependency scope
11
+
12
+ NumPy, pandas, scikit-learn, SciPy and threadpoolctl are direct runtime dependencies.
13
+ SciPy is required for native sparse-input checks and SafeBlend numerics. The optional
14
+ EBM compiler pins interpret-core==0.7.8; the teacher is needed only during compilation.
15
+ Native fit and compiled inference require no interpret/LightGBM/XGBoost/CatBoost model.
16
+ Optional extras may have narrower practical compatibility than the native core.
17
+
18
+ ## Evidence and platform boundaries
19
+
20
+ RC2 Windows/Linux/macOS, Python3.10–3.14 and full remote release qualification PASS
21
+ were reported by the maintainer. They are RC2 context, not remotely queried evidence
22
+ or execution of stable1.0.0 workflows. Local stable qualification records exact
23
+ artifact hashes/interpreters/dependency versions separately. Available local Windows
24
+ minors and WSL installed-wheel checks are exercised; WSL is the same hardware.
25
+ The maintainer reports manual release qualification PASS for the optimized1.0.0 main.
26
+ That is USER_CONFIRMED evidence, not fetched logs or qualification of1.0.1 artifacts.
27
+ Candidate1.0.1 macOS and the post-integration remote matrix remain **EXTERNAL_MANUAL_GATE**.
28
+ No local macOS or independent-hardware execution is simulated.
29
+
30
+ Historical Windows DLL/application-control failures occurred in standalone SciPy
31
+ before CodAdapt. Preserve their receipts as numerical-environment limitations; do
32
+ not disable OS security controls or label them algorithm failures. A source workaround
33
+ that reuses old numerical directories is not a fresh dependency installation.
34
+ Stable qualification distinguishes those cases explicitly if they recur.
35
+
36
+ ## Release gate
37
+
38
+ Fast tests.yml covers representative old/new Python and optional EBM. The manual
39
+ release-qualification.yml covers all five minors on Windows, Ubuntu and macOS,
40
+ wheel/sdist installs and installed-wheel suites. Optional compiler gates are separate.
41
+ Workflow definitions are prepared gates until the maintainer executes them against
42
+ the integrated stable commit. Previous-commit CI does not qualify new artifacts.
43
+
44
+ Use maintained interpreter patches in deployment; local patches are test inputs,
45
+ not security recommendations. Hosted Kaggle/Colab images need their own installed-
46
+ package smoke; local tests do not qualify those images. Cross-Python pickle/joblib
47
+ loading remains diagnostic, not guaranteed. Prefer matching environments.
48
+
49
+ No scientific recipe, numerical precision, compiler cells or native validation
50
+ protocol changes accompany the1.0.1 exact training-speed patch. Release uploads, tags and
51
+ workflow execution are maintainer-only actions; preparation performs none of them.
@@ -0,0 +1,53 @@
1
+ # Releasing CodAdapt
2
+
3
+ This is the manual procedure for CodAdapt1.0.1. Local preparation creates no
4
+ commit, tag, index upload, workflow run or GitHub Release. The1.0.1 exact training-speed patch preserves
5
+ the stable1.0 API, learned model and predictions; experimental components
6
+ remain opt-in. See [STABILITY.md](STABILITY.md) and [LARGE_DATASETS.md](LARGE_DATASETS.md).
7
+
8
+ ## Local qualification
9
+
10
+ 1. Identify the current public main from the authoritative read-only clone, not laboratory Git metadata.
11
+ 2. Freeze the qualified exact speed patch, API/defaults and scientific claims. Release preparation changes only version/docs/metadata.
12
+ 3. Set1.0.1, build wheel/sdist from a clean public-only snapshot, run Ruff/format,
13
+ full pytest and Twine; record hashes and four disclosed scope XFAIL.
14
+ 4. Install wheel and sdist in clean package environments outside the source checkout.
15
+ Run pip check, numerical imports/Cholesky, native tasks, SafeBlend branches,
16
+ clone/Pipeline/CV, memory_budget, fresh-process pickle/joblib and reinstall checks.
17
+ 5. Qualify Python3.10–3.14 and available WSL. Record actual platform evidence,
18
+ standalone DLL failures and any reused numerical dependencies accurately.
19
+ 6. Check archive contents/license/metadata/README, teacher-free inference, API and
20
+ trusted1.0.0 artifact replay. Preserve original environments; cross-version persistence is not guaranteed.
21
+ 7. Review consolidated handoff paths/SHA256 and the exact candidate manifest.
22
+ Research memory is intentionally tracked in the repository, excluded from wheel/sdist;
23
+ research_private is never copied or distributed.
24
+
25
+ ## Maintainer-only external gates, in order
26
+
27
+ 1. Integrate the qualified changed public files manually and record the new commit.
28
+ 2. Commit/push manually and obtain push CI PASS on that exact commit.
29
+ 3. Run Manual release qualification (no publishing), including Windows/Linux/macOS
30
+ and Python3.10–3.14. Confirm stable macOS separately from historical RC2 success.
31
+ 4. Publish candidate1.0.1 to TestPyPI through the manual testpypi environment workflow.
32
+ 5. Verify fresh external TestPyPI install, provenance/version, pip check, tasks,
33
+ SafeBlend, memory admission, persistence and uninstall/reinstall; review README rendering.
34
+ 6. Create the future v1.0.1 tag and GitHub Release only after qualification approval.
35
+ 7. Publish1.0.1 to production PyPI through the manual pypi environment workflow.
36
+ 8. Repeat external PyPI smoke and verify final published artifact hashes/metadata.
37
+
38
+ Both publish workflows remain workflow_dispatch only with trusted publishing;
39
+ never add passwords/tokens to source or enable automatic push publishing.
40
+ Package-name/environment ownership and publishing authorization are manual gates.
41
+ Never overwrite a published version or relabel an older archive. Resolve ordinary
42
+ dependencies from the trusted production index, then install the explicit TestPyPI
43
+ package artifact without an unreviewed mixed-index dependency search.
44
+
45
+ ## Integrity and observation
46
+
47
+ Preserve PRODUCT_POSITION_MIXED blind evidence and compact-specialist SafeBlend
48
+ positioning; stable API does not imply benchmark superiority. Repeated splits are
49
+ not new sources. Large-N700k receipts are shape-equivalent synthetic engineering,
50
+ not validation of an undisclosed real dataset. Record actual RC feedback/observation
51
+ without inventing a duration. A critical/high runtime defect blocks stable; research
52
+ failure alone does not. Retain release receipts and plan rollback/yank decisions
53
+ rather than replacing published files. No automatic stable promotion is performed.
@@ -1,7 +1,7 @@
1
1
  # Experimental native SafeBlend regression
2
2
 
3
3
  `codadapt.experimental.SafeBlendRegressor` is an opt-in, fully native regression
4
- estimator in the current **1.0.0rc2 candidate**. Standard CodAdapt installation
4
+ estimator in the current **1.0.1 release line**. Standard CodAdapt installation
5
5
  is sufficient. It fits no external teacher and retains no external model.
6
6
  `CodAdaptRegressor` remains the default. The optional `codadapt[ebm]` compiler is
7
7
  a separate tool and is not used by SafeBlend.
@@ -0,0 +1,73 @@
1
+ # Stability and persistence contract
2
+
3
+ ## Stable native API in 1.0.x
4
+
5
+ The stable surface is `codadapt.CodAdaptClassifier`, its exact alias
6
+ `codadapt.CodAdapt`, `codadapt.CodAdaptRegressor` and `codadapt.__version__`.
7
+ It includes documented constructor parameters/defaults, public methods, input and
8
+ output shapes, class ordering, documented exception categories and inspection
9
+ attributes in [API.md](API.md). Estimators follow scikit-learn constructor,
10
+ clone, parameter and Pipeline conventions. Stable 1.0.0 preserves qualified RC2
11
+ behavior; it introduces no new learner, probability mapping or experimental API.
12
+ The1.0.1 patch changes exact training metadata counting only, with no API, learned-model
13
+ or prediction change.
14
+
15
+ `memory_budget_mb=512` remains a keyword-only positive integer in MiB. It controls
16
+ a deterministic admission heuristic, not total RSS, and includes external validation
17
+ rows. It does not increase model capacity or promise unlimited data size. See
18
+ [LARGE_DATASETS.md](LARGE_DATASETS.md). `features_per_table` remains functional
19
+ only in this memory estimate; native interaction groups are pairs, or a singleton
20
+ when only one feature exists. Numeric resolution remains capped at16 bins.
21
+
22
+ The pre-1.0 removal of seven inactive controls and keyword-only construction is
23
+ documented in the [migration guide](API.md). Those controls do not return in1.0.0.
24
+ Stable API does not mean predictive leadership, a final algorithm, complete sklearn
25
+ certification, arbitrary input support or universal hardware/memory guarantees.
26
+
27
+ ## Experimental and private surfaces
28
+
29
+ `codadapt.experimental` exports `SafeBlendRegressor`, `compile_ebm`,
30
+ `CompilationError`, `CompiledEBMClassifier` and `CompiledEBMRegressor`. They remain
31
+ experimental, opt-in and outside stable API guarantees. SafeBlend is a compact
32
+ regression specialist, not the native default or a general accuracy leader.
33
+ Compiled classes are compiler outputs, not general trainable sklearn estimators.
34
+
35
+ Underscore modules and `codadapt.preprocessing`, including `BucketEncoder`, are
36
+ private implementation details. BucketEncoder is not exported at the root or
37
+ experimental namespace. Its internal import/trusted-pickle path is retained.
38
+ Do not mutate encoders, heads, histories or fitted arrays or depend on their layout.
39
+
40
+ ## Semantic versioning and deprecation
41
+
42
+ Use major versions for intentional incompatible changes to the stable surface,
43
+ minor versions for backward-compatible capabilities and patch versions for fixes.
44
+ Deprecations emit `FutureWarning` at the public call site, document migration in
45
+ the API guide/changelog, and remain for at least two minor releases before removal
46
+ in a major release. Experimental/private surfaces are excluded. Prediction-changing
47
+ default changes require release notes and comparison with existing behavior.
48
+ Malformed inputs may be rejected more clearly by fixes.
49
+
50
+ ## Persistence
51
+
52
+ Pickle/joblib round trips are supported for the same CodAdapt version in a matching
53
+ Python, dependency and platform environment. Record those versions, schema and
54
+ artifact SHA256. Only load trusted files: deserialization can execute arbitrary code.
55
+ Same version does not guarantee portability across different numerical environments.
56
+
57
+ Cross-CodAdapt-version, cross-Python-minor, cross-dependency and cross-platform
58
+ loading is **not guaranteed**. RC2-to1.0.0 replay is a qualified diagnostic,
59
+ WORKS_NOT_GUARANTEED, not a permanent migration contract. The same scope applies to
60
+ tested1.0.0-to1.0.1 artifact replay; successful replay does not widen this guarantee. No stable interchange
61
+ format, automatic migration or long-term serialized-layout compatibility is promised.
62
+ Keep the original environment when archiving models.
63
+
64
+ ## Fitting, reproducibility and concurrency
65
+
66
+ Fit returns self. Failed fit/refit leaves the estimator unfitted; complete a valid
67
+ new fit before predicting. Concurrent read-only predict/predict_proba has smoke
68
+ coverage. Concurrent fits, fit-with-predict and parameter/fitted-state mutation are
69
+ unsupported. SafeBlend fit thread-pool limits are process-wide.
70
+
71
+ Use an integer random_state and identical data/order/configuration/environment for
72
+ repeatability. Bitwise results across numerical versions or platforms are not
73
+ guaranteed. `None` is nondeterministic; prefer integers over shared RandomState objects.