deterministic-scenario-engine 1.0.0__tar.gz → 2.1.0__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 (191) hide show
  1. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/MANIFEST.in +1 -0
  2. {deterministic_scenario_engine-1.0.0/src/deterministic_scenario_engine.egg-info → deterministic_scenario_engine-2.1.0}/PKG-INFO +30 -6
  3. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/README.md +29 -5
  4. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/api.md +73 -3
  5. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/determinism.md +23 -1
  6. deterministic_scenario_engine-2.1.0/docs/phase2-architecture.md +315 -0
  7. deterministic_scenario_engine-2.1.0/docs/phase2-public-contract.md +123 -0
  8. deterministic_scenario_engine-2.1.0/docs/phase3-architecture.md +731 -0
  9. deterministic_scenario_engine-2.1.0/docs/phase3-public-contract.md +298 -0
  10. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/quickstart.md +38 -1
  11. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/reproducibility.md +24 -0
  12. deterministic_scenario_engine-2.1.0/docs/security-and-non-goals.md +82 -0
  13. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/testing-oracle.md +23 -0
  14. deterministic_scenario_engine-2.1.0/examples/phase3_ecommerce_evidence.py +27 -0
  15. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/pyproject.toml +3 -0
  16. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0/src/deterministic_scenario_engine.egg-info}/PKG-INFO +30 -6
  17. deterministic_scenario_engine-2.1.0/src/deterministic_scenario_engine.egg-info/SOURCES.txt +185 -0
  18. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/entry_points.txt +3 -0
  19. deterministic_scenario_engine-2.1.0/src/scenario_engine/_version.py +4 -0
  20. deterministic_scenario_engine-2.1.0/src/scenario_engine/batch/__init__.py +32 -0
  21. deterministic_scenario_engine-2.1.0/src/scenario_engine/batch/canonical.py +39 -0
  22. deterministic_scenario_engine-2.1.0/src/scenario_engine/batch/errors.py +57 -0
  23. deterministic_scenario_engine-2.1.0/src/scenario_engine/batch/models.py +220 -0
  24. deterministic_scenario_engine-2.1.0/src/scenario_engine/batch/runtime.py +248 -0
  25. deterministic_scenario_engine-2.1.0/src/scenario_engine/cli/__init__.py +6 -0
  26. deterministic_scenario_engine-2.1.0/src/scenario_engine/cli/__main__.py +6 -0
  27. deterministic_scenario_engine-2.1.0/src/scenario_engine/cli/main.py +593 -0
  28. deterministic_scenario_engine-2.1.0/src/scenario_engine/composition/__init__.py +66 -0
  29. deterministic_scenario_engine-2.1.0/src/scenario_engine/composition/canonical.py +60 -0
  30. deterministic_scenario_engine-2.1.0/src/scenario_engine/composition/errors.py +67 -0
  31. deterministic_scenario_engine-2.1.0/src/scenario_engine/composition/models.py +107 -0
  32. deterministic_scenario_engine-2.1.0/src/scenario_engine/composition/parser.py +148 -0
  33. deterministic_scenario_engine-2.1.0/src/scenario_engine/composition/resolver.py +408 -0
  34. deterministic_scenario_engine-2.1.0/src/scenario_engine/composition/runtime.py +71 -0
  35. deterministic_scenario_engine-2.1.0/src/scenario_engine/diff/__init__.py +20 -0
  36. deterministic_scenario_engine-2.1.0/src/scenario_engine/diff/compare.py +181 -0
  37. deterministic_scenario_engine-2.1.0/src/scenario_engine/diff/errors.py +23 -0
  38. deterministic_scenario_engine-2.1.0/src/scenario_engine/diff/models.py +130 -0
  39. deterministic_scenario_engine-2.1.0/src/scenario_engine/diff/render.py +33 -0
  40. deterministic_scenario_engine-2.1.0/src/scenario_engine/diff/serialization.py +53 -0
  41. deterministic_scenario_engine-2.1.0/src/scenario_engine/domain_packs/__init__.py +36 -0
  42. deterministic_scenario_engine-2.1.0/src/scenario_engine/domain_packs/canonical.py +43 -0
  43. deterministic_scenario_engine-2.1.0/src/scenario_engine/domain_packs/errors.py +23 -0
  44. deterministic_scenario_engine-2.1.0/src/scenario_engine/domain_packs/models.py +152 -0
  45. deterministic_scenario_engine-2.1.0/src/scenario_engine/domain_packs/registry.py +94 -0
  46. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/models.py +4 -4
  47. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/__init__.py +211 -0
  48. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/adapter.py +329 -0
  49. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/canonical.py +71 -0
  50. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/compatibility.py +490 -0
  51. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/errors.py +123 -0
  52. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/export.py +320 -0
  53. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/fixture.py +152 -0
  54. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/migration.py +223 -0
  55. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/models.py +223 -0
  56. deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/read.py +371 -0
  57. deterministic_scenario_engine-2.1.0/src/scenario_engine/inspection/__init__.py +35 -0
  58. deterministic_scenario_engine-2.1.0/src/scenario_engine/inspection/errors.py +27 -0
  59. deterministic_scenario_engine-2.1.0/src/scenario_engine/inspection/explain.py +75 -0
  60. deterministic_scenario_engine-2.1.0/src/scenario_engine/inspection/inspect.py +342 -0
  61. deterministic_scenario_engine-2.1.0/src/scenario_engine/inspection/models.py +148 -0
  62. deterministic_scenario_engine-2.1.0/src/scenario_engine/inspection/redaction.py +50 -0
  63. deterministic_scenario_engine-2.1.0/src/scenario_engine/inspection/serialization.py +77 -0
  64. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/manifest.py +1 -2
  65. deterministic_scenario_engine-2.1.0/src/scenario_engine/matrix/__init__.py +26 -0
  66. deterministic_scenario_engine-2.1.0/src/scenario_engine/matrix/canonical.py +57 -0
  67. deterministic_scenario_engine-2.1.0/src/scenario_engine/matrix/errors.py +39 -0
  68. deterministic_scenario_engine-2.1.0/src/scenario_engine/matrix/expand.py +67 -0
  69. deterministic_scenario_engine-2.1.0/src/scenario_engine/matrix/filtering.py +70 -0
  70. deterministic_scenario_engine-2.1.0/src/scenario_engine/matrix/models.py +121 -0
  71. deterministic_scenario_engine-2.1.0/src/scenario_engine/matrix/runtime.py +99 -0
  72. deterministic_scenario_engine-2.1.0/src/scenario_engine/oracle_assertions/__init__.py +28 -0
  73. deterministic_scenario_engine-2.1.0/src/scenario_engine/oracle_assertions/errors.py +23 -0
  74. deterministic_scenario_engine-2.1.0/src/scenario_engine/oracle_assertions/evaluate.py +253 -0
  75. deterministic_scenario_engine-2.1.0/src/scenario_engine/oracle_assertions/models.py +130 -0
  76. deterministic_scenario_engine-2.1.0/src/scenario_engine/oracle_assertions/serialization.py +65 -0
  77. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/provenance.py +2 -2
  78. deterministic_scenario_engine-2.1.0/src/scenario_engine/reference_packs/__init__.py +16 -0
  79. deterministic_scenario_engine-2.1.0/src/scenario_engine/reference_packs/ecommerce_evidence.py +310 -0
  80. deterministic_scenario_engine-2.1.0/src/scenario_engine/suite/__init__.py +70 -0
  81. deterministic_scenario_engine-2.1.0/src/scenario_engine/suite/errors.py +51 -0
  82. deterministic_scenario_engine-2.1.0/src/scenario_engine/suite/models.py +429 -0
  83. deterministic_scenario_engine-2.1.0/src/scenario_engine/suite/read.py +149 -0
  84. deterministic_scenario_engine-2.1.0/src/scenario_engine/suite/serialization.py +223 -0
  85. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_1_0e_packaging_release_candidate.py +13 -4
  86. deterministic_scenario_engine-2.1.0/tests/test_phase_2_10_workflow_demonstrators.py +213 -0
  87. deterministic_scenario_engine-2.1.0/tests/test_phase_2_11_performance_scale_hardening.py +357 -0
  88. deterministic_scenario_engine-2.1.0/tests/test_phase_2_12_public_contract_docs_freeze.py +193 -0
  89. deterministic_scenario_engine-2.1.0/tests/test_phase_2_13_packaging_fresh_install_rc.py +125 -0
  90. deterministic_scenario_engine-2.1.0/tests/test_phase_2_1_models_serialization.py +168 -0
  91. deterministic_scenario_engine-2.1.0/tests/test_phase_2_1_v1_read_contract.py +129 -0
  92. deterministic_scenario_engine-2.1.0/tests/test_phase_2_2_composition.py +386 -0
  93. deterministic_scenario_engine-2.1.0/tests/test_phase_2_3_matrix.py +252 -0
  94. deterministic_scenario_engine-2.1.0/tests/test_phase_2_4_batch.py +292 -0
  95. deterministic_scenario_engine-2.1.0/tests/test_phase_2_5_inspect_explain.py +154 -0
  96. deterministic_scenario_engine-2.1.0/tests/test_phase_2_6_structured_semantic_diff.py +229 -0
  97. deterministic_scenario_engine-2.1.0/tests/test_phase_2_7_cli_product_surface.py +249 -0
  98. deterministic_scenario_engine-2.1.0/tests/test_phase_2_8_domain_pack_foundation.py +212 -0
  99. deterministic_scenario_engine-2.1.0/tests/test_phase_2_9_oracle_assertions.py +189 -0
  100. deterministic_scenario_engine-2.1.0/tests/test_phase_3_10_performance_security_hardening.py +208 -0
  101. deterministic_scenario_engine-2.1.0/tests/test_phase_3_11_public_contract_docs_freeze.py +184 -0
  102. deterministic_scenario_engine-2.1.0/tests/test_phase_3_12_packaging_fresh_install_rc.py +76 -0
  103. deterministic_scenario_engine-2.1.0/tests/test_phase_3_1_evidence_bundle_contract.py +259 -0
  104. deterministic_scenario_engine-2.1.0/tests/test_phase_3_2_safe_bundle_reader_validator.py +286 -0
  105. deterministic_scenario_engine-2.1.0/tests/test_phase_3_3_ordered_export.py +267 -0
  106. deterministic_scenario_engine-2.1.0/tests/test_phase_3_4_evidence_adapter_contract.py +256 -0
  107. deterministic_scenario_engine-2.1.0/tests/test_phase_3_5_compatibility_migration_planner.py +232 -0
  108. deterministic_scenario_engine-2.1.0/tests/test_phase_3_6_lossless_migrations_fixture_export.py +133 -0
  109. deterministic_scenario_engine-2.1.0/tests/test_phase_3_7_cli_interchange_surface.py +256 -0
  110. deterministic_scenario_engine-2.1.0/tests/test_phase_3_8_ecommerce_evidence_workflow.py +132 -0
  111. deterministic_scenario_engine-1.0.0/docs/security-and-non-goals.md +0 -45
  112. deterministic_scenario_engine-1.0.0/src/deterministic_scenario_engine.egg-info/SOURCES.txt +0 -94
  113. deterministic_scenario_engine-1.0.0/src/scenario_engine/_version.py +0 -3
  114. deterministic_scenario_engine-1.0.0/src/scenario_engine/reference_packs/__init__.py +0 -1
  115. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/LICENSE +0 -0
  116. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/compatibility.md +0 -0
  117. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/dsl-reference.md +0 -0
  118. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/hypothesis.md +0 -0
  119. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/plugins.md +0 -0
  120. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/schemathesis.md +0 -0
  121. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/docs/sqlalchemy.md +0 -0
  122. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/api_scenario.yaml +0 -0
  123. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/cart.yaml +0 -0
  124. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/control_flow.yaml +0 -0
  125. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/ecommerce.yaml +0 -0
  126. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/openapi.yaml +0 -0
  127. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/oracle_fault.yaml +0 -0
  128. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_1b_cart.yaml +0 -0
  129. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_3_resources.yaml +0 -0
  130. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_4_control_flow.yaml +0 -0
  131. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_5_oracle_fault.yaml +0 -0
  132. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_6_sqlalchemy_rows.yaml +0 -0
  133. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_7_ecommerce_plugin.yaml +0 -0
  134. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_8_api_scenario.yaml +0 -0
  135. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_8_openapi.yaml +0 -0
  136. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/resources.yaml +0 -0
  137. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/examples/sqlalchemy_rows.yaml +0 -0
  138. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/setup.cfg +0 -0
  139. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/dependency_links.txt +0 -0
  140. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/requires.txt +0 -0
  141. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/top_level.txt +0 -0
  142. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/__init__.py +0 -0
  143. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/adapters/__init__.py +0 -0
  144. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/adapters/json_file.py +0 -0
  145. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/adapters/sqlalchemy.py +0 -0
  146. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/address.py +0 -0
  147. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/artifacts.py +0 -0
  148. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/canonical.py +0 -0
  149. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/clock.py +0 -0
  150. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/context.py +0 -0
  151. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/control_flow.py +0 -0
  152. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/__init__.py +0 -0
  153. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/compiler.py +0 -0
  154. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/errors.py +0 -0
  155. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/parser.py +0 -0
  156. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/runtime.py +0 -0
  157. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/errors.py +0 -0
  158. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/expressions.py +0 -0
  159. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/faults.py +0 -0
  160. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/history.py +0 -0
  161. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/ids.py +0 -0
  162. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/integrations/__init__.py +0 -0
  163. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/integrations/hypothesis.py +0 -0
  164. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/integrations/schemathesis.py +0 -0
  165. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/invariants.py +0 -0
  166. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/oracle.py +0 -0
  167. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/plugins.py +0 -0
  168. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/pytest_plugin.py +0 -0
  169. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/reference_packs/ecommerce.py +0 -0
  170. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/resources.py +0 -0
  171. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/result.py +0 -0
  172. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/rng.py +0 -0
  173. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/runner.py +0 -0
  174. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/state.py +0 -0
  175. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/validation.py +0 -0
  176. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/values.py +0 -0
  177. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_1a_semantic_kernel.py +0 -0
  178. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_1b_linear_dsl.py +0 -0
  179. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_1c_integrated_phase0_1.py +0 -0
  180. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_1c_r1_missing_sentinel_repair.py +0 -0
  181. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_2a_reproducible_results.py +0 -0
  182. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_2b_json_pytest_integration.py +0 -0
  183. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_3_resources_constraints.py +0 -0
  184. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_4_control_flow.py +0 -0
  185. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_5_oracle_faults.py +0 -0
  186. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_6_sqlalchemy_materializer.py +0 -0
  187. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_7_plugins_ecommerce.py +0 -0
  188. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_8_hypothesis_schemathesis.py +0 -0
  189. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_1_0b_public_api_error_contract.py +0 -0
  190. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_1_0c_dsl_compatibility_contract.py +0 -0
  191. {deterministic_scenario_engine-1.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_1_0d_documentation_examples.py +0 -0
@@ -4,6 +4,7 @@ include pyproject.toml
4
4
  recursive-include src *.py
5
5
  recursive-include docs *.md
6
6
  recursive-include examples *.yaml
7
+ include examples/phase3_ecommerce_evidence.py
7
8
  recursive-include tests *.py
8
9
  global-exclude *.py[cod]
9
10
  global-exclude __pycache__
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deterministic-scenario-engine
3
- Version: 1.0.0
3
+ Version: 2.1.0
4
4
  Summary: Reproducible, state-consistent business scenarios with deterministic ground truth
5
5
  License-Expression: Apache-2.0
6
6
  Keywords: deterministic,scenario,testing,fixtures,replay
@@ -33,8 +33,13 @@ Dynamic: license-file
33
33
 
34
34
  **Generate test scenarios, not just test records.**
35
35
 
36
- Deterministic Scenario Engine creates reproducible, state-consistent business
37
- histories with deterministic ground truth for testing.
36
+ Deterministic Scenario Engine (DSE) creates reproducible, state-consistent
37
+ business histories and deterministic scenario suites with ground truth for
38
+ testing. The published distribution is `deterministic-scenario-engine` 2.0.0.
39
+ Phase 3 evidence-interchange capabilities are implemented on `main` and the
40
+ current source release candidate reports distribution version 2.1.0, while 2.1.0
41
+ is not published. Its deterministic compatibility version remains
42
+ `ENGINE_VERSION == "1.0.0"`, and its DSL version remains integer 1.
38
43
 
39
44
  ## Why it exists
40
45
 
@@ -58,9 +63,22 @@ make expected behavior explicit.
58
63
  - an explicit, versioned plugin boundary and a reference ecommerce plugin pack
59
64
  - a JSON-file adapter
60
65
  - optional pytest, SQLAlchemy Core, Hypothesis, and Schemathesis integrations
66
+ - secure, explicit local-file composition with namespaced modules
67
+ - ordered Cartesian matrices with stable case IDs and original indexes
68
+ - immutable ordered batch plans and worker-independent results
69
+ - structured, redacted inspect/explain evidence and typed RFC 6901 semantic diff
70
+ - twelve-command `scenario` CLI for local and CI workflows, including bounded
71
+ local evidence export, verification, and lossless migration
72
+ - explicit immutable Domain Pack registries and pure Oracle Assertions
73
+ - canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
74
+ explicit adapters, closed lossless migrations, and fixture-directory export
61
75
 
62
76
  Core execution does not require a database, network service, plugin, or property
63
77
  testing framework. See [security assumptions and non-goals](docs/security-and-non-goals.md).
78
+ Neither Phase 2 nor Phase 3 adds hidden discovery, network, randomness,
79
+ wall-clock, or ambient environment semantics. The historical Phase 2 contract
80
+ is frozen in the [Phase 2 public contract](docs/phase2-public-contract.md); the
81
+ additive evidence surface is frozen in the [Phase 3 public contract](docs/phase3-public-contract.md).
64
82
 
65
83
  ## Installation
66
84
 
@@ -80,7 +98,7 @@ Install only the named optional integrations you need:
80
98
  /tmp/scenario-engine-docs-venv/bin/python -m pip install '.[schemathesis]'
81
99
  ```
82
100
 
83
- The distribution is `deterministic-scenario-engine` 1.0.0. Install the package
101
+ The published distribution is `deterministic-scenario-engine` 2.0.0. Install the package
84
102
  with `pip install deterministic-scenario-engine`, or select an optional integration
85
103
  with a command such as `pip install 'deterministic-scenario-engine[pytest]'`.
86
104
 
@@ -139,8 +157,14 @@ Unsupported cross-version replay fails explicitly. See the [determinism model](d
139
157
  - [Public Python API](docs/api.md)
140
158
  - [Security assumptions and non-goals](docs/security-and-non-goals.md)
141
159
  - [Compatibility contract](docs/compatibility.md)
160
+ - [Phase 2 public contract, CLI, and hard bounds](docs/phase2-public-contract.md)
161
+ - [Phase 3 public contract and evidence interchange](docs/phase3-public-contract.md)
142
162
 
143
163
  ## Status
144
164
 
145
- The distribution and engine compatibility version are both 1.0.0. The project is
146
- licensed under Apache-2.0.
165
+ Distribution release identity and deterministic engine compatibility are
166
+ separate contracts. Version 2.0.0 has been published to PyPI and as a GitHub
167
+ Release. This source tree reports the unpublished 2.1.0 release candidate;
168
+ generated core manifests retain `ENGINE_VERSION` 1.0.0 and DSL 1. No 2.1.0 tag,
169
+ GitHub Release, or package-index publication exists. The project is licensed
170
+ under Apache-2.0.
@@ -2,8 +2,13 @@
2
2
 
3
3
  **Generate test scenarios, not just test records.**
4
4
 
5
- Deterministic Scenario Engine creates reproducible, state-consistent business
6
- histories with deterministic ground truth for testing.
5
+ Deterministic Scenario Engine (DSE) creates reproducible, state-consistent
6
+ business histories and deterministic scenario suites with ground truth for
7
+ testing. The published distribution is `deterministic-scenario-engine` 2.0.0.
8
+ Phase 3 evidence-interchange capabilities are implemented on `main` and the
9
+ current source release candidate reports distribution version 2.1.0, while 2.1.0
10
+ is not published. Its deterministic compatibility version remains
11
+ `ENGINE_VERSION == "1.0.0"`, and its DSL version remains integer 1.
7
12
 
8
13
  ## Why it exists
9
14
 
@@ -27,9 +32,22 @@ make expected behavior explicit.
27
32
  - an explicit, versioned plugin boundary and a reference ecommerce plugin pack
28
33
  - a JSON-file adapter
29
34
  - optional pytest, SQLAlchemy Core, Hypothesis, and Schemathesis integrations
35
+ - secure, explicit local-file composition with namespaced modules
36
+ - ordered Cartesian matrices with stable case IDs and original indexes
37
+ - immutable ordered batch plans and worker-independent results
38
+ - structured, redacted inspect/explain evidence and typed RFC 6901 semantic diff
39
+ - twelve-command `scenario` CLI for local and CI workflows, including bounded
40
+ local evidence export, verification, and lossless migration
41
+ - explicit immutable Domain Pack registries and pure Oracle Assertions
42
+ - canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
43
+ explicit adapters, closed lossless migrations, and fixture-directory export
30
44
 
31
45
  Core execution does not require a database, network service, plugin, or property
32
46
  testing framework. See [security assumptions and non-goals](docs/security-and-non-goals.md).
47
+ Neither Phase 2 nor Phase 3 adds hidden discovery, network, randomness,
48
+ wall-clock, or ambient environment semantics. The historical Phase 2 contract
49
+ is frozen in the [Phase 2 public contract](docs/phase2-public-contract.md); the
50
+ additive evidence surface is frozen in the [Phase 3 public contract](docs/phase3-public-contract.md).
33
51
 
34
52
  ## Installation
35
53
 
@@ -49,7 +67,7 @@ Install only the named optional integrations you need:
49
67
  /tmp/scenario-engine-docs-venv/bin/python -m pip install '.[schemathesis]'
50
68
  ```
51
69
 
52
- The distribution is `deterministic-scenario-engine` 1.0.0. Install the package
70
+ The published distribution is `deterministic-scenario-engine` 2.0.0. Install the package
53
71
  with `pip install deterministic-scenario-engine`, or select an optional integration
54
72
  with a command such as `pip install 'deterministic-scenario-engine[pytest]'`.
55
73
 
@@ -108,8 +126,14 @@ Unsupported cross-version replay fails explicitly. See the [determinism model](d
108
126
  - [Public Python API](docs/api.md)
109
127
  - [Security assumptions and non-goals](docs/security-and-non-goals.md)
110
128
  - [Compatibility contract](docs/compatibility.md)
129
+ - [Phase 2 public contract, CLI, and hard bounds](docs/phase2-public-contract.md)
130
+ - [Phase 3 public contract and evidence interchange](docs/phase3-public-contract.md)
111
131
 
112
132
  ## Status
113
133
 
114
- The distribution and engine compatibility version are both 1.0.0. The project is
115
- licensed under Apache-2.0.
134
+ Distribution release identity and deterministic engine compatibility are
135
+ separate contracts. Version 2.0.0 has been published to PyPI and as a GitHub
136
+ Release. This source tree reports the unpublished 2.1.0 release candidate;
137
+ generated core manifests retain `ENGINE_VERSION` 1.0.0 and DSL 1. No 2.1.0 tag,
138
+ GitHub Release, or package-index publication exists. The project is licensed
139
+ under Apache-2.0.
@@ -1,12 +1,15 @@
1
1
  # Public Python API
2
2
 
3
- This is the canonical top-level Phase 1.0 contract. Importable implementation
4
- symbols not listed here are not implicitly promoted to top-level public API.
3
+ This is the canonical top-level Phase 1.0 contract, preserved unchanged by the
4
+ Phase 2 and Phase 3 freezes. Importable implementation symbols not listed here
5
+ are not implicitly promoted to top-level public API. Specialized APIs are public
6
+ through the explicit subpackages documented below, not package-root convenience
7
+ exports.
5
8
 
6
9
  ## Constants and value objects
7
10
 
8
11
  - `ENGINE_VERSION` — engine compatibility version recorded in manifests; for
9
- the 1.0 release candidate it intentionally equals distribution version 1.0.0.
12
+ current manifests it remains 1.0.0 independently of distribution version.
10
13
  - `MISSING` — singleton semantic missing value, distinct from null.
11
14
  - `LogicalID(value: str)` — deterministic logical identifier value; users
12
15
  normally receive it from `$id` generation.
@@ -151,3 +154,70 @@ These are explicitly separate from the top-level contract:
151
154
 
152
155
  Internal dataclass field layouts beyond frozen normalized result/manifest schemas
153
156
  are not promised. See [compatibility](compatibility.md).
157
+
158
+ ## Phase 2 public subpackages
159
+
160
+ The complete machine-frozen names are each subpackage's `__all__`; these import
161
+ paths are stable while helpers outside `__all__` are intentionally internal.
162
+
163
+ - `scenario_engine.suite` — versioned run/suite/matrix/batch manifests and
164
+ bounded non-executing v1 result/manifest readers.
165
+ - `scenario_engine.composition` — `ComposedSuite`, `load_composed_suite()`,
166
+ `execute_composed_suite()`, hashes, frozen bounds, and composition errors.
167
+ - `scenario_engine.matrix` — `MatrixDimension`, `MatrixPlan`, expansion,
168
+ selection and execution with ordered Cartesian semantics, stable case IDs,
169
+ and retained original Cartesian indexes.
170
+ - `scenario_engine.batch` — immutable `RunRequest`/`BatchPlan`, ordered
171
+ `execute_batch()`/`stream_batch()` results, stable failures, and bounds.
172
+ - `scenario_engine.inspection` — immutable inspection/explanation documents,
173
+ read-only normalization, canonical serializers, and default secret redaction.
174
+ - `scenario_engine.diff` — typed `SemanticDiff`/`DiffRecord` values using RFC
175
+ 6901 paths, deterministic `first`/`complete` modes and prefix truncation.
176
+ - `scenario_engine.cli` — `CLIExitCode` and `main`; command behavior is in the
177
+ [Phase 2 public contract](phase2-public-contract.md#cli-contract).
178
+ - `scenario_engine.domain_packs` — immutable declarative `DomainPack` values,
179
+ caller-created `DomainPackRegistry`, exact deterministic resolution, semantic
180
+ identity, and declarative plugin requirements. There is no discovery, global
181
+ registry, or pack dependency mechanism.
182
+ - `scenario_engine.oracle_assertions` — pure post-result structured assertion
183
+ models, evaluation, serializers, outcomes, and bounds; evaluation never reruns
184
+ or replays a scenario.
185
+
186
+ The schema/version constants and all exact export manifests are executable
187
+ contract tests. See the [complete Phase 2 contract](phase2-public-contract.md).
188
+
189
+ ## Phase 3 evidence APIs
190
+
191
+ Phase 3 adds no package-root names. Its stable APIs are the names in `__all__`
192
+ of `scenario_engine.evidence` and `scenario_engine.reference_packs`; helpers in
193
+ their implementation modules are intentionally internal. Typical imports are:
194
+
195
+ ```python
196
+ from scenario_engine.evidence import (
197
+ ArtifactDescriptor,
198
+ EvidenceBundle,
199
+ EvidenceEntry,
200
+ EvidenceProvenance,
201
+ EvidenceRelationship,
202
+ EvidenceType,
203
+ compatibility_report,
204
+ export_evidence_bundle,
205
+ plan_migration,
206
+ read_evidence_bundle,
207
+ )
208
+ from scenario_engine.reference_packs import (
209
+ EcommerceEvidenceWorkflow,
210
+ ecommerce_domain_pack,
211
+ export_ecommerce_evidence,
212
+ )
213
+ ```
214
+
215
+ The evidence subpackage exposes immutable bundle/entry/relationship/provenance
216
+ models and canonicalization; bounded local reading and atomic export; canonical
217
+ JSON/JSONL records; explicit adapter capability/publication/receipt contracts;
218
+ finite compatibility reports and metadata-only migration plans; six closed,
219
+ lossless executable wrapper routes; and deterministic fixture-directory export.
220
+ `scenario_engine.reference_packs` exposes the ecommerce demonstrator and its
221
+ existing registry factory, not a generic workflow framework. The exact public
222
+ names, errors, schemas, limits, and compatibility posture are normative in the
223
+ [Phase 3 public contract](phase3-public-contract.md).
@@ -71,5 +71,27 @@ declarative derivations are dependency-resolved rather than source-key ordered.
71
71
  Canonical JSON uses sorted mapping keys. Do not use mapping insertion order to
72
72
  encode business sequencing; use an ordered DSL list.
73
73
 
74
+ Phase 2 composition resolves modules by explicit alias and hashes semantic
75
+ content without physical paths. Matrix order is declaration-order Cartesian
76
+ order with the last dimension changing fastest; retained cases keep their
77
+ original pre-filter index. Batch members have independent execution contexts and
78
+ results are emitted in plan order regardless of worker completion. Inspection,
79
+ diff, and assertion evaluation are pure consumers of immutable normalized
80
+ evidence. Worker scheduling, filesystem enumeration, host paths, locale defaults,
81
+ environment variables, network responses, and process history are not semantic
82
+ coordinates.
83
+
84
+ Phase 3 evidence identity is the SHA-256 of canonical bundle index bytes. Entries
85
+ bind explicit artifact paths, sizes, schemas, and content SHA-256 values;
86
+ canonical export preserves those bytes and publishes an absent destination
87
+ atomically. JSONL records follow caller order. Compatibility reports and
88
+ migration plans use finite tables and deterministic canonical bytes; migration
89
+ results bind source/target hashes and an ordered transformation tuple. Fixture
90
+ IDs are explicit and stable, adapter receipts retain submission ordinal, and the
91
+ ecommerce reference bundle identity is independent of destination path and
92
+ worker scheduling. None of these downstream identities changes Phase 2 result
93
+ or manifest semantics.
94
+
74
95
  See [reproducibility](reproducibility.md) for recorded context and
75
- [compatibility](compatibility.md) for the normative replay contract.
96
+ [compatibility](compatibility.md) for the normative replay contract, and the
97
+ [Phase 3 public contract](phase3-public-contract.md) for evidence identity.