deterministic-scenario-engine 2.2.0__tar.gz → 3.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/MANIFEST.in +1 -0
  2. {deterministic_scenario_engine-2.2.0/src/deterministic_scenario_engine.egg-info → deterministic_scenario_engine-3.0.1}/PKG-INFO +35 -14
  3. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/README.md +34 -13
  4. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/api.md +45 -2
  5. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/compatibility.md +21 -6
  6. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/dsl-reference.md +4 -0
  7. deterministic_scenario_engine-3.0.1/docs/dsl2-reference.md +41 -0
  8. deterministic_scenario_engine-3.0.1/docs/phase5-architecture.md +1149 -0
  9. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/quickstart.md +82 -1
  10. deterministic_scenario_engine-3.0.1/docs/release-notes-3.0.0.md +49 -0
  11. deterministic_scenario_engine-3.0.1/docs/release-notes-3.0.1.md +38 -0
  12. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/release-process.md +16 -0
  13. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/pyproject.toml +1 -1
  14. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1/src/deterministic_scenario_engine.egg-info}/PKG-INFO +35 -14
  15. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/deterministic_scenario_engine.egg-info/SOURCES.txt +44 -0
  16. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/__init__.py +2 -3
  17. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/_version.py +3 -2
  18. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/address.py +16 -0
  19. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/canonical.py +23 -3
  20. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/cli/main.py +289 -23
  21. deterministic_scenario_engine-3.0.1/src/scenario_engine/compatibility.py +50 -0
  22. deterministic_scenario_engine-3.0.1/src/scenario_engine/compatibility_fixtures.py +223 -0
  23. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/artifacts/manifest-v2.json +1 -0
  24. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/artifacts/result-v2.json +1 -0
  25. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/artifacts/schedule-v1.json +1 -0
  26. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/artifacts/suite-run-v2.json +1 -0
  27. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/compatibility-fixtures.json +1 -0
  28. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/references/legacy-result1.json +1 -0
  29. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/corrupt-result-hash.json +1 -0
  30. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/duplicate-key.json +1 -0
  31. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/incomplete-coordinates.json +1 -0
  32. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/invalid-type.json +1 -0
  33. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/missing-field.json +1 -0
  34. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/mixed-contract-tuple.json +1 -0
  35. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/noncanonical-address.json +1 -0
  36. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/unknown-contract.json +1 -0
  37. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/unknown-engine.json +1 -0
  38. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/unknown-field.json +1 -0
  39. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-input-hashes.json +1 -0
  40. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-root-seed.json +1 -0
  41. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-scenario-hash.json +1 -0
  42. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-schedule-hash.json +1 -0
  43. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-schedule-seed.json +1 -0
  44. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-scheduler-contract.json +1 -0
  45. deterministic_scenario_engine-3.0.1/src/scenario_engine/data/compatibility/phase5_10/scenarios/scenario-v2.yaml +15 -0
  46. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/definition_diff.py +59 -6
  47. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/diagnostics.py +7 -3
  48. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/dsl/__init__.py +6 -5
  49. deterministic_scenario_engine-3.0.1/src/scenario_engine/dsl/actor_runtime.py +433 -0
  50. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/dsl/compiler.py +17 -1
  51. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/dsl/errors.py +16 -1
  52. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/dsl/models.py +39 -0
  53. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/dsl/parser.py +119 -6
  54. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/dsl/runtime.py +12 -4
  55. deterministic_scenario_engine-3.0.1/src/scenario_engine/engine2.py +618 -0
  56. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/compatibility.py +2 -2
  57. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/impact.py +81 -16
  58. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/inspection/__init__.py +3 -1
  59. deterministic_scenario_engine-3.0.1/src/scenario_engine/inspection/explain.py +142 -0
  60. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/inspection/inspect.py +94 -3
  61. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/inspection/models.py +4 -2
  62. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/manifest.py +4 -1
  63. deterministic_scenario_engine-3.0.1/src/scenario_engine/schedule.py +415 -0
  64. deterministic_scenario_engine-3.0.1/src/scenario_engine/scheduler.py +175 -0
  65. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/trace_view.py +159 -6
  66. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_2a_reproducible_results.py +3 -2
  67. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_1_0d_documentation_examples.py +2 -2
  68. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_1_0e_packaging_release_candidate.py +2 -2
  69. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_10_workflow_demonstrators.py +2 -2
  70. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_12_public_contract_docs_freeze.py +1 -1
  71. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_13_packaging_fresh_install_rc.py +4 -3
  72. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_1_v1_read_contract.py +18 -2
  73. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_2_composition.py +1 -1
  74. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_3_matrix.py +1 -1
  75. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_4_batch.py +1 -1
  76. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_5_inspect_explain.py +1 -1
  77. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_7_cli_product_surface.py +1 -1
  78. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_11_public_contract_docs_freeze.py +1 -1
  79. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_1_evidence_bundle_contract.py +2 -2
  80. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_10_canonical_workflow_help.py +11 -0
  81. deterministic_scenario_engine-3.0.1/tests/test_phase_5_10_public_api_cli_compatibility_fixtures.py +139 -0
  82. deterministic_scenario_engine-3.0.1/tests/test_phase_5_11_performance_security_contract_freeze.py +148 -0
  83. deterministic_scenario_engine-3.0.1/tests/test_phase_5_12a_r2_quickstart_installed_consumer.py +217 -0
  84. deterministic_scenario_engine-3.0.1/tests/test_phase_5_12b_1_version_promotion.py +117 -0
  85. deterministic_scenario_engine-3.0.1/tests/test_phase_5_1_dsl2_actor_lane_foundation.py +133 -0
  86. deterministic_scenario_engine-3.0.1/tests/test_phase_5_2_scheduler_kernel.py +151 -0
  87. deterministic_scenario_engine-3.0.1/tests/test_phase_5_3_actor_execution_shared_state.py +170 -0
  88. deterministic_scenario_engine-3.0.1/tests/test_phase_5_4_schedule_identity_replay.py +217 -0
  89. deterministic_scenario_engine-3.0.1/tests/test_phase_5_5_result2_engine2_compatibility.py +217 -0
  90. deterministic_scenario_engine-3.0.1/tests/test_phase_5_6_public_cli_python_execution.py +187 -0
  91. deterministic_scenario_engine-3.0.1/tests/test_phase_5_7_actor_aware_analysis.py +215 -0
  92. deterministic_scenario_engine-3.0.1/tests/test_phase_5_9_actor_aware_static_trace_viewer.py +156 -0
  93. deterministic_scenario_engine-2.2.0/src/scenario_engine/compatibility_fixtures.py +0 -94
  94. deterministic_scenario_engine-2.2.0/src/scenario_engine/inspection/explain.py +0 -79
  95. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/LICENSE +0 -0
  96. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/determinism.md +0 -0
  97. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/hypothesis.md +0 -0
  98. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/phase2-architecture.md +0 -0
  99. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/phase2-public-contract.md +0 -0
  100. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/phase3-architecture.md +0 -0
  101. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/phase3-public-contract.md +0 -0
  102. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/phase4-architecture.md +0 -0
  103. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/plugins.md +0 -0
  104. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/product-evidence-gate.md +0 -0
  105. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/release-notes-2.2.0.md +0 -0
  106. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/reproducibility.md +0 -0
  107. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/schemathesis.md +0 -0
  108. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/security-and-non-goals.md +0 -0
  109. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/sqlalchemy.md +0 -0
  110. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/docs/testing-oracle.md +0 -0
  111. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/api_scenario.yaml +0 -0
  112. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/cart.yaml +0 -0
  113. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/control_flow.yaml +0 -0
  114. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/ecommerce.yaml +0 -0
  115. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/openapi.yaml +0 -0
  116. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/oracle_fault.yaml +0 -0
  117. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase0_1b_cart.yaml +0 -0
  118. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase0_3_resources.yaml +0 -0
  119. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase0_4_control_flow.yaml +0 -0
  120. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase0_5_oracle_fault.yaml +0 -0
  121. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase0_6_sqlalchemy_rows.yaml +0 -0
  122. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase0_7_ecommerce_plugin.yaml +0 -0
  123. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase0_8_api_scenario.yaml +0 -0
  124. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase0_8_openapi.yaml +0 -0
  125. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/phase3_ecommerce_evidence.py +0 -0
  126. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/resources.yaml +0 -0
  127. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/examples/sqlalchemy_rows.yaml +0 -0
  128. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/setup.cfg +0 -0
  129. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/setup.py +0 -0
  130. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/deterministic_scenario_engine.egg-info/dependency_links.txt +0 -0
  131. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/deterministic_scenario_engine.egg-info/entry_points.txt +0 -0
  132. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/deterministic_scenario_engine.egg-info/requires.txt +0 -0
  133. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/deterministic_scenario_engine.egg-info/top_level.txt +0 -0
  134. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/adapters/__init__.py +0 -0
  135. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/adapters/json_file.py +0 -0
  136. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/adapters/sqlalchemy.py +0 -0
  137. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/artifacts.py +0 -0
  138. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/batch/__init__.py +0 -0
  139. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/batch/canonical.py +0 -0
  140. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/batch/errors.py +0 -0
  141. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/batch/models.py +0 -0
  142. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/batch/runtime.py +0 -0
  143. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/cli/__init__.py +0 -0
  144. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/cli/__main__.py +0 -0
  145. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/clock.py +0 -0
  146. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/composition/__init__.py +0 -0
  147. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/composition/canonical.py +0 -0
  148. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/composition/errors.py +0 -0
  149. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/composition/models.py +0 -0
  150. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/composition/parser.py +0 -0
  151. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/composition/resolver.py +0 -0
  152. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/composition/runtime.py +0 -0
  153. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/context.py +0 -0
  154. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/control_flow.py +0 -0
  155. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/artifacts/current-2.1.2-suite-run-v1.json +0 -0
  156. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/artifacts/historical-1.0.0-result-v1.json +0 -0
  157. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/artifacts/historical-2.0.0-suite-run-v1.json +0 -0
  158. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-incomplete-suite-run-v1.json +0 -0
  159. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-scenario-mismatch-suite-run-v1.json +0 -0
  160. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-unknown-engine-suite-run-v1.json +0 -0
  161. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-unknown-manifest-suite-run-v9.json +0 -0
  162. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-unsupported-contract.json +0 -0
  163. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/compatibility-fixtures.json +0 -0
  164. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/inputs/current-2.1.2-suite-run-v1.inputs.json +0 -0
  165. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/inputs/historical-2.0.0-suite-run-v1.inputs.json +0 -0
  166. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/scenarios/compatibility_case.yaml +0 -0
  167. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/data/compatibility/phase4_11/scenarios/mismatch_case.yaml +0 -0
  168. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/diff/__init__.py +0 -0
  169. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/diff/compare.py +0 -0
  170. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/diff/errors.py +0 -0
  171. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/diff/models.py +0 -0
  172. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/diff/render.py +0 -0
  173. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/diff/serialization.py +0 -0
  174. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/domain_packs/__init__.py +0 -0
  175. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/domain_packs/canonical.py +0 -0
  176. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/domain_packs/errors.py +0 -0
  177. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/domain_packs/models.py +0 -0
  178. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/domain_packs/registry.py +0 -0
  179. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/errors.py +0 -0
  180. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/__init__.py +0 -0
  181. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/adapter.py +0 -0
  182. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/canonical.py +0 -0
  183. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/errors.py +0 -0
  184. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/export.py +0 -0
  185. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/fixture.py +0 -0
  186. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/migration.py +0 -0
  187. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/models.py +0 -0
  188. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/evidence/read.py +0 -0
  189. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/expressions.py +0 -0
  190. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/faults.py +0 -0
  191. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/history.py +0 -0
  192. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/ids.py +0 -0
  193. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/inspection/errors.py +0 -0
  194. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/inspection/redaction.py +0 -0
  195. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/inspection/serialization.py +0 -0
  196. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/integrations/__init__.py +0 -0
  197. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/integrations/hypothesis.py +0 -0
  198. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/integrations/schemathesis.py +0 -0
  199. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/invariants.py +0 -0
  200. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/matrix/__init__.py +0 -0
  201. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/matrix/canonical.py +0 -0
  202. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/matrix/errors.py +0 -0
  203. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/matrix/expand.py +0 -0
  204. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/matrix/filtering.py +0 -0
  205. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/matrix/models.py +0 -0
  206. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/matrix/runtime.py +0 -0
  207. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/oracle.py +0 -0
  208. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/oracle_assertions/__init__.py +0 -0
  209. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/oracle_assertions/errors.py +0 -0
  210. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/oracle_assertions/evaluate.py +0 -0
  211. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/oracle_assertions/models.py +0 -0
  212. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/oracle_assertions/serialization.py +0 -0
  213. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/plugins.py +0 -0
  214. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/provenance.py +0 -0
  215. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/pytest_plugin.py +0 -0
  216. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/reference_packs/__init__.py +0 -0
  217. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/reference_packs/ecommerce.py +0 -0
  218. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/reference_packs/ecommerce_evidence.py +0 -0
  219. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/resources.py +0 -0
  220. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/result.py +0 -0
  221. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/rng.py +0 -0
  222. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/runner.py +0 -0
  223. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/scaffolding.py +0 -0
  224. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/state.py +0 -0
  225. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/suite/__init__.py +0 -0
  226. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/suite/errors.py +0 -0
  227. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/suite/models.py +0 -0
  228. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/suite/publication.py +0 -0
  229. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/suite/read.py +0 -0
  230. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/suite/serialization.py +0 -0
  231. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/validation.py +0 -0
  232. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/src/scenario_engine/values.py +0 -0
  233. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_1a_semantic_kernel.py +0 -0
  234. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_1b_linear_dsl.py +0 -0
  235. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_1c_integrated_phase0_1.py +0 -0
  236. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_1c_r1_missing_sentinel_repair.py +0 -0
  237. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_2b_json_pytest_integration.py +0 -0
  238. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_3_resources_constraints.py +0 -0
  239. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_4_control_flow.py +0 -0
  240. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_5_oracle_faults.py +0 -0
  241. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_6_sqlalchemy_materializer.py +0 -0
  242. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_7_plugins_ecommerce.py +0 -0
  243. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_0_8_hypothesis_schemathesis.py +0 -0
  244. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_1_0b_public_api_error_contract.py +0 -0
  245. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_1_0c_dsl_compatibility_contract.py +0 -0
  246. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_11_performance_scale_hardening.py +0 -0
  247. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_1_models_serialization.py +0 -0
  248. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_6_structured_semantic_diff.py +0 -0
  249. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_8_domain_pack_foundation.py +0 -0
  250. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_2_9_oracle_assertions.py +0 -0
  251. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_10_performance_security_hardening.py +0 -0
  252. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_12_packaging_fresh_install_rc.py +0 -0
  253. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_2_safe_bundle_reader_validator.py +0 -0
  254. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_3_ordered_export.py +0 -0
  255. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_4_evidence_adapter_contract.py +0 -0
  256. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_5_compatibility_migration_planner.py +0 -0
  257. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_6_lossless_migrations_fixture_export.py +0 -0
  258. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_7_cli_interchange_surface.py +0 -0
  259. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_3_8_ecommerce_evidence_workflow.py +0 -0
  260. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_11_cross_version_fixtures.py +0 -0
  261. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_12_hardening.py +0 -0
  262. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_12r2_public_fixture_packaging.py +0 -0
  263. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_12r3_consumer_secret_redaction.py +0 -0
  264. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_1_cli_replay_workflow.py +0 -0
  265. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_2_replay_compatibility_diagnostics.py +0 -0
  266. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_3_filesystem_trust_boundary.py +0 -0
  267. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_4_actionable_human_diagnostics.py +0 -0
  268. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_5_machine_readable_error_envelope.py +0 -0
  269. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_6_author_time_scaffolding.py +0 -0
  270. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_7_scenario_definition_structural_diff.py +0 -0
  271. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_8_conservative_impact_analysis.py +0 -0
  272. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_phase_4_9_static_trace_viewer.py +0 -0
  273. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_readme_pypi_portability.py +0 -0
  274. {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.1}/tests/test_test_portability.py +0 -0
@@ -4,6 +4,7 @@ include setup.py
4
4
  include pyproject.toml
5
5
  recursive-include src *.py
6
6
  recursive-include src/scenario_engine/data/compatibility/phase4_11 *
7
+ recursive-include src/scenario_engine/data/compatibility/phase5_10 *
7
8
  recursive-include docs *.md
8
9
  recursive-include examples *.yaml
9
10
  include examples/phase3_ecommerce_evidence.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deterministic-scenario-engine
3
- Version: 2.2.0
3
+ Version: 3.0.1
4
4
  Summary: Reproducible, state-consistent business scenarios with deterministic ground truth
5
5
  License-Expression: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/imshahinul/deterministic-scenario-engine
@@ -41,10 +41,13 @@ Dynamic: license-file
41
41
 
42
42
  Deterministic Scenario Engine (DSE) creates reproducible, state-consistent
43
43
  business histories and deterministic scenario suites with ground truth for
44
- testing. The source-tree distribution version is 2.2.0. Distribution release
45
- identity and deterministic compatibility identity are separate:
46
- `ENGINE_VERSION` remains 1.0.0 and DSL version remains 1. For authoritative
47
- public-release availability and history, see PyPI and GitHub Releases.
44
+ testing. Distribution 3.0.0 was published on October 9, 2026, on
45
+ [PyPI](https://pypi.org/project/deterministic-scenario-engine/3.0.0/) and as a
46
+ [GitHub Release](https://github.com/imshahinul/deterministic-scenario-engine/releases/tag/3.0.0).
47
+ Distribution and execution compatibility identities are separate: public
48
+ `ENGINE_VERSION` is 2.0.0, while the preserved DSL 1 path records Engine 1.0.0.
49
+ PyPI and GitHub Releases remain authoritative for public-release availability
50
+ and history.
48
51
 
49
52
  ## Why it exists
50
53
 
@@ -58,6 +61,9 @@ make expected behavior explicit.
58
61
  ## Core capabilities
59
62
 
60
63
  - DSL 1 parsing, compilation, and deterministic execution
64
+ - DSL 2 logical-actor execution with an explicit independent schedule seed
65
+ - canonical Result/2, Manifest/2, and Schedule/1 evidence with exact replay
66
+ - actor-aware inspect/explain and deterministic offline trace viewing
61
67
  - addressed randomness and logical IDs that do not depend on a shared stream
62
68
  - current state plus append-only committed history and artifacts
63
69
  - whole-step atomicity
@@ -80,11 +86,9 @@ make expected behavior explicit.
80
86
  - canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
81
87
  explicit adapters, closed lossless migrations, and fixture-directory export
82
88
 
83
- Release 2.2.0 adds first-class run → replay artifacts and fail-closed replay
84
- diagnostics, actionable human and machine-readable errors, author-time
85
- scaffolding, scenario-definition diff, conservative impact analysis, offline
86
- trace views, and an installed compatibility-fixture export. See the
87
- [2.2.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-2.2.0.md).
89
+ The 3.0.0 release adds Engine 2.0.0 and DSL 2 while preserving Engine 1/DSL 1
90
+ behavior and immutable evidence. See the
91
+ [3.0.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.0.md).
88
92
 
89
93
  Core execution does not require a database, network service, plugin, or property
90
94
  testing framework. See [security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md).
@@ -104,6 +108,18 @@ python3 -m pip install deterministic-scenario-engine
104
108
  scenario --help
105
109
  ```
106
110
 
111
+ Verify that the same active Python interpreter sees the expected distribution
112
+ and observe the module location it actually imports:
113
+
114
+ ```console
115
+ python3 -c 'from importlib.metadata import version; from pathlib import Path; import scenario_engine; print("DSE distribution:", version("deterministic-scenario-engine")); print("Imported module:", Path(scenario_engine.__file__).resolve())'
116
+ ```
117
+
118
+ For this release the distribution is `3.0.1`; a source-development editable
119
+ install resolves the module under its `src/scenario_engine` directory. The DSE
120
+ distribution version is distinct from Engine 1 (`1.0.0`) and Engine 2 (`2.0.0`)
121
+ compatibility versions.
122
+
107
123
  Install only the named optional integrations you need:
108
124
 
109
125
  ```console
@@ -151,6 +167,7 @@ self-contained offline HTML file from supported result/evidence.
151
167
 
152
168
  - [Quickstart](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/quickstart.md)
153
169
  - [DSL 1 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl-reference.md)
170
+ - [DSL 2 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl2-reference.md)
154
171
  - [Determinism model](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/determinism.md)
155
172
  - [Reproducibility and replay](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/reproducibility.md)
156
173
  - [Testing, faults, and oracle](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/testing-oracle.md)
@@ -162,13 +179,17 @@ self-contained offline HTML file from supported result/evidence.
162
179
  - [Security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md)
163
180
  - [Compatibility contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/compatibility.md)
164
181
  - [2.2.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-2.2.0.md)
182
+ - [3.0.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.0.md)
183
+ - [3.0.1 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.1.md)
165
184
  - [Phase 2 public contract, CLI, and hard bounds](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase2-public-contract.md)
166
185
  - [Phase 3 public contract and evidence interchange](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase3-public-contract.md)
167
186
 
168
187
  ## Status
169
188
 
170
189
  Distribution release identity and deterministic engine compatibility are
171
- separate contracts. This source tree reports distribution version 2.2.0;
172
- generated core manifests retain `ENGINE_VERSION` 1.0.0 and DSL 1. PyPI and
173
- GitHub Releases are the authoritative sources for public-release availability
174
- and history. The project is licensed under Apache-2.0.
190
+ separate contracts. This source tree reports published distribution version
191
+ 3.0.1 and public Engine 2.0.0. Engine 1 manifests remain exactly 1.0.0
192
+ with integer DSL 1; Engine 2 manifests use 2.0.0 with integer DSL 2. Supported
193
+ Python versions are 3.11–3.14. Suite Run/2 is reader/schema support only; Engine
194
+ 2 suite orchestration, cross-major promotion, remote URI input, and implicit
195
+ schedule-seed derivation are unsupported. The project is Apache-2.0 licensed.
@@ -4,10 +4,13 @@
4
4
 
5
5
  Deterministic Scenario Engine (DSE) creates reproducible, state-consistent
6
6
  business histories and deterministic scenario suites with ground truth for
7
- testing. The source-tree distribution version is 2.2.0. Distribution release
8
- identity and deterministic compatibility identity are separate:
9
- `ENGINE_VERSION` remains 1.0.0 and DSL version remains 1. For authoritative
10
- public-release availability and history, see PyPI and GitHub Releases.
7
+ testing. Distribution 3.0.0 was published on October 9, 2026, on
8
+ [PyPI](https://pypi.org/project/deterministic-scenario-engine/3.0.0/) and as a
9
+ [GitHub Release](https://github.com/imshahinul/deterministic-scenario-engine/releases/tag/3.0.0).
10
+ Distribution and execution compatibility identities are separate: public
11
+ `ENGINE_VERSION` is 2.0.0, while the preserved DSL 1 path records Engine 1.0.0.
12
+ PyPI and GitHub Releases remain authoritative for public-release availability
13
+ and history.
11
14
 
12
15
  ## Why it exists
13
16
 
@@ -21,6 +24,9 @@ make expected behavior explicit.
21
24
  ## Core capabilities
22
25
 
23
26
  - DSL 1 parsing, compilation, and deterministic execution
27
+ - DSL 2 logical-actor execution with an explicit independent schedule seed
28
+ - canonical Result/2, Manifest/2, and Schedule/1 evidence with exact replay
29
+ - actor-aware inspect/explain and deterministic offline trace viewing
24
30
  - addressed randomness and logical IDs that do not depend on a shared stream
25
31
  - current state plus append-only committed history and artifacts
26
32
  - whole-step atomicity
@@ -43,11 +49,9 @@ make expected behavior explicit.
43
49
  - canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
44
50
  explicit adapters, closed lossless migrations, and fixture-directory export
45
51
 
46
- Release 2.2.0 adds first-class run → replay artifacts and fail-closed replay
47
- diagnostics, actionable human and machine-readable errors, author-time
48
- scaffolding, scenario-definition diff, conservative impact analysis, offline
49
- trace views, and an installed compatibility-fixture export. See the
50
- [2.2.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-2.2.0.md).
52
+ The 3.0.0 release adds Engine 2.0.0 and DSL 2 while preserving Engine 1/DSL 1
53
+ behavior and immutable evidence. See the
54
+ [3.0.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.0.md).
51
55
 
52
56
  Core execution does not require a database, network service, plugin, or property
53
57
  testing framework. See [security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md).
@@ -67,6 +71,18 @@ python3 -m pip install deterministic-scenario-engine
67
71
  scenario --help
68
72
  ```
69
73
 
74
+ Verify that the same active Python interpreter sees the expected distribution
75
+ and observe the module location it actually imports:
76
+
77
+ ```console
78
+ python3 -c 'from importlib.metadata import version; from pathlib import Path; import scenario_engine; print("DSE distribution:", version("deterministic-scenario-engine")); print("Imported module:", Path(scenario_engine.__file__).resolve())'
79
+ ```
80
+
81
+ For this release the distribution is `3.0.1`; a source-development editable
82
+ install resolves the module under its `src/scenario_engine` directory. The DSE
83
+ distribution version is distinct from Engine 1 (`1.0.0`) and Engine 2 (`2.0.0`)
84
+ compatibility versions.
85
+
70
86
  Install only the named optional integrations you need:
71
87
 
72
88
  ```console
@@ -114,6 +130,7 @@ self-contained offline HTML file from supported result/evidence.
114
130
 
115
131
  - [Quickstart](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/quickstart.md)
116
132
  - [DSL 1 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl-reference.md)
133
+ - [DSL 2 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl2-reference.md)
117
134
  - [Determinism model](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/determinism.md)
118
135
  - [Reproducibility and replay](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/reproducibility.md)
119
136
  - [Testing, faults, and oracle](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/testing-oracle.md)
@@ -125,13 +142,17 @@ self-contained offline HTML file from supported result/evidence.
125
142
  - [Security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md)
126
143
  - [Compatibility contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/compatibility.md)
127
144
  - [2.2.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-2.2.0.md)
145
+ - [3.0.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.0.md)
146
+ - [3.0.1 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.1.md)
128
147
  - [Phase 2 public contract, CLI, and hard bounds](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase2-public-contract.md)
129
148
  - [Phase 3 public contract and evidence interchange](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase3-public-contract.md)
130
149
 
131
150
  ## Status
132
151
 
133
152
  Distribution release identity and deterministic engine compatibility are
134
- separate contracts. This source tree reports distribution version 2.2.0;
135
- generated core manifests retain `ENGINE_VERSION` 1.0.0 and DSL 1. PyPI and
136
- GitHub Releases are the authoritative sources for public-release availability
137
- and history. The project is licensed under Apache-2.0.
153
+ separate contracts. This source tree reports published distribution version
154
+ 3.0.1 and public Engine 2.0.0. Engine 1 manifests remain exactly 1.0.0
155
+ with integer DSL 1; Engine 2 manifests use 2.0.0 with integer DSL 2. Supported
156
+ Python versions are 3.11–3.14. Suite Run/2 is reader/schema support only; Engine
157
+ 2 suite orchestration, cross-major promotion, remote URI input, and implicit
158
+ schedule-seed derivation are unsupported. The project is Apache-2.0 licensed.
@@ -8,8 +8,14 @@ exports.
8
8
 
9
9
  ## Constants and value objects
10
10
 
11
- - `ENGINE_VERSION` — engine compatibility version recorded in manifests; for
12
- current manifests it remains 1.0.0 independently of distribution version.
11
+ - `scenario_engine.ENGINE_VERSION` — public current Engine coordinate, `2.0.0`.
12
+ - `scenario_engine._version.VERSION` — distribution coordinate, `3.0.0`.
13
+ - `scenario_engine._version.ENGINE1_VERSION` — explicit historical Engine 1
14
+ execution coordinate, `1.0.0`; not added to the frozen package-root exports.
15
+
16
+ - `ENGINE_VERSION` — engine compatibility version recorded in manifests:
17
+ Engine 1 Manifest/1 records 1.0.0, while Engine 2 Manifest/2 records 2.0.0;
18
+ both are independent of the distribution version.
13
19
  - `MISSING` — singleton semantic missing value, distinct from null.
14
20
  - `LogicalID(value: str)` — deterministic logical identifier value; users
15
21
  normally receive it from `$id` generation.
@@ -58,6 +64,43 @@ checks recorded compatibility before returning a replayed `ScenarioResult`.
58
64
  `evaluate_scenario()` returns `OracleEvaluation` and optionally raises on an
59
65
  oracle mismatch.
60
66
 
67
+ ### Engine 2 explicit public workflow
68
+
69
+ These names are explicitly public from `scenario_engine.engine2` (execution and
70
+ replay) and `scenario_engine.compatibility` (classification). They are not added
71
+ to the compatibility-frozen package root.
72
+
73
+ ```python
74
+ validate_engine2(yaml_text: str) -> CompiledScenarioV2
75
+ execute_engine2(scenario: CompiledScenarioV2, root_seed: str | int, schedule_seed: int, *, run_index: int = 0, inputs: Mapping[str, Any] | None = None, plugins: PluginRegistry | None = None) -> tuple[Engine2Result, ScheduleArtifact]
76
+ replay_engine2(result: Engine2Result | bytes | str, schedule: ScheduleArtifact | bytes | str, scenario: CompiledScenarioV2, *, inputs: Mapping[str, Any] | None = None, plugins: PluginRegistry | None = None) -> Engine2Result
77
+ classify_engine_contract(*, dsl_version: int | None, engine_version: str | None, result_contract: str | None, operation: str) -> CompatibilityDecision
78
+ ```
79
+
80
+ `validate_engine2()` accepts only DSL 2. `execute_engine2()` requires both the
81
+ generation root seed and independent schedule seed and returns immutable,
82
+ canonically serializable Result/2 and Schedule/1 evidence. `replay_engine2()`
83
+ strictly reads supplied evidence when bytes or text are given, independently
84
+ executes every recorded scheduler choice, verifies all coordinates and final
85
+ observations, and returns the verified immutable Result/2. It never reconstructs
86
+ missing schedule evidence. Compatibility classification is explicit and does not
87
+ execute, migrate, or promote evidence. Existing Engine 1 functions are unchanged.
88
+
89
+ `schedule_seed` is a required independent unsigned 64-bit coordinate. It is not
90
+ derived from `root_seed`. Engine 2 writes Result/2, Manifest/2, and Schedule/1;
91
+ exact replay requires the matching result, schedule, scenario, and explicit
92
+ inputs. Actor-aware analysis is exposed through the existing inspection,
93
+ explanation, impact, and offline `scenario_engine.trace_view` surfaces.
94
+
95
+ The immutable Engine 2 evidence access names are also public from their explicit
96
+ modules: `Engine2Manifest`, `Engine2Result`, `ScheduleReference`,
97
+ `read_manifest2()`, `read_result2()`, and their canonical byte functions from
98
+ `scenario_engine.engine2`; and `ScheduleArtifact`, `read_schedule()`, and its
99
+ canonical byte functions from `scenario_engine.schedule`. `read_suite_run2()` is
100
+ schema/reader validation only and does not execute a suite. Errors remain in the
101
+ `Engine2EvidenceError`/`Engine2EvidenceBoundError`/`Engine2ReplayMismatch` and
102
+ `ScheduleError`/`ScheduleBoundError`/`ScheduleReplayMismatch` families.
103
+
61
104
  ## Canonical scenario functions
62
105
 
63
106
  ```python
@@ -1,13 +1,28 @@
1
- # Scenario Engine 1.0 compatibility contract
1
+ # Scenario Engine 3.0 compatibility contract
2
2
 
3
3
  This document is normative for the frozen DSL, deterministic result, manifest,
4
4
  and plugin contracts. Distribution metadata remains a packaging concern.
5
5
 
6
6
  ## Version roles
7
7
 
8
- `ENGINE_VERSION` is the engine compatibility/replay contract version recorded
9
- in every `ReproducibilityManifest`. For the 1.0 release candidate it is 1.0.0
10
- and intentionally equals the distribution version.
8
+ Distribution `VERSION` is 3.0.0 and public `ENGINE_VERSION` is 2.0.0. The
9
+ historical Engine 1 coordinate is independently fixed at 1.0.0: every
10
+ `scenario.manifest/1` produced by DSL 1 continues to record 1.0.0. Engine 2
11
+ Manifest/2 records 2.0.0. Package version is never inferred as an execution
12
+ coordinate.
13
+
14
+ ## Canonical compatibility matrix
15
+
16
+ | DSL | Engine | Execution/replay |
17
+ | --- | --- | --- |
18
+ | integer `1` | `1.0.0` | supported: Result/1, Manifest/1, Suite Run/1 |
19
+ | integer `2` | `2.0.0` | supported: Result/2, Manifest/2, Schedule/1 |
20
+ | integer `1` | `2.0.0` | unsupported cross-major |
21
+ | integer `2` | `1.0.0` | unsupported cross-major |
22
+
23
+ Unknown, mixed-major, missing, and incomplete tuples fail closed. Reading does
24
+ not silently migrate evidence. Suite Run/2 support is schema/reader-only and
25
+ does not provide Engine 2 suite orchestration.
11
26
 
12
27
  Engine SemVer has these meanings:
13
28
 
@@ -75,8 +90,8 @@ default and reader rules; unknown data is not silently treated as compatible.
75
90
  Exact replay requires a compatible recorded engine contract, DSL version,
76
91
  RNG/ID and generator/plugin algorithm versions, canonical scenario hash,
77
92
  input/resource hashes, root seed, run index, locale, reference clock, and other
78
- explicit execution context. The current engine requires exact `ENGINE_VERSION`
79
- and exact compatibility-tuple matches. Unsupported cross-version replay fails
93
+ explicit execution context. Each engine requires its exact immutable execution
94
+ coordinate and compatibility-tuple match. Unsupported cross-version replay fails
80
95
  explicitly; indefinite replay across incompatible future major versions is not
81
96
  promised.
82
97
 
@@ -3,6 +3,10 @@
3
3
  This reference describes the frozen Scenario Engine DSL 1 grammar and semantics.
4
4
  Unknown keys are rejected in every schema-defined mapping.
5
5
 
6
+ DSL 1 remains bound to Engine 1.0.0, Result/1, Manifest/1, and Suite Run/1 in
7
+ distribution 3.0.0. Public Engine 2.0.0 does not promote or reinterpret DSL 1.
8
+ See [DSL 2](dsl2-reference.md) for logical actors.
9
+
6
10
  ## Root document
7
11
 
8
12
  Required root keys are:
@@ -0,0 +1,41 @@
1
+ # DSL 2 logical-actor reference
2
+
3
+ **Status: RELEASED — DSE distribution 3.0.0, published October 9, 2026.** See
4
+ the [GitHub Release](https://github.com/imshahinul/deterministic-scenario-engine/releases/tag/3.0.0).
5
+
6
+ DSL 2 is selected only by integer `dsl_version: 2` and executes with Engine
7
+ 2.0.0. It preserves DSL 1 expression, deterministic value, resource, plugin,
8
+ clock, and atomic-step foundations while declaring ordered logical actors. Each
9
+ actor has a canonical `scenario:/actor/<id>` address and an ordered `steps`
10
+ sequence. Unknown keys, duplicate identifiers, noncanonical addresses, invalid
11
+ types, and exceeded bounds fail before execution.
12
+
13
+ ## Execution and evidence
14
+
15
+ Execution requires two independent coordinates:
16
+
17
+ - `root_seed` controls addressed generation;
18
+ - `schedule_seed` is an explicit unsigned 64-bit integer controlling scheduler
19
+ selection and is never inferred from the root seed.
20
+
21
+ The public workflow is `scenario_engine.engine2.validate_engine2()`,
22
+ `execute_engine2()`, and `replay_engine2()`. It produces canonical
23
+ `scenario.result/2`, embedded `scenario.manifest/2`, and replay-authoritative
24
+ `scenario.schedule/1`. Exact replay rejects missing, altered, mixed-major, or
25
+ incompletely linked evidence.
26
+
27
+ ## Analysis and limits
28
+
29
+ Result/2 supports actor-aware inspect/explain, conservative analysis, and the
30
+ offline static trace viewer. Inclusive resource ceilings cover actors, steps,
31
+ scheduler selections, canonical schedule bytes (8 MiB), canonical result bytes
32
+ (32 MiB), nesting depth, and input bytes. Duplicate JSON keys, remote URIs,
33
+ filesystem link traversal, noncanonical semantic addresses, invalid seeds, and
34
+ secret reflection are rejected or redacted.
35
+
36
+ ## Unsupported capabilities
37
+
38
+ DSL 1/Engine 2 and DSL 2/Engine 1 execution are unsupported. There is no silent
39
+ migration, package-version inference, schedule-seed derivation, wall-clock or
40
+ network discovery, or Engine 2 suite orchestration. `suite.run/2` is a strict
41
+ schema/reader contract only.