scientific-computing-system 2.2.15__tar.gz → 2.2.18__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 (441) hide show
  1. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/codeql.yml +3 -3
  2. scientific_computing_system-2.2.18/.github/workflows/determinism-matrix.yml +151 -0
  3. scientific_computing_system-2.2.18/.github/workflows/fuzz.yml +38 -0
  4. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/npm-publish.yml +36 -5
  5. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/pypi-release-policy.yml +20 -4
  6. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/release.yml +1 -1
  7. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/scorecard.yml +1 -1
  8. scientific_computing_system-2.2.18/.github/workflows/sign-release.yml +170 -0
  9. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/CHANGELOG.md +19 -0
  10. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/CITATION.cff +2 -2
  11. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/PKG-INFO +15 -13
  12. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/README.md +12 -10
  13. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/SECURITY.md +2 -1
  14. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/codemeta.json +1 -1
  15. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/package.json +1 -1
  16. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/pyproject.toml +8 -3
  17. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/requirements-dev.lock +10 -3
  18. scientific_computing_system-2.2.18/scripts/determinism_matrix.py +543 -0
  19. scientific_computing_system-2.2.18/scripts/determinism_workload.py +64 -0
  20. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/_version.py +2 -2
  21. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/neural.py +14 -2
  22. scientific_computing_system-2.2.18/tests/fuzz/fuzz_bpe_merge.py +27 -0
  23. scientific_computing_system-2.2.18/tests/test_cross_process_determinism.py +109 -0
  24. scientific_computing_system-2.2.18/tests/test_determinism_matrix.py +369 -0
  25. scientific_computing_system-2.2.18/tests/test_layer_seed_determinism_20261025.py +59 -0
  26. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/benchmarks.yml +0 -0
  27. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/bot-reviewer.yml +0 -0
  28. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/changelog.yml +0 -0
  29. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/cli-package-smoke.yml +0 -0
  30. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/dependency-review.yml +0 -0
  31. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/pr-automation.yml +0 -0
  32. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.github/workflows/tests.yml +0 -0
  33. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/.gitignore +0 -0
  34. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/CONTRIBUTING.md +0 -0
  35. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/LICENSE +0 -0
  36. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/benchmarks/results.json +0 -0
  37. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/benchmarks/robust_runner.py +0 -0
  38. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/benchmarks/run_benchmarks.py +0 -0
  39. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/bin/scs.js +0 -0
  40. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/dashboard/app.py +0 -0
  41. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/ARCHITECTURE.md +0 -0
  42. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/CASE_STUDY_HUBBLE.md +0 -0
  43. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
  44. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/api.md +0 -0
  45. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/assets/icon.svg +0 -0
  46. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/assets/logo.svg +0 -0
  47. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/benchmarks.md +0 -0
  48. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/checks/verify_provenance_claims.py +0 -0
  49. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/cookbook.md +0 -0
  50. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/getting-started.md +0 -0
  51. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/index.md +0 -0
  52. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/maintenance.md +0 -0
  53. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/ml_reference.md +0 -0
  54. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/related.md +0 -0
  55. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/research-workflows.md +0 -0
  56. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/stylesheets/extra.css +0 -0
  57. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tour_of_numerical_methods.md +0 -0
  58. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/core_demo.md +0 -0
  59. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/data_analysis_demo.md +0 -0
  60. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/diffeq_demo.md +0 -0
  61. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/fft2_demo.md +0 -0
  62. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/graph_demo.md +0 -0
  63. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/hypothesis_demo.md +0 -0
  64. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/hypothesis_tests_demo.md +0 -0
  65. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
  66. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/knowledge_demo.md +0 -0
  67. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/linalg_demo.md +0 -0
  68. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/math_utils_demo.md +0 -0
  69. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/ml_advanced_demo.md +0 -0
  70. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/ml_and_viz_demo.md +0 -0
  71. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/ml_demo.md +0 -0
  72. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/modeling_demo.md +0 -0
  73. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/montecarlo_demo.md +0 -0
  74. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/nlp_attention_demo.md +0 -0
  75. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/nlp_bpe_demo.md +0 -0
  76. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
  77. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/nlp_viz.md +0 -0
  78. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/numerical_integration_demo.md +0 -0
  79. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/optimization_demo.md +0 -0
  80. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/pandas_io_demo.md +0 -0
  81. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/pca_demo.md +0 -0
  82. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/probability_demo.md +0 -0
  83. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/quantum_demo.md +0 -0
  84. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/quick_start.md +0 -0
  85. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/scientific_demo.md +0 -0
  86. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/signals_demo.md +0 -0
  87. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/stats_demo.md +0 -0
  88. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/stiff_ode_demo.md +0 -0
  89. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/tutorials/time_series_demo.md +0 -0
  90. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/docs/why-pure-python.md +0 -0
  91. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/core_demo.py +0 -0
  92. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/data_analysis_demo.py +0 -0
  93. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/diffeq_demo.py +0 -0
  94. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/discovery_pipeline_demo.py +0 -0
  95. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/ensemble_showcase.py +0 -0
  96. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/fft2_demo.py +0 -0
  97. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/graph_demo.py +0 -0
  98. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/hypothesis_custom_generator.py +0 -0
  99. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/hypothesis_demo.py +0 -0
  100. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/hypothesis_tests_demo.py +0 -0
  101. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/hypothesis_with_stats_demo.py +0 -0
  102. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/interpolate_demo.py +0 -0
  103. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/knowledge_demo.py +0 -0
  104. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/linalg_demo.py +0 -0
  105. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/math_utils_demo.py +0 -0
  106. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/ml_and_viz_demo.py +0 -0
  107. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/modeling_demo.py +0 -0
  108. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/montecarlo_demo.py +0 -0
  109. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/nlp_attention_demo.py +0 -0
  110. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/nlp_bpe_demo.py +0 -0
  111. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/nlp_mini_gpt_demo.py +0 -0
  112. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/nlp_viz_demo.py +0 -0
  113. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/numerical_integration_demo.py +0 -0
  114. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/optimization_demo.py +0 -0
  115. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/pca_demo.py +0 -0
  116. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/pde_demo.py +0 -0
  117. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/plot_demo.py +0 -0
  118. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/plotting_notebook.ipynb +0 -0
  119. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/probability_demo.py +0 -0
  120. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/quantum_demo.py +0 -0
  121. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/scientific_demo.py +0 -0
  122. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/signals_demo.py +0 -0
  123. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/stats_demo.py +0 -0
  124. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/examples/tour_of_numerical_methods.ipynb +0 -0
  125. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/index.js +0 -0
  126. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/mkdocs.yml +0 -0
  127. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/npm.test.js +0 -0
  128. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/paper.bib +0 -0
  129. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/paper.md +0 -0
  130. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/requirements-build.lock +0 -0
  131. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/requirements.lock +0 -0
  132. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/scripts/check_release_toolchain.py +0 -0
  133. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/scripts/check_version_discipline.py +0 -0
  134. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/scripts/check_version_lockstep.py +0 -0
  135. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/scripts/publish.py +0 -0
  136. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/scripts/verify_cli_install.py +0 -0
  137. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/scripts/verify_cookbook.py +0 -0
  138. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/scripts/verify_ml_reference.py +0 -0
  139. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/scripts/verify_release_integrity.py +0 -0
  140. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/__init__.py +0 -0
  141. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/__main__.py +0 -0
  142. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/_paths.py +0 -0
  143. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/bayes/__init__.py +0 -0
  144. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/bayes/conjugate.py +0 -0
  145. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/causal.py +0 -0
  146. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/cli/__init__.py +0 -0
  147. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/cli/__main__.py +0 -0
  148. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/cli/_exit_codes.py +0 -0
  149. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/cli/_handlers.py +0 -0
  150. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/cli/_parser.py +0 -0
  151. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/cli/_style.py +0 -0
  152. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/cli/_system_info.py +0 -0
  153. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/core/__init__.py +0 -0
  154. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/core/_numeric.py +0 -0
  155. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/core/models.py +0 -0
  156. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_analysis/__init__.py +0 -0
  157. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_analysis/dataset.py +0 -0
  158. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_analysis/loader.py +0 -0
  159. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_analysis/pandas_io.py +0 -0
  160. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_analysis/transform.py +0 -0
  161. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_analysis/viz.py +0 -0
  162. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_io/__init__.py +0 -0
  163. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_io/scientific.py +0 -0
  164. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/data_io/streaming.py +0 -0
  165. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/diffeq/__init__.py +0 -0
  166. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/diffeq/_implicit.py +0 -0
  167. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/diffeq/solvers.py +0 -0
  168. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/diffeq/symplectic.py +0 -0
  169. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/fractals/__init__.py +0 -0
  170. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/fractals/sets.py +0 -0
  171. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/genetics/__init__.py +0 -0
  172. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/genetics/sequence.py +0 -0
  173. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/graph/__init__.py +0 -0
  174. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/graph/algorithms.py +0 -0
  175. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/hypothesis/__init__.py +0 -0
  176. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/hypothesis/evaluator.py +0 -0
  177. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/hypothesis/generator.py +0 -0
  178. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/hypothesis/mining.py +0 -0
  179. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/infotheory/__init__.py +0 -0
  180. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/infotheory/measures.py +0 -0
  181. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/interpolate/__init__.py +0 -0
  182. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/knowledge/__init__.py +0 -0
  183. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/knowledge/graph.py +0 -0
  184. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/knowledge/notes.py +0 -0
  185. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/knowledge/retrieval.py +0 -0
  186. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/math_utils/__init__.py +0 -0
  187. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/math_utils/calculus.py +0 -0
  188. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/math_utils/linalg.py +0 -0
  189. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/math_utils/special.py +0 -0
  190. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/math_utils/svd.py +0 -0
  191. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/__init__.py +0 -0
  192. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/boosting.py +0 -0
  193. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/clustering.py +0 -0
  194. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/decomposition.py +0 -0
  195. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/ensemble.py +0 -0
  196. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/linear_models.py +0 -0
  197. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/metrics.py +0 -0
  198. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/model_selection.py +0 -0
  199. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/naive_bayes.py +0 -0
  200. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/neighbors.py +0 -0
  201. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/preprocessing.py +0 -0
  202. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/tree.py +0 -0
  203. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/ml/voting.py +0 -0
  204. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/modeling/__init__.py +0 -0
  205. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/modeling/_base.py +0 -0
  206. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/modeling/_nodes.py +0 -0
  207. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/modeling/expression.py +0 -0
  208. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/modeling/fitting.py +0 -0
  209. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/modeling/model.py +0 -0
  210. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/modeling/solver.py +0 -0
  211. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/montecarlo/__init__.py +0 -0
  212. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/montecarlo/markov.py +0 -0
  213. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/montecarlo/methods.py +0 -0
  214. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/__init__.py +0 -0
  215. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/attention.py +0 -0
  216. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/autograd/__init__.py +0 -0
  217. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/autograd/_grad.py +0 -0
  218. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/autograd/ops.py +0 -0
  219. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/autograd/tensor.py +0 -0
  220. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/bpe.py +0 -0
  221. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/data.py +0 -0
  222. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/embed.py +0 -0
  223. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/layers.py +0 -0
  224. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/model.py +0 -0
  225. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/optim.py +0 -0
  226. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/training.py +0 -0
  227. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/nlp/viz.py +0 -0
  228. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/numerical_integration/__init__.py +0 -0
  229. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/numerical_integration/quadrature.py +0 -0
  230. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/optimization/__init__.py +0 -0
  231. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/optimization/_metaheuristics.py +0 -0
  232. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/optimization/constrained.py +0 -0
  233. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/optimization/minimize.py +0 -0
  234. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/pde/__init__.py +0 -0
  235. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/plot/__init__.py +0 -0
  236. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/plot/_backend.py +0 -0
  237. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/plot/charts.py +0 -0
  238. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/probability/__init__.py +0 -0
  239. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/probability/_advanced.py +0 -0
  240. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/probability/distributions.py +0 -0
  241. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/probability/extra_distributions.py +0 -0
  242. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/provenance/__init__.py +0 -0
  243. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/provenance/manifest.py +0 -0
  244. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/py.typed +0 -0
  245. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/quantum/__init__.py +0 -0
  246. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/quantum/circuit.py +0 -0
  247. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/quantum/multi_qubit.py +0 -0
  248. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/quantum/simulator.py +0 -0
  249. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/scientific/__init__.py +0 -0
  250. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/scientific/constants.py +0 -0
  251. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/scientific/formulas.py +0 -0
  252. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/sensitivity.py +0 -0
  253. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/signals/__init__.py +0 -0
  254. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/signals/filters.py +0 -0
  255. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/signals/processing.py +0 -0
  256. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/signals/stft.py +0 -0
  257. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/signals/wavelet.py +0 -0
  258. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/__init__.py +0 -0
  259. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/_distributions.py +0 -0
  260. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/bootstrap.py +0 -0
  261. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/descriptive.py +0 -0
  262. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/hypothesis_tests.py +0 -0
  263. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/multiple_testing.py +0 -0
  264. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/nonparametric.py +0 -0
  265. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/power.py +0 -0
  266. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/regression.py +0 -0
  267. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/stats/time_series.py +0 -0
  268. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/tools/__init__.py +0 -0
  269. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/tools/adapters.py +0 -0
  270. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/tools/registry.py +0 -0
  271. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/uncertainty/__init__.py +0 -0
  272. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/uncertainty/propagation.py +0 -0
  273. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/units/__init__.py +0 -0
  274. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/units/core.py +0 -0
  275. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/validation/__init__.py +0 -0
  276. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/validation/adequacy.py +0 -0
  277. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/validation/checks.py +0 -0
  278. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/validation/drift.py +0 -0
  279. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/validation/report.py +0 -0
  280. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/wavelets/__init__.py +0 -0
  281. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/wavelets/haar.py +0 -0
  282. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/workflow/__init__.py +0 -0
  283. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/workflow/engine.py +0 -0
  284. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/workflow/gates.py +0 -0
  285. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/workflow/orchestrator.py +0 -0
  286. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/workflow/selection.py +0 -0
  287. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/workflow/tooling.py +0 -0
  288. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/src/cds/workflow/types.py +0 -0
  289. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/__init__.py +0 -0
  290. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/conftest.py +0 -0
  291. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_advanced_fitting.py +0 -0
  292. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_completion_coverage.py +0 -0
  293. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_guard_coverage.py +0 -0
  294. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_hardening.py +0 -0
  295. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_hardening_c1.py +0 -0
  296. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_hardening_c2.py +0 -0
  297. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_hardening_c3.py +0 -0
  298. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_hardening_c4.py +0 -0
  299. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_hardening_coverage.py +0 -0
  300. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_audit_hardening_h1.py +0 -0
  301. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_bayes_v2.py +0 -0
  302. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_benchmarks.py +0 -0
  303. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_bootstrap.py +0 -0
  304. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_causal.py +0 -0
  305. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_cli.py +0 -0
  306. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_cli_color.py +0 -0
  307. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_cli_exit_codes.py +0 -0
  308. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_cli_extended.py +0 -0
  309. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_cli_system_info.py +0 -0
  310. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_codemeta_version_lockstep.py +0 -0
  311. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_constrained_opt.py +0 -0
  312. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_core.py +0 -0
  313. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_data_analysis.py +0 -0
  314. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_data_analysis_lazy_bridge.py +0 -0
  315. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_data_analysis_pandas_io.py +0 -0
  316. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_data_io.py +0 -0
  317. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_data_io_optional_backends.py +0 -0
  318. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_data_io_scientific.py +0 -0
  319. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_dataset.py +0 -0
  320. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_dev_numpy_pin_contract.py +0 -0
  321. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_diffeq.py +0 -0
  322. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_diffeq_implicit.py +0 -0
  323. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_domain_validation.py +0 -0
  324. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_edge_misc_numerical.py +0 -0
  325. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_edge_ml_quantum_linalg.py +0 -0
  326. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_edge_nlp.py +0 -0
  327. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_edge_quantum_evaluator_cli.py +0 -0
  328. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_edge_stats_optimization_signals.py +0 -0
  329. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_extra_distributions.py +0 -0
  330. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_fft2.py +0 -0
  331. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_fitting_bootstrap.py +0 -0
  332. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_fractals.py +0 -0
  333. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_genetics.py +0 -0
  334. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_graph.py +0 -0
  335. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_hardening_20261023.py +0 -0
  336. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_hardening_privacy_provenance.py +0 -0
  337. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_hypothesis.py +0 -0
  338. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_hypothesis_engine.py +0 -0
  339. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_hypothesis_mining.py +0 -0
  340. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_hypothesis_tests.py +0 -0
  341. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_infotheory.py +0 -0
  342. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_interpolate.py +0 -0
  343. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_knowledge.py +0 -0
  344. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_layering.py +0 -0
  345. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_linalg_extended.py +0 -0
  346. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_linalg_qr_cholesky.py +0 -0
  347. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_markov.py +0 -0
  348. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_math_utils.py +0 -0
  349. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_boosting.py +0 -0
  350. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_clustering.py +0 -0
  351. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_ensemble.py +0 -0
  352. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_knn.py +0 -0
  353. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_linreg.py +0 -0
  354. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_logreg.py +0 -0
  355. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_metrics.py +0 -0
  356. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_model_selection.py +0 -0
  357. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_naive_bayes.py +0 -0
  358. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_pca.py +0 -0
  359. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_preprocessing.py +0 -0
  360. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_tree.py +0 -0
  361. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_viz.py +0 -0
  362. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_ml_voting.py +0 -0
  363. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_modeling.py +0 -0
  364. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_modeling_fit_validation.py +0 -0
  365. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_montecarlo.py +0 -0
  366. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_multi_qubit.py +0 -0
  367. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_nlp_attention.py +0 -0
  368. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_nlp_autograd.py +0 -0
  369. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_nlp_bpe.py +0 -0
  370. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_nlp_embed.py +0 -0
  371. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_nlp_layers.py +0 -0
  372. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_nlp_model.py +0 -0
  373. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_nlp_training.py +0 -0
  374. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_nlp_viz.py +0 -0
  375. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_numerical_integration.py +0 -0
  376. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_numerical_invariants.py +0 -0
  377. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_numerical_oracles.py +0 -0
  378. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_optimization.py +0 -0
  379. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_optimization_metaheuristics.py +0 -0
  380. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_path_confinement.py +0 -0
  381. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_pde.py +0 -0
  382. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_plot_charts.py +0 -0
  383. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_plot_lazy.py +0 -0
  384. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_power.py +0 -0
  385. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_probability.py +0 -0
  386. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_probability_advanced.py +0 -0
  387. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_property_invariants.py +0 -0
  388. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_protocol_placeholders.py +0 -0
  389. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_provenance.py +0 -0
  390. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_provenance_audit_hardening.py +0 -0
  391. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_provenance_claims.py +0 -0
  392. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_public_api.py +0 -0
  393. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_quantum.py +0 -0
  394. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_readme_badges.py +0 -0
  395. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_readme_surface.py +0 -0
  396. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_release_contract.py +0 -0
  397. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_release_toolchain.py +0 -0
  398. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_retrieval.py +0 -0
  399. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_runtime_dependency_graph.py +0 -0
  400. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_scientific.py +0 -0
  401. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_seed_hygiene.py +0 -0
  402. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_selection_audit_hardening.py +0 -0
  403. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_sensitivity.py +0 -0
  404. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_sensitivity_global.py +0 -0
  405. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_signals.py +0 -0
  406. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_signals_filters.py +0 -0
  407. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_special_invariants.py +0 -0
  408. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_special_numerics.py +0 -0
  409. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_statistical_audit.py +0 -0
  410. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_stats.py +0 -0
  411. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_stats_audit_coverage.py +0 -0
  412. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_stats_multiple_testing.py +0 -0
  413. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_stats_nonparametric.py +0 -0
  414. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_stats_time_series.py +0 -0
  415. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_stft.py +0 -0
  416. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_streaming_analytics.py +0 -0
  417. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_svd.py +0 -0
  418. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_symplectic.py +0 -0
  419. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_tool_adapters.py +0 -0
  420. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_tools_registry.py +0 -0
  421. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_uncertainty.py +0 -0
  422. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_units.py +0 -0
  423. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation.py +0 -0
  424. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation_adequacy.py +0 -0
  425. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation_advanced.py +0 -0
  426. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation_bounds_nonfinite_regression.py +0 -0
  427. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation_derived_moments_overflow.py +0 -0
  428. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation_derived_tolerance_overflow.py +0 -0
  429. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation_drift.py +0 -0
  430. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation_nonfinite_thresholds_regression.py +0 -0
  431. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_validation_ood_stable_and_coverage.py +0 -0
  432. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_verify_release_integrity.py +0 -0
  433. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_wavelet.py +0 -0
  434. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_wavelets_v2.py +0 -0
  435. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_workflow.py +0 -0
  436. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_workflow_gates.py +0 -0
  437. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_workflow_orchestrator.py +0 -0
  438. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
  439. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_workflow_selection.py +0 -0
  440. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_workflow_selection_coverage.py +0 -0
  441. {scientific_computing_system-2.2.15 → scientific_computing_system-2.2.18}/tests/test_workflow_tooling.py +0 -0
@@ -45,13 +45,13 @@ jobs:
45
45
  with:
46
46
  persist-credentials: false
47
47
  - name: Initialize CodeQL
48
- uses: github/codeql-action/init@24c54180a607b1449ed407dd24f251e4e9147c8d # v4
48
+ uses: github/codeql-action/init@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4
49
49
  with:
50
50
  languages: ${{ matrix.language }}
51
51
  queries: security-and-quality
52
52
  - name: Autobuild
53
- uses: github/codeql-action/autobuild@24c54180a607b1449ed407dd24f251e4e9147c8d # v4
53
+ uses: github/codeql-action/autobuild@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4
54
54
  - name: Perform CodeQL Analysis
55
- uses: github/codeql-action/analyze@24c54180a607b1449ed407dd24f251e4e9147c8d # v4
55
+ uses: github/codeql-action/analyze@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4
56
56
  with:
57
57
  category: "/language:${{ matrix.language }}"
@@ -0,0 +1,151 @@
1
+ name: Determinism matrix
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ concurrency:
14
+ group: determinism-matrix-${{ github.ref }}
15
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
16
+
17
+ jobs:
18
+ matrix:
19
+ name: ${{ matrix.os }} determinism matrix
20
+ runs-on: ${{ matrix.os }}
21
+ timeout-minutes: 20
22
+ permissions:
23
+ contents: read
24
+ strategy:
25
+ fail-fast: false
26
+ matrix:
27
+ os: [ubuntu-latest, macos-latest, windows-latest]
28
+ steps:
29
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
30
+ with:
31
+ persist-credentials: false
32
+ - name: Set up Python
33
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
34
+ with:
35
+ python-version: "3.12"
36
+ cache: 'pip'
37
+ cache-dependency-path: |
38
+ pyproject.toml
39
+ requirements.lock
40
+ requirements-dev.lock
41
+ - name: Install package
42
+ run: |
43
+ python -m pip install --upgrade pip
44
+ pip install ".[test]"
45
+ - name: Run determinism matrix
46
+ run: >
47
+ python scripts/determinism_matrix.py run
48
+ --workload scripts/determinism_workload.py
49
+ --out determinism-manifest-${{ matrix.os }}.json
50
+ --seeds 0 12345 random
51
+ --threads 1 4
52
+ --locales inherit C
53
+ --timezones UTC Europe/Istanbul
54
+ --gate within-host
55
+ - name: Upload manifest
56
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
57
+ with:
58
+ name: determinism-manifest-${{ matrix.os }}
59
+ path: determinism-manifest-${{ matrix.os }}.json
60
+ if-no-files-found: error
61
+ retention-days: 14
62
+
63
+ compare:
64
+ name: Cross-OS digest comparison
65
+ needs: matrix
66
+ runs-on: ubuntu-latest
67
+ timeout-minutes: 10
68
+ permissions:
69
+ contents: read
70
+ steps:
71
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
72
+ with:
73
+ persist-credentials: false
74
+ - name: Set up Python
75
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
76
+ with:
77
+ python-version: "3.12"
78
+ - name: Download manifests
79
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
80
+ with:
81
+ pattern: determinism-manifest-*
82
+ merge-multiple: true
83
+ path: manifests
84
+ - name: Compare manifests
85
+ shell: bash
86
+ run: |
87
+ set -euo pipefail
88
+ shopt -s nullglob
89
+ files=(manifests/*.json)
90
+ failures=0
91
+ printf 'manifest files: %s\n' "${#files[@]}"
92
+ if [ "${#files[@]}" -lt 2 ]; then
93
+ echo "::error::expected a manifest from every operating system, found ${#files[@]}"
94
+ exit 1
95
+ fi
96
+ for ((i = 0; i < ${#files[@]}; i++)); do
97
+ for ((j = i + 1; j < ${#files[@]}; j++)); do
98
+ left=$(basename "${files[$i]}" .json)
99
+ right=$(basename "${files[$j]}" .json)
100
+ echo "=== ${left} vs ${right} ==="
101
+ if ! python scripts/determinism_matrix.py compare \
102
+ "${files[$i]}" "${files[$j]}" --gate > "compare-${left}-${right}.json"; then
103
+ failures=$((failures + 1))
104
+ echo "::error::cross-OS determinism failed or could not be compared: ${left} vs ${right}"
105
+ fi
106
+ done
107
+ done
108
+ if [ "$failures" -ne 0 ]; then
109
+ echo "::error::${failures} manifest pair(s) mismatched or could not be compared"
110
+ exit 1
111
+ fi
112
+ - name: Write comparison summary
113
+ if: always()
114
+ shell: bash
115
+ run: |
116
+ python - <<'PY'
117
+ import glob
118
+ import json
119
+ import os
120
+
121
+ rows = [
122
+ "| baseline | candidate | shared | identical | mismatches | errors |",
123
+ "| --- | --- | --- | --- | --- | --- |",
124
+ ]
125
+ for path in sorted(glob.glob("compare-*.json")):
126
+ try:
127
+ with open(path, encoding="utf-8") as handle:
128
+ data = json.load(handle)
129
+ if not isinstance(data, dict):
130
+ raise ValueError("compare report is not an object")
131
+ except (OSError, ValueError) as error:
132
+ rows.append(f"| {path} | unreadable | - | False | - | {error} |")
133
+ continue
134
+ baseline = (data.get("baseline_host") or {}).get("system", "unknown")
135
+ candidate = (data.get("candidate_host") or {}).get("system", "unknown")
136
+ mismatches = data.get("mismatches") or []
137
+ errors = data.get("errors") or []
138
+ rows.append(
139
+ f"| {baseline} | {candidate} | {data.get('shared_variants', 0)} | "
140
+ f"{data.get('identical', False)} | {len(mismatches)} | {len(errors)} |"
141
+ )
142
+ if len(rows) == 2:
143
+ rows.append("| no comparison reports | - | 0 | False | 0 | 1 |")
144
+ with open(
145
+ os.environ.get("GITHUB_STEP_SUMMARY", os.devnull),
146
+ "a",
147
+ encoding="utf-8",
148
+ ) as handle:
149
+ handle.write("## Cross-OS determinism\n\n" + "\n".join(rows) + "\n")
150
+ print("\n".join(rows))
151
+ PY
@@ -0,0 +1,38 @@
1
+ name: Fuzz
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ paths:
8
+ - "src/cds/**"
9
+ - "tests/fuzz/**"
10
+ - "pyproject.toml"
11
+ - ".github/workflows/fuzz.yml"
12
+ workflow_dispatch:
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ concurrency:
18
+ group: fuzz-scientific-computing-system
19
+ cancel-in-progress: true
20
+
21
+ jobs:
22
+ fuzz:
23
+ name: Atheris
24
+ runs-on: ubuntu-latest
25
+ timeout-minutes: 15
26
+ permissions:
27
+ contents: read
28
+ steps:
29
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
30
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
31
+ with:
32
+ python-version: "3.12"
33
+ - name: Install Atheris
34
+ run: python -m pip install atheris==3.1.0
35
+ - name: Install scientific-computing-system
36
+ run: python -m pip install -e .
37
+ - name: Fuzz the BPE merge validator
38
+ run: python tests/fuzz/fuzz_bpe_merge.py -max_total_time=60 -rss_limit_mb=2048 -print_final_stats=1
@@ -109,15 +109,46 @@ jobs:
109
109
  RUN_ID: ${{ github.event.workflow_run.id }}
110
110
  run: |
111
111
  set -euo pipefail
112
+ # The trigger is the Release workflow, which normally is itself a
113
+ # workflow_run consumer: its event is `workflow_run`. The Release
114
+ # recovery path is dispatched manually and never publishes to PyPI,
115
+ # so a `workflow_dispatch` run is accepted too; its publish job is
116
+ # declared workflow_run-only, so it cannot set published=true.
117
+ # Release already verified its upstream CI run through the Actions
118
+ # API, so trust the head SHA only after proving the run belongs to
119
+ # this repository's release.yml on the default branch.
112
120
  data="$(gh api "repos/${GITHUB_REPOSITORY}/actions/runs/${RUN_ID}" \
113
- --jq '[.head_sha, .event, .head_branch, .conclusion, .repository.full_name] | @tsv')"
114
- IFS=$'\t' read -r sha event branch conclusion repo <<<"${data}"
121
+ --jq '[.head_sha, .event, .head_branch, .conclusion, .repository.full_name, .path] | @tsv')"
122
+ IFS=$'\t' read -r sha event branch conclusion repo path <<<"${data}"
115
123
  echo "head_sha=${sha}" >> "$GITHUB_OUTPUT"
116
- if [ "${event}" != "push" ] || [ "${branch}" != "main" ] || \
117
- [ "${conclusion}" != "success" ] || [ "${repo}" != "${GITHUB_REPOSITORY}" ]; then
118
- echo "::error::Run ${RUN_ID} is not a successful push on ${GITHUB_REPOSITORY} main."
124
+ case "${event}" in
125
+ workflow_run|workflow_dispatch) ;;
126
+ *)
127
+ echo "::error::Run ${RUN_ID} has unsupported event ${event}."
128
+ exit 1
129
+ ;;
130
+ esac
131
+ if [ "${path}" != ".github/workflows/release.yml" ] || \
132
+ [ "${branch}" != "main" ] || \
133
+ [ "${repo}" != "${GITHUB_REPOSITORY}" ]; then
134
+ echo "::error::Run ${RUN_ID} is not a Release run on ${GITHUB_REPOSITORY} main."
119
135
  exit 1
120
136
  fi
137
+ # A Release run whose jobs all skip (the version is already released)
138
+ # concludes `skipped`. That is an ordinary push, not a release, so the
139
+ # npm job must skip too. A failed or cancelled release stays loud.
140
+ case "${conclusion}" in
141
+ success|skipped) ;;
142
+ *)
143
+ echo "::error::Release run ${RUN_ID} concluded ${conclusion}."
144
+ exit 1
145
+ ;;
146
+ esac
147
+ if [ "${conclusion}" != "success" ]; then
148
+ echo "Release run was ${conclusion}; no release was published."
149
+ echo "published=false" >> "$GITHUB_OUTPUT"
150
+ exit 0
151
+ fi
121
152
  publish_conclusion="$(gh api "repos/${GITHUB_REPOSITORY}/actions/runs/${RUN_ID}/jobs?per_page=100" \
122
153
  --jq '[.jobs[] | select(.name == "Build + verify + publish to PyPI + metadata-only GitHub Release") | .conclusion] | first // "missing"')"
123
154
  echo "Release publish job: ${publish_conclusion}"
@@ -49,12 +49,28 @@ jobs:
49
49
  run: |
50
50
  set -euo pipefail
51
51
  if [ "${EVENT_NAME}" = "workflow_run" ]; then
52
+ # This workflow triggers on the Release workflow, which normally is
53
+ # itself a workflow_run consumer, so the triggering run's event is
54
+ # `workflow_run`. The Release recovery path is dispatched manually
55
+ # and never publishes to PyPI, so a `workflow_dispatch` run is
56
+ # accepted too. The Release gate already verified its own upstream
57
+ # CI run through the Actions API; here we only need to prove the
58
+ # trigger came from this repository's Release workflow on the
59
+ # default branch before trusting its head SHA.
52
60
  data="$(gh api "repos/${GITHUB_REPOSITORY}/actions/runs/${RUN_ID}" \
53
- --jq '[.head_sha, .event, .head_branch, .conclusion, .repository.full_name] | @tsv')"
54
- IFS=$'\t' read -r sha event branch conclusion repo <<<"${data}"
55
- if [ "${event}" != "push" ] || [ "${branch}" != "main" ] || \
61
+ --jq '[.head_sha, .event, .head_branch, .conclusion, .repository.full_name, .path] | @tsv')"
62
+ IFS=$'\t' read -r sha event branch conclusion repo path <<<"${data}"
63
+ case "${event}" in
64
+ workflow_run|workflow_dispatch) ;;
65
+ *)
66
+ echo "::error::Run ${RUN_ID} has unsupported event ${event}."
67
+ exit 1
68
+ ;;
69
+ esac
70
+ if [ "${path}" != ".github/workflows/release.yml" ] || \
71
+ [ "${branch}" != "main" ] || \
56
72
  [ "${conclusion}" != "success" ] || [ "${repo}" != "${GITHUB_REPOSITORY}" ]; then
57
- echo "::error::Run ${RUN_ID} is not a successful push on ${GITHUB_REPOSITORY} main."
73
+ echo "::error::Run ${RUN_ID} is not a successful Release run on ${GITHUB_REPOSITORY} main."
58
74
  exit 1
59
75
  fi
60
76
  else
@@ -420,7 +420,7 @@ jobs:
420
420
 
421
421
  - name: Publish to PyPI (Trusted Publishing)
422
422
  if: steps.pypi_state.outputs.already_published != 'true'
423
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
423
+ uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # release/v1
424
424
 
425
425
  - name: Create or verify release tag after successful PyPI state
426
426
  # The tag is created only after PyPI accepted the upload. An existing tag
@@ -32,6 +32,6 @@ jobs:
32
32
  name: scorecard-sarif
33
33
  path: results.sarif
34
34
  retention-days: 5
35
- - uses: github/codeql-action/upload-sarif@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
35
+ - uses: github/codeql-action/upload-sarif@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4.39.0
36
36
  with:
37
37
  sarif_file: results.sarif
@@ -0,0 +1,170 @@
1
+ name: Sign release
2
+
3
+ # Attach a signed source archive plus a cosign keyless signature bundle to the
4
+ # GitHub Release that the publish workflows already created. OpenSSF Scorecard's
5
+ # Signed-Releases check looks for a release asset whose name ends in
6
+ # `.sigstore`, and this workflow is the only producer of one.
7
+ #
8
+ # Security: the workflow_run payload is untrusted input. The run is re-read from
9
+ # the Actions API, validated against this repository, the allowed event types
10
+ # and the exact release workflow paths, and only then is its head_sha checked
11
+ # out. The checkout never consumes a raw event expression.
12
+ on:
13
+ workflow_run:
14
+ workflows: ["Release"]
15
+ types: [completed]
16
+ workflow_dispatch:
17
+ inputs:
18
+ tag:
19
+ description: "Existing release tag to sign (e.g. v1.2.3)"
20
+ required: false
21
+
22
+ permissions:
23
+ contents: read
24
+
25
+ concurrency:
26
+ group: sign-release-${{ github.event.workflow_run.head_sha || github.ref }}
27
+ cancel-in-progress: false
28
+
29
+ jobs:
30
+ sign:
31
+ runs-on: ubuntu-latest
32
+ if: >
33
+ github.event_name == 'workflow_dispatch' ||
34
+ (github.event.workflow_run.conclusion == 'success' &&
35
+ github.event.workflow_run.head_repository.full_name == github.repository)
36
+ permissions:
37
+ contents: write
38
+ id-token: write
39
+ env:
40
+ GH_TOKEN: ${{ github.token }}
41
+ steps:
42
+ - name: Resolve the trusted release commit
43
+ id: resolve
44
+ shell: bash
45
+ env:
46
+ RUN_ID: ${{ github.event.workflow_run.id }}
47
+ run: |
48
+ set -euo pipefail
49
+ if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
50
+ echo "sha=${{ github.sha }}" >> "$GITHUB_OUTPUT"
51
+ exit 0
52
+ fi
53
+ data="$(gh api "repos/${GITHUB_REPOSITORY}/actions/runs/${RUN_ID}" \
54
+ --jq '[.head_sha, .event, .conclusion, .repository.full_name, .path] | @tsv')"
55
+ IFS=$'\t' read -r sha event conclusion repo path <<<"${data}"
56
+ # The Release workflow here is itself a workflow_run consumer that
57
+ # waits for CI, so the run this workflow follows has event
58
+ # `workflow_run`. All of these are accepted; the path, repository and
59
+ # conclusion checks below still have to pass.
60
+ case "${event}" in
61
+ push|release|workflow_run|workflow_dispatch) ;;
62
+ *) echo "::error::Run ${RUN_ID} has unsupported event ${event}."; exit 1 ;;
63
+ esac
64
+ case "${path}" in
65
+ .github/workflows/release.yml) ;;
66
+ *) echo "::error::Run ${RUN_ID} is not a release workflow (${path})."; exit 1 ;;
67
+ esac
68
+ if [[ "${conclusion}" != "success" || "${repo}" != "${GITHUB_REPOSITORY}" ]]; then
69
+ echo "::error::Run ${RUN_ID} is not a successful release run on ${GITHUB_REPOSITORY}."
70
+ exit 1
71
+ fi
72
+ echo "sha=${sha}" >> "$GITHUB_OUTPUT"
73
+
74
+ - name: Check out the released commit
75
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
76
+ with:
77
+ fetch-depth: 0
78
+ ref: ${{ steps.resolve.outputs.sha }}
79
+
80
+ - name: Resolve the release tag
81
+ id: tag
82
+ shell: bash
83
+ env:
84
+ EVENT_NAME: ${{ github.event_name }}
85
+ INPUT_TAG: ${{ inputs.tag }}
86
+ HEAD_SHA: ${{ steps.resolve.outputs.sha }}
87
+ run: |
88
+ set -euo pipefail
89
+ if [[ "$EVENT_NAME" == "workflow_dispatch" && -n "$INPUT_TAG" ]]; then
90
+ TAG="$INPUT_TAG"
91
+ else
92
+ git fetch --tags --force origin
93
+ refs="$(git for-each-ref --format='%(refname:short) %(objectname) %(*objectname)' refs/tags)"
94
+ TAG="$(printf '%s\n' "$refs" | awk -v sha="$HEAD_SHA" '$2==sha || $3==sha {print $1; exit}')"
95
+ fi
96
+ if [[ -z "$TAG" ]]; then
97
+ echo "::notice::No tag points at ${HEAD_SHA}; nothing to sign."
98
+ exit 0
99
+ fi
100
+ echo "tag=$TAG" >> "$GITHUB_OUTPUT"
101
+ echo "Resolved tag: $TAG"
102
+
103
+ - name: Check the GitHub Release exists
104
+ id: release
105
+ if: steps.tag.outputs.tag != ''
106
+ shell: bash
107
+ env:
108
+ TAG: ${{ steps.tag.outputs.tag }}
109
+ run: |
110
+ set -euo pipefail
111
+ if gh release view "$TAG" >/dev/null 2>&1; then
112
+ echo "exists=true" >> "$GITHUB_OUTPUT"
113
+ else
114
+ echo "exists=false" >> "$GITHUB_OUTPUT"
115
+ echo "::notice::GitHub Release $TAG does not exist; nothing to sign."
116
+ fi
117
+
118
+ - name: Check the release is not signed yet
119
+ id: signature
120
+ if: steps.release.outputs.exists == 'true'
121
+ shell: bash
122
+ env:
123
+ TAG: ${{ steps.tag.outputs.tag }}
124
+ run: |
125
+ set -euo pipefail
126
+ names="$(gh release view "$TAG" --json assets --jq '.assets[].name')"
127
+ if grep -q '\.sigstore$' <<<"$names"; then
128
+ echo "signed=true" >> "$GITHUB_OUTPUT"
129
+ echo "::notice::Release $TAG already has a .sigstore asset; skipping."
130
+ else
131
+ echo "signed=false" >> "$GITHUB_OUTPUT"
132
+ fi
133
+
134
+ - name: Build the source archive
135
+ id: archive
136
+ if: steps.signature.outputs.signed == 'false'
137
+ shell: bash
138
+ env:
139
+ TAG: ${{ steps.tag.outputs.tag }}
140
+ run: |
141
+ set -euo pipefail
142
+ git fetch --tags --force origin
143
+ repo="${GITHUB_REPOSITORY##*/}"
144
+ asset="${repo}-${TAG}.tar.gz"
145
+ git archive --format=tar.gz --prefix="${repo}-${TAG}/" -o "$asset" "$TAG"
146
+ echo "asset=$asset" >> "$GITHUB_OUTPUT"
147
+ echo "Built $asset from $TAG"
148
+
149
+ - name: Install cosign
150
+ if: steps.signature.outputs.signed == 'false'
151
+ uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
152
+
153
+ - name: Sign the archive with a keyless identity
154
+ if: steps.signature.outputs.signed == 'false'
155
+ shell: bash
156
+ env:
157
+ ASSET: ${{ steps.archive.outputs.asset }}
158
+ run: |
159
+ set -euo pipefail
160
+ cosign sign-blob --yes --bundle "${ASSET}.sigstore" "$ASSET"
161
+
162
+ - name: Upload the archive and the signature bundle
163
+ if: steps.signature.outputs.signed == 'false'
164
+ shell: bash
165
+ env:
166
+ TAG: ${{ steps.tag.outputs.tag }}
167
+ ASSET: ${{ steps.archive.outputs.asset }}
168
+ run: |
169
+ set -euo pipefail
170
+ gh release upload "$TAG" "$ASSET" "${ASSET}.sigstore" --clobber
@@ -19,6 +19,25 @@ a git tag in this repository or on `origin` (checked with `git ls-remote --tags`
19
19
  Any retroactive `v2.2.6` or `v2.2.7` tag should point at those commits. This note records
20
20
  what the history supports; it does not claim that a tag exists.
21
21
 
22
+ ## [v2.2.18] - 2026-10-25
23
+
24
+ ### Deterministic ML initialisation
25
+
26
+ - Give `cds.ml.Layer` an optional `seed`, so weight initialisation draws from a private RNG stream that no other caller can perturb. The default (`seed=None`) keeps the historical behaviour, so `random.seed(...)` still makes a whole model reproducible.
27
+ - Add regression coverage for same-seed reproducibility under different global RNG states, independence of the global stream, and end-to-end MLP training reproducibility.
28
+ - Bump synchronized package metadata to 2.2.18 as required by the version-discipline gate for the `src/cds/` change.
29
+
30
+ ## [v2.2.17] - 2026-10-24
31
+
32
+ ### Dependency hygiene
33
+
34
+ - Update the locked `ruff` development pin from 0.15.17 to 0.17.1 (Dependabot routine update), in both `pyproject.toml` and `requirements-dev.lock`.
35
+ - Refresh `requirements-dev.lock` to `filelock==4.2.4` on Python 3.11+, clearing CVE-2026-112940 reported by the `pip-audit` lock gate. No fixed release supports Python 3.10, so the dev-only 3.10 pin stays at 3.29.4 (marker split).
36
+ - Refresh `requirements-dev.lock` to `virtualenv==21.14.13`, clearing CVE-2026-113713 and CVE-2026-115586 reported by the `pip-audit` lock gate.
37
+ - Bump synchronized package metadata to 2.2.17 as required by the version-discipline gate for the `[project]` dev-extra change.
38
+
39
+ > 2.2.16 was staged on `main` but never published: its CI run failed on advisories disclosed after the bump, so these changes ship in 2.2.17.
40
+
22
41
  ## [v2.2.15] - 2026-10-23
23
42
 
24
43
  ### Dependency security floors
@@ -5,7 +5,7 @@ title: "scientific-computing-system"
5
5
  # Keep `version` in lockstep with pyproject.toml [project].version and
6
6
  # src/cds/_version.py. scripts/check_version_discipline.py and
7
7
  # scripts/check_version_lockstep.py enforce this.
8
- version: 2.2.15
8
+ version: 2.2.18
9
9
  authors:
10
10
  - name: "Furox-Art"
11
11
  email: "furkanarkn1451@gmail.com"
@@ -50,5 +50,5 @@ preferred-citation:
50
50
  authors:
51
51
  - name: "Furox-Art"
52
52
  year: 2026
53
- version: 2.2.15
53
+ version: 2.2.18
54
54
  url: "https://github.com/Furox-Art/scientific-computing-system"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: scientific-computing-system
3
- Version: 2.2.15
3
+ Version: 2.2.18
4
4
  Summary: A pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, scientific workflows, dimensional analysis, and optional research-data backends. Zero runtime dependencies.
5
5
  Project-URL: Homepage, https://github.com/Furox-Art/scientific-computing-system
6
6
  Project-URL: Repository, https://github.com/Furox-Art/scientific-computing-system
@@ -45,7 +45,7 @@ Requires-Dist: pandas>=2.0; extra == 'all'
45
45
  Requires-Dist: pre-commit; extra == 'all'
46
46
  Requires-Dist: pytest-cov; extra == 'all'
47
47
  Requires-Dist: pytest>=9.0.3; extra == 'all'
48
- Requires-Dist: ruff==0.15.17; extra == 'all'
48
+ Requires-Dist: ruff==0.17.1; extra == 'all'
49
49
  Requires-Dist: scikit-learn>=1.4; extra == 'all'
50
50
  Requires-Dist: scipy>=1.11; extra == 'all'
51
51
  Requires-Dist: statsmodels>=0.14; extra == 'all'
@@ -63,7 +63,7 @@ Requires-Dist: notebook; extra == 'dev'
63
63
  Requires-Dist: numpy<2.5,>=2.0; extra == 'dev'
64
64
  Requires-Dist: pandas-stubs>=2.0; extra == 'dev'
65
65
  Requires-Dist: pre-commit; extra == 'dev'
66
- Requires-Dist: ruff==0.15.17; extra == 'dev'
66
+ Requires-Dist: ruff==0.17.1; extra == 'dev'
67
67
  Provides-Extra: docs
68
68
  Requires-Dist: mkdocs-material>=9.7.7; extra == 'docs'
69
69
  Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
@@ -145,23 +145,25 @@ The import name is **`cds`** (the distribution is `scientific-computing-system`)
145
145
  | **PyPI** (the library) | `pip install scientific-computing-system` | The actual Python package. Zero runtime dependencies. This is what you want. |
146
146
  | **npm** (a launcher shim) | `npm i -g scientific-computing-system` | A thin Node wrapper that runs `python -m cds`. It ships no Python and needs the Python distribution installed so that `python -m cds` resolves. |
147
147
 
148
- At the time of writing (2026-10-22), both registries' latest versions are 2.2.13,
148
+ At the time of writing (2026-10-25), both registries' latest versions are 2.2.17,
149
149
  but they are not published in lockstep and are **not** equally verifiable:
150
150
 
151
151
  - **PyPI** — carries a **PEP 740 provenance attestation** (Sigstore-signed,
152
152
  binding the file digest to the publishing workflow). Verified on 2.2.3,
153
- 2.2.4, 2.2.5, 2.2.6, 2.2.8, 2.2.11, 2.2.12 and 2.2.13. The 2.2.7 wheel and
154
- sdist return 404 from the per-file provenance endpoint, so "every release
155
- since attestations were enabled" would be false.
153
+ 2.2.4, 2.2.5, 2.2.6, 2.2.8, 2.2.11, 2.2.12, 2.2.13, 2.2.14, 2.2.15 and
154
+ 2.2.17. The 2.2.7 wheel and sdist return 404 from the per-file provenance
155
+ endpoint, so "every release since attestations were enabled" would be false;
156
+ 2.2.16 was never published.
156
157
  - **npm** — carries a **Sigstore attestation as of 2.2.3**, minted by npm's
157
158
  OIDC trusted publisher (the registry serves both an npm publish attestation
158
159
  and a SLSA provenance v1 bundle for that tarball). 1.0.0 through 2.2.2
159
160
  predate the publisher registration and have none, so pin 2.2.3 or newer. npm
160
- has no 2.2.7, 2.2.8 or 2.2.11 at all: its 2.2.x line is 2.2.0 through 2.2.6
161
- plus 2.2.12 and 2.2.13, which is how the latest versions can match while the
162
- histories do not. npm also exposes `dist.integrity` (sha512), which is a content pin,
163
- not proof of origin, and `dist.signatures`, which is npm's registry transport
164
- signature, not build provenance.
161
+ has no 2.2.7, 2.2.8, 2.2.11 or 2.2.16 at all: its 2.2.x line is 2.2.0
162
+ through 2.2.6, 2.2.12 through 2.2.15, and 2.2.17, which is how the latest
163
+ versions can match while the histories do not. npm also exposes
164
+ `dist.integrity` (sha512), which is a content pin, not proof of origin, and
165
+ `dist.signatures`, which is npm's registry transport signature, not build
166
+ provenance.
165
167
 
166
168
  Prefer PyPI if you need an attestation for a version older than 2.2.3.
167
169
  [SECURITY.md](SECURITY.md#distribution-channels-and-provenance) has the
@@ -277,7 +279,7 @@ The package installs a `cds` command with 13 subcommands:
277
279
 
278
280
  ```console
279
281
  $ cds --version
280
- System version 2.2.15
282
+ System version 2.2.18
281
283
  $ cds constants # physical constants table
282
284
  ```
283
285
 
@@ -49,23 +49,25 @@ The import name is **`cds`** (the distribution is `scientific-computing-system`)
49
49
  | **PyPI** (the library) | `pip install scientific-computing-system` | The actual Python package. Zero runtime dependencies. This is what you want. |
50
50
  | **npm** (a launcher shim) | `npm i -g scientific-computing-system` | A thin Node wrapper that runs `python -m cds`. It ships no Python and needs the Python distribution installed so that `python -m cds` resolves. |
51
51
 
52
- At the time of writing (2026-10-22), both registries' latest versions are 2.2.13,
52
+ At the time of writing (2026-10-25), both registries' latest versions are 2.2.17,
53
53
  but they are not published in lockstep and are **not** equally verifiable:
54
54
 
55
55
  - **PyPI** — carries a **PEP 740 provenance attestation** (Sigstore-signed,
56
56
  binding the file digest to the publishing workflow). Verified on 2.2.3,
57
- 2.2.4, 2.2.5, 2.2.6, 2.2.8, 2.2.11, 2.2.12 and 2.2.13. The 2.2.7 wheel and
58
- sdist return 404 from the per-file provenance endpoint, so "every release
59
- since attestations were enabled" would be false.
57
+ 2.2.4, 2.2.5, 2.2.6, 2.2.8, 2.2.11, 2.2.12, 2.2.13, 2.2.14, 2.2.15 and
58
+ 2.2.17. The 2.2.7 wheel and sdist return 404 from the per-file provenance
59
+ endpoint, so "every release since attestations were enabled" would be false;
60
+ 2.2.16 was never published.
60
61
  - **npm** — carries a **Sigstore attestation as of 2.2.3**, minted by npm's
61
62
  OIDC trusted publisher (the registry serves both an npm publish attestation
62
63
  and a SLSA provenance v1 bundle for that tarball). 1.0.0 through 2.2.2
63
64
  predate the publisher registration and have none, so pin 2.2.3 or newer. npm
64
- has no 2.2.7, 2.2.8 or 2.2.11 at all: its 2.2.x line is 2.2.0 through 2.2.6
65
- plus 2.2.12 and 2.2.13, which is how the latest versions can match while the
66
- histories do not. npm also exposes `dist.integrity` (sha512), which is a content pin,
67
- not proof of origin, and `dist.signatures`, which is npm's registry transport
68
- signature, not build provenance.
65
+ has no 2.2.7, 2.2.8, 2.2.11 or 2.2.16 at all: its 2.2.x line is 2.2.0
66
+ through 2.2.6, 2.2.12 through 2.2.15, and 2.2.17, which is how the latest
67
+ versions can match while the histories do not. npm also exposes
68
+ `dist.integrity` (sha512), which is a content pin, not proof of origin, and
69
+ `dist.signatures`, which is npm's registry transport signature, not build
70
+ provenance.
69
71
 
70
72
  Prefer PyPI if you need an attestation for a version older than 2.2.3.
71
73
  [SECURITY.md](SECURITY.md#distribution-channels-and-provenance) has the
@@ -181,7 +183,7 @@ The package installs a `cds` command with 13 subcommands:
181
183
 
182
184
  ```console
183
185
  $ cds --version
184
- System version 2.2.15
186
+ System version 2.2.18
185
187
  $ cds constants # physical constants table
186
188
  ```
187
189
 
@@ -129,7 +129,8 @@ repository's publish workflows mints an attestation on each channel:
129
129
  `scientific-computing-system`, workflow `release.yml`, environment `pypi`.
130
130
  Exercised since 2.2.1. The per-file provenance endpoint returned 200 for the
131
131
  published files of 2.2.1–2.2.6, 2.2.8, 2.2.11, 2.2.12 and 2.2.13 on 2026-10-22;
132
- 2.2.7 returns 404 for both its wheel and sdist.
132
+ 2.2.7 returns 404 for both its wheel and sdist. Re-checked on 2026-10-25:
133
+ 2.2.14, 2.2.15 and 2.2.17 also return 200, and 2.2.16 was never published.
133
134
  - **npm** — Trusted Publisher: owner `Furox-Art`, repository
134
135
  `scientific-computing-system`, workflow `npm-publish.yml`, environment `npm`.
135
136
  Registered before 2.2.3, which is the first npm release published through it