deterministic-scenario-engine 2.0.0__tar.gz → 2.1.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 (192) hide show
  1. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/MANIFEST.in +1 -0
  2. {deterministic_scenario_engine-2.0.0/src/deterministic_scenario_engine.egg-info → deterministic_scenario_engine-2.1.1}/PKG-INFO +44 -35
  3. deterministic_scenario_engine-2.1.1/README.md +137 -0
  4. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/api.md +41 -5
  5. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/determinism.md +13 -1
  6. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/phase2-public-contract.md +6 -3
  7. deterministic_scenario_engine-2.1.1/docs/phase3-architecture.md +731 -0
  8. deterministic_scenario_engine-2.1.1/docs/phase3-public-contract.md +298 -0
  9. deterministic_scenario_engine-2.1.1/docs/product-evidence-gate.md +65 -0
  10. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/quickstart.md +17 -0
  11. deterministic_scenario_engine-2.1.1/docs/release-process.md +63 -0
  12. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/reproducibility.md +16 -0
  13. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/security-and-non-goals.md +25 -1
  14. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/testing-oracle.md +6 -0
  15. deterministic_scenario_engine-2.1.1/examples/phase3_ecommerce_evidence.py +27 -0
  16. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/pyproject.toml +7 -0
  17. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1/src/deterministic_scenario_engine.egg-info}/PKG-INFO +44 -35
  18. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/deterministic_scenario_engine.egg-info/SOURCES.txt +29 -1
  19. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/_version.py +1 -1
  20. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/cli/main.py +98 -1
  21. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/dsl/models.py +4 -4
  22. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/__init__.py +211 -0
  23. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/adapter.py +329 -0
  24. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/canonical.py +71 -0
  25. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/compatibility.py +490 -0
  26. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/errors.py +123 -0
  27. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/export.py +320 -0
  28. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/fixture.py +152 -0
  29. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/migration.py +223 -0
  30. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/models.py +223 -0
  31. deterministic_scenario_engine-2.1.1/src/scenario_engine/evidence/read.py +371 -0
  32. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/provenance.py +2 -2
  33. deterministic_scenario_engine-2.1.1/src/scenario_engine/reference_packs/__init__.py +16 -0
  34. deterministic_scenario_engine-2.1.1/src/scenario_engine/reference_packs/ecommerce_evidence.py +310 -0
  35. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_1_0e_packaging_release_candidate.py +25 -12
  36. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_10_workflow_demonstrators.py +4 -2
  37. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_12_public_contract_docs_freeze.py +1 -1
  38. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_13_packaging_fresh_install_rc.py +9 -4
  39. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_1_v1_read_contract.py +1 -1
  40. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_2_composition.py +1 -1
  41. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_3_matrix.py +1 -1
  42. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_4_batch.py +1 -1
  43. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_5_inspect_explain.py +1 -1
  44. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_7_cli_product_surface.py +1 -1
  45. deterministic_scenario_engine-2.1.1/tests/test_phase_3_10_performance_security_hardening.py +208 -0
  46. deterministic_scenario_engine-2.1.1/tests/test_phase_3_11_public_contract_docs_freeze.py +186 -0
  47. deterministic_scenario_engine-2.1.1/tests/test_phase_3_12_packaging_fresh_install_rc.py +76 -0
  48. deterministic_scenario_engine-2.1.1/tests/test_phase_3_1_evidence_bundle_contract.py +259 -0
  49. deterministic_scenario_engine-2.1.1/tests/test_phase_3_2_safe_bundle_reader_validator.py +286 -0
  50. deterministic_scenario_engine-2.1.1/tests/test_phase_3_3_ordered_export.py +267 -0
  51. deterministic_scenario_engine-2.1.1/tests/test_phase_3_4_evidence_adapter_contract.py +256 -0
  52. deterministic_scenario_engine-2.1.1/tests/test_phase_3_5_compatibility_migration_planner.py +232 -0
  53. deterministic_scenario_engine-2.1.1/tests/test_phase_3_6_lossless_migrations_fixture_export.py +133 -0
  54. deterministic_scenario_engine-2.1.1/tests/test_phase_3_7_cli_interchange_surface.py +256 -0
  55. deterministic_scenario_engine-2.1.1/tests/test_phase_3_8_ecommerce_evidence_workflow.py +132 -0
  56. deterministic_scenario_engine-2.1.1/tests/test_readme_pypi_portability.py +61 -0
  57. deterministic_scenario_engine-2.0.0/README.md +0 -133
  58. deterministic_scenario_engine-2.0.0/src/scenario_engine/reference_packs/__init__.py +0 -1
  59. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/LICENSE +0 -0
  60. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/compatibility.md +0 -0
  61. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/dsl-reference.md +0 -0
  62. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/hypothesis.md +0 -0
  63. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/phase2-architecture.md +0 -0
  64. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/plugins.md +0 -0
  65. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/schemathesis.md +0 -0
  66. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/docs/sqlalchemy.md +0 -0
  67. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/api_scenario.yaml +0 -0
  68. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/cart.yaml +0 -0
  69. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/control_flow.yaml +0 -0
  70. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/ecommerce.yaml +0 -0
  71. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/openapi.yaml +0 -0
  72. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/oracle_fault.yaml +0 -0
  73. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/phase0_1b_cart.yaml +0 -0
  74. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/phase0_3_resources.yaml +0 -0
  75. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/phase0_4_control_flow.yaml +0 -0
  76. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/phase0_5_oracle_fault.yaml +0 -0
  77. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/phase0_6_sqlalchemy_rows.yaml +0 -0
  78. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/phase0_7_ecommerce_plugin.yaml +0 -0
  79. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/phase0_8_api_scenario.yaml +0 -0
  80. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/phase0_8_openapi.yaml +0 -0
  81. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/resources.yaml +0 -0
  82. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/examples/sqlalchemy_rows.yaml +0 -0
  83. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/setup.cfg +0 -0
  84. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/deterministic_scenario_engine.egg-info/dependency_links.txt +0 -0
  85. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/deterministic_scenario_engine.egg-info/entry_points.txt +0 -0
  86. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/deterministic_scenario_engine.egg-info/requires.txt +0 -0
  87. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/deterministic_scenario_engine.egg-info/top_level.txt +0 -0
  88. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/__init__.py +0 -0
  89. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/adapters/__init__.py +0 -0
  90. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/adapters/json_file.py +0 -0
  91. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/adapters/sqlalchemy.py +0 -0
  92. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/address.py +0 -0
  93. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/artifacts.py +0 -0
  94. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/batch/__init__.py +0 -0
  95. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/batch/canonical.py +0 -0
  96. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/batch/errors.py +0 -0
  97. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/batch/models.py +0 -0
  98. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/batch/runtime.py +0 -0
  99. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/canonical.py +0 -0
  100. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/cli/__init__.py +0 -0
  101. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/cli/__main__.py +0 -0
  102. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/clock.py +0 -0
  103. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/composition/__init__.py +0 -0
  104. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/composition/canonical.py +0 -0
  105. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/composition/errors.py +0 -0
  106. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/composition/models.py +0 -0
  107. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/composition/parser.py +0 -0
  108. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/composition/resolver.py +0 -0
  109. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/composition/runtime.py +0 -0
  110. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/context.py +0 -0
  111. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/control_flow.py +0 -0
  112. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/diff/__init__.py +0 -0
  113. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/diff/compare.py +0 -0
  114. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/diff/errors.py +0 -0
  115. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/diff/models.py +0 -0
  116. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/diff/render.py +0 -0
  117. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/diff/serialization.py +0 -0
  118. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/domain_packs/__init__.py +0 -0
  119. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/domain_packs/canonical.py +0 -0
  120. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/domain_packs/errors.py +0 -0
  121. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/domain_packs/models.py +0 -0
  122. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/domain_packs/registry.py +0 -0
  123. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/dsl/__init__.py +0 -0
  124. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/dsl/compiler.py +0 -0
  125. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/dsl/errors.py +0 -0
  126. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/dsl/parser.py +0 -0
  127. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/dsl/runtime.py +0 -0
  128. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/errors.py +0 -0
  129. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/expressions.py +0 -0
  130. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/faults.py +0 -0
  131. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/history.py +0 -0
  132. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/ids.py +0 -0
  133. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/inspection/__init__.py +0 -0
  134. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/inspection/errors.py +0 -0
  135. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/inspection/explain.py +0 -0
  136. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/inspection/inspect.py +0 -0
  137. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/inspection/models.py +0 -0
  138. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/inspection/redaction.py +0 -0
  139. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/inspection/serialization.py +0 -0
  140. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/integrations/__init__.py +0 -0
  141. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/integrations/hypothesis.py +0 -0
  142. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/integrations/schemathesis.py +0 -0
  143. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/invariants.py +0 -0
  144. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/manifest.py +0 -0
  145. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/matrix/__init__.py +0 -0
  146. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/matrix/canonical.py +0 -0
  147. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/matrix/errors.py +0 -0
  148. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/matrix/expand.py +0 -0
  149. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/matrix/filtering.py +0 -0
  150. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/matrix/models.py +0 -0
  151. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/matrix/runtime.py +0 -0
  152. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/oracle.py +0 -0
  153. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/oracle_assertions/__init__.py +0 -0
  154. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/oracle_assertions/errors.py +0 -0
  155. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/oracle_assertions/evaluate.py +0 -0
  156. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/oracle_assertions/models.py +0 -0
  157. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/oracle_assertions/serialization.py +0 -0
  158. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/plugins.py +0 -0
  159. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/pytest_plugin.py +0 -0
  160. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/reference_packs/ecommerce.py +0 -0
  161. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/resources.py +0 -0
  162. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/result.py +0 -0
  163. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/rng.py +0 -0
  164. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/runner.py +0 -0
  165. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/state.py +0 -0
  166. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/suite/__init__.py +0 -0
  167. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/suite/errors.py +0 -0
  168. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/suite/models.py +0 -0
  169. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/suite/read.py +0 -0
  170. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/suite/serialization.py +0 -0
  171. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/validation.py +0 -0
  172. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/src/scenario_engine/values.py +0 -0
  173. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_1a_semantic_kernel.py +0 -0
  174. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_1b_linear_dsl.py +0 -0
  175. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_1c_integrated_phase0_1.py +0 -0
  176. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_1c_r1_missing_sentinel_repair.py +0 -0
  177. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_2a_reproducible_results.py +0 -0
  178. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_2b_json_pytest_integration.py +0 -0
  179. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_3_resources_constraints.py +0 -0
  180. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_4_control_flow.py +0 -0
  181. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_5_oracle_faults.py +0 -0
  182. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_6_sqlalchemy_materializer.py +0 -0
  183. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_7_plugins_ecommerce.py +0 -0
  184. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_0_8_hypothesis_schemathesis.py +0 -0
  185. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_1_0b_public_api_error_contract.py +0 -0
  186. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_1_0c_dsl_compatibility_contract.py +0 -0
  187. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_1_0d_documentation_examples.py +0 -0
  188. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_11_performance_scale_hardening.py +0 -0
  189. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_1_models_serialization.py +0 -0
  190. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_6_structured_semantic_diff.py +0 -0
  191. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_8_domain_pack_foundation.py +0 -0
  192. {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.1}/tests/test_phase_2_9_oracle_assertions.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,8 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deterministic-scenario-engine
3
- Version: 2.0.0
3
+ Version: 2.1.1
4
4
  Summary: Reproducible, state-consistent business scenarios with deterministic ground truth
5
5
  License-Expression: Apache-2.0
6
+ Project-URL: Homepage, https://github.com/imshahinul/deterministic-scenario-engine
7
+ Project-URL: Documentation, https://github.com/imshahinul/deterministic-scenario-engine/tree/main/docs
8
+ Project-URL: Source, https://github.com/imshahinul/deterministic-scenario-engine
9
+ Project-URL: Issues, https://github.com/imshahinul/deterministic-scenario-engine/issues
10
+ Project-URL: Release Notes, https://github.com/imshahinul/deterministic-scenario-engine/releases
6
11
  Keywords: deterministic,scenario,testing,fixtures,replay
7
12
  Classifier: Development Status :: 5 - Production/Stable
8
13
  Classifier: Intended Audience :: Developers
@@ -35,10 +40,10 @@ Dynamic: license-file
35
40
 
36
41
  Deterministic Scenario Engine (DSE) creates reproducible, state-consistent
37
42
  business histories and deterministic scenario suites with ground truth for
38
- testing. The Phase 2 contract is frozen in this source tree as an unpublished
39
- 2.0.0 release candidate; no PyPI or GitHub release has occurred yet. Its
40
- distribution version is 2.0.0 while its deterministic compatibility version
41
- remains `ENGINE_VERSION == "1.0.0"` and its DSL version remains integer 1.
43
+ testing. The source-tree distribution version is 2.1.1. Distribution release
44
+ identity and deterministic compatibility identity are separate:
45
+ `ENGINE_VERSION` remains 1.0.0 and DSL version remains 1. For authoritative
46
+ public-release availability and history, see PyPI and GitHub Releases.
42
47
 
43
48
  ## Why it exists
44
49
 
@@ -66,14 +71,18 @@ make expected behavior explicit.
66
71
  - ordered Cartesian matrices with stable case IDs and original indexes
67
72
  - immutable ordered batch plans and worker-independent results
68
73
  - structured, redacted inspect/explain evidence and typed RFC 6901 semantic diff
69
- - nine-command `scenario` CLI for local and CI workflows
74
+ - twelve-command `scenario` CLI for local and CI workflows, including bounded
75
+ local evidence export, verification, and lossless migration
70
76
  - explicit immutable Domain Pack registries and pure Oracle Assertions
77
+ - canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
78
+ explicit adapters, closed lossless migrations, and fixture-directory export
71
79
 
72
80
  Core execution does not require a database, network service, plugin, or property
73
- testing framework. See [security assumptions and non-goals](docs/security-and-non-goals.md).
74
- Phase 2 adds no hidden discovery, network, randomness, wall-clock, or ambient
75
- environment semantics. Its public imports, CLI contract, bounds, compatibility
76
- posture, and adoption guidance are frozen in the [Phase 2 public contract](docs/phase2-public-contract.md).
81
+ testing framework. See [security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md).
82
+ Neither Phase 2 nor Phase 3 adds hidden discovery, network, randomness,
83
+ wall-clock, or ambient environment semantics. The historical Phase 2 contract
84
+ is frozen in the [Phase 2 public contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase2-public-contract.md); the
85
+ additive evidence surface is frozen in the [Phase 3 public contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase3-public-contract.md).
77
86
 
78
87
  ## Installation
79
88
 
@@ -93,13 +102,13 @@ Install only the named optional integrations you need:
93
102
  /tmp/scenario-engine-docs-venv/bin/python -m pip install '.[schemathesis]'
94
103
  ```
95
104
 
96
- The release-candidate distribution is `deterministic-scenario-engine` 2.0.0. Install the package
97
- with `pip install deterministic-scenario-engine`, or select an optional integration
98
- with a command such as `pip install 'deterministic-scenario-engine[pytest]'`.
105
+ Install the package with `pip install deterministic-scenario-engine`, or select
106
+ an optional integration with a command such as
107
+ `pip install 'deterministic-scenario-engine[pytest]'`.
99
108
 
100
109
  ## Minimal quickstart
101
110
 
102
- The public [cart scenario](examples/cart.yaml) is an executable DSL 1 document.
111
+ The public [cart scenario](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/examples/cart.yaml) is an executable DSL 1 document.
103
112
  Run it from the repository root:
104
113
 
105
114
  ```python
@@ -134,31 +143,31 @@ normalized result contains the same data under its `state` field.
134
143
  Generation derives from semantic `ExecutionAddress` values, not consumption of
135
144
  a mutable global random stream. Exact replay requires the same canonical
136
145
  scenario, explicit inputs, algorithms/plugins, and recorded execution context.
137
- Unsupported cross-version replay fails explicitly. See the [determinism model](docs/determinism.md),
138
- [reproducibility guide](docs/reproducibility.md), and normative
139
- [compatibility contract](docs/compatibility.md).
146
+ Unsupported cross-version replay fails explicitly. See the [determinism model](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/determinism.md),
147
+ [reproducibility guide](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/reproducibility.md), and normative
148
+ [compatibility contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/compatibility.md).
140
149
 
141
150
  ## Documentation
142
151
 
143
- - [Quickstart](docs/quickstart.md)
144
- - [DSL 1 reference](docs/dsl-reference.md)
145
- - [Determinism model](docs/determinism.md)
146
- - [Reproducibility and replay](docs/reproducibility.md)
147
- - [Testing, faults, and oracle](docs/testing-oracle.md)
148
- - [Plugins](docs/plugins.md)
149
- - [SQLAlchemy adapter](docs/sqlalchemy.md)
150
- - [Hypothesis integration](docs/hypothesis.md)
151
- - [Schemathesis integration](docs/schemathesis.md)
152
- - [Public Python API](docs/api.md)
153
- - [Security assumptions and non-goals](docs/security-and-non-goals.md)
154
- - [Compatibility contract](docs/compatibility.md)
155
- - [Phase 2 public contract, CLI, and hard bounds](docs/phase2-public-contract.md)
152
+ - [Quickstart](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/quickstart.md)
153
+ - [DSL 1 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl-reference.md)
154
+ - [Determinism model](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/determinism.md)
155
+ - [Reproducibility and replay](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/reproducibility.md)
156
+ - [Testing, faults, and oracle](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/testing-oracle.md)
157
+ - [Plugins](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/plugins.md)
158
+ - [SQLAlchemy adapter](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/sqlalchemy.md)
159
+ - [Hypothesis integration](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/hypothesis.md)
160
+ - [Schemathesis integration](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/schemathesis.md)
161
+ - [Public Python API](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/api.md)
162
+ - [Security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md)
163
+ - [Compatibility contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/compatibility.md)
164
+ - [Phase 2 public contract, CLI, and hard bounds](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase2-public-contract.md)
165
+ - [Phase 3 public contract and evidence interchange](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase3-public-contract.md)
156
166
 
157
167
  ## Status
158
168
 
159
169
  Distribution release identity and deterministic engine compatibility are
160
- separate contracts: this unpublished candidate has distribution version 2.0.0,
161
- but generated core manifests retain `ENGINE_VERSION` 1.0.0 and DSL 1. Phase 2
162
- suite, composition, matrix, inspection, diff, Domain Pack, and Oracle Assertion
163
- contracts keep their own explicit schema versions. No 2.0.0 tag or publication
164
- has occurred. The project is licensed under Apache-2.0.
170
+ separate contracts. This source tree reports distribution version 2.1.1;
171
+ generated core manifests retain `ENGINE_VERSION` 1.0.0 and DSL 1. PyPI and
172
+ GitHub Releases are the authoritative sources for public-release availability
173
+ and history. The project is licensed under Apache-2.0.
@@ -0,0 +1,137 @@
1
+ # Deterministic Scenario Engine
2
+
3
+ **Generate test scenarios, not just test records.**
4
+
5
+ Deterministic Scenario Engine (DSE) creates reproducible, state-consistent
6
+ business histories and deterministic scenario suites with ground truth for
7
+ testing. The source-tree distribution version is 2.1.1. 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.
11
+
12
+ ## Why it exists
13
+
14
+ Fake-data libraries and random record generators produce values; fixtures often
15
+ describe isolated records. Scenario Engine executes histories: each committed
16
+ step sees a consistent state, produces traceable state changes and artifacts,
17
+ and advances an explicit logical clock. The same scenario and execution context
18
+ can be replayed byte-for-byte, while invariants, controlled faults, and an oracle
19
+ make expected behavior explicit.
20
+
21
+ ## Core capabilities
22
+
23
+ - DSL 1 parsing, compilation, and deterministic execution
24
+ - addressed randomness and logical IDs that do not depend on a shared stream
25
+ - current state plus append-only committed history and artifacts
26
+ - whole-step atomicity
27
+ - explicit external inputs, resource DAG resolution, validators, and constraints
28
+ - subflows, ordered branches, and bounded repeat
29
+ - invariants, deterministic fault injection, provenance, and oracle evaluation
30
+ - canonical result bytes and a `ReproducibilityManifest` for exact replay
31
+ - an explicit, versioned plugin boundary and a reference ecommerce plugin pack
32
+ - a JSON-file adapter
33
+ - optional pytest, SQLAlchemy Core, Hypothesis, and Schemathesis integrations
34
+ - secure, explicit local-file composition with namespaced modules
35
+ - ordered Cartesian matrices with stable case IDs and original indexes
36
+ - immutable ordered batch plans and worker-independent results
37
+ - structured, redacted inspect/explain evidence and typed RFC 6901 semantic diff
38
+ - twelve-command `scenario` CLI for local and CI workflows, including bounded
39
+ local evidence export, verification, and lossless migration
40
+ - explicit immutable Domain Pack registries and pure Oracle Assertions
41
+ - canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
42
+ explicit adapters, closed lossless migrations, and fixture-directory export
43
+
44
+ Core execution does not require a database, network service, plugin, or property
45
+ testing framework. See [security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md).
46
+ Neither Phase 2 nor Phase 3 adds hidden discovery, network, randomness,
47
+ wall-clock, or ambient environment semantics. The historical Phase 2 contract
48
+ is frozen in the [Phase 2 public contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase2-public-contract.md); the
49
+ additive evidence surface is frozen in the [Phase 3 public contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase3-public-contract.md).
50
+
51
+ ## Installation
52
+
53
+ From a source checkout, use a virtual environment and install the checkout:
54
+
55
+ ```console
56
+ python3 -m venv /tmp/scenario-engine-docs-venv
57
+ /tmp/scenario-engine-docs-venv/bin/python -m pip install .
58
+ ```
59
+
60
+ Install only the named optional integrations you need:
61
+
62
+ ```console
63
+ /tmp/scenario-engine-docs-venv/bin/python -m pip install '.[pytest]'
64
+ /tmp/scenario-engine-docs-venv/bin/python -m pip install '.[sqlalchemy]'
65
+ /tmp/scenario-engine-docs-venv/bin/python -m pip install '.[hypothesis]'
66
+ /tmp/scenario-engine-docs-venv/bin/python -m pip install '.[schemathesis]'
67
+ ```
68
+
69
+ Install the package with `pip install deterministic-scenario-engine`, or select
70
+ an optional integration with a command such as
71
+ `pip install 'deterministic-scenario-engine[pytest]'`.
72
+
73
+ ## Minimal quickstart
74
+
75
+ The public [cart scenario](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/examples/cart.yaml) is an executable DSL 1 document.
76
+ Run it from the repository root:
77
+
78
+ ```python
79
+ from pathlib import Path
80
+
81
+ from scenario_engine import (
82
+ compile_document,
83
+ parse_yaml,
84
+ replay_scenario,
85
+ run_scenario,
86
+ )
87
+
88
+ yaml_text = Path("examples/cart.yaml").read_text(encoding="utf-8")
89
+ document = parse_yaml(yaml_text)
90
+ scenario = compile_document(document)
91
+ result = run_scenario(scenario, root_seed="quickstart", run_index=0)
92
+
93
+ print(result.final_state["checkout_complete"])
94
+ print(result.trace())
95
+ stable_bytes = result.to_json_bytes()
96
+ manifest = result.manifest
97
+
98
+ replayed = replay_scenario(yaml_text, manifest)
99
+ assert replayed.to_json_bytes() == stable_bytes
100
+ ```
101
+
102
+ `ScenarioResult.final_state` is the supported state-reading property; the stable
103
+ normalized result contains the same data under its `state` field.
104
+
105
+ ## Determinism contract
106
+
107
+ Generation derives from semantic `ExecutionAddress` values, not consumption of
108
+ a mutable global random stream. Exact replay requires the same canonical
109
+ scenario, explicit inputs, algorithms/plugins, and recorded execution context.
110
+ Unsupported cross-version replay fails explicitly. See the [determinism model](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/determinism.md),
111
+ [reproducibility guide](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/reproducibility.md), and normative
112
+ [compatibility contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/compatibility.md).
113
+
114
+ ## Documentation
115
+
116
+ - [Quickstart](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/quickstart.md)
117
+ - [DSL 1 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl-reference.md)
118
+ - [Determinism model](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/determinism.md)
119
+ - [Reproducibility and replay](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/reproducibility.md)
120
+ - [Testing, faults, and oracle](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/testing-oracle.md)
121
+ - [Plugins](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/plugins.md)
122
+ - [SQLAlchemy adapter](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/sqlalchemy.md)
123
+ - [Hypothesis integration](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/hypothesis.md)
124
+ - [Schemathesis integration](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/schemathesis.md)
125
+ - [Public Python API](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/api.md)
126
+ - [Security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md)
127
+ - [Compatibility contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/compatibility.md)
128
+ - [Phase 2 public contract, CLI, and hard bounds](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase2-public-contract.md)
129
+ - [Phase 3 public contract and evidence interchange](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase3-public-contract.md)
130
+
131
+ ## Status
132
+
133
+ Distribution release identity and deterministic engine compatibility are
134
+ separate contracts. This source tree reports distribution version 2.1.1;
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.
@@ -1,15 +1,15 @@
1
1
  # Public Python API
2
2
 
3
3
  This is the canonical top-level Phase 1.0 contract, preserved unchanged by the
4
- Phase 2 freeze. Importable implementation symbols not listed here are not
5
- implicitly promoted to top-level public API. Specialized Phase 2 APIs are
6
- public through the explicit subpackages documented below, not package-root
7
- convenience exports.
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.
8
8
 
9
9
  ## Constants and value objects
10
10
 
11
11
  - `ENGINE_VERSION` — engine compatibility version recorded in manifests; for
12
- 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.
13
13
  - `MISSING` — singleton semantic missing value, distinct from null.
14
14
  - `LogicalID(value: str)` — deterministic logical identifier value; users
15
15
  normally receive it from `$id` generation.
@@ -185,3 +185,39 @@ paths are stable while helpers outside `__all__` are intentionally internal.
185
185
 
186
186
  The schema/version constants and all exact export manifests are executable
187
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).
@@ -81,5 +81,17 @@ evidence. Worker scheduling, filesystem enumeration, host paths, locale defaults
81
81
  environment variables, network responses, and process history are not semantic
82
82
  coordinates.
83
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
+
84
95
  See [reproducibility](reproducibility.md) for recorded context and
85
- [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.
@@ -1,13 +1,16 @@
1
1
  # Phase 2 Public Contract Freeze
2
2
 
3
- This document defines the upcoming Phase 2 / 2.0 public contract implemented in
4
- this source tree. It is an unpublished 2.0.0 release candidate; no PyPI or
5
- GitHub release has occurred yet. Distribution metadata is 2.0.0, while the
3
+ This document defines the historical Phase 2 / 2.0 public contract. Version
4
+ 2.0.0 has since been published to PyPI and as a GitHub Release. Distribution
5
+ metadata remains 2.0.0 in the current source tree, while the
6
6
  deterministic core compatibility token recorded in manifests remains
7
7
  `ENGINE_VERSION == "1.0.0"`. DSL version remains integer 1. Distribution release
8
8
  identity and engine compatibility are distinct concepts. Composition, matrix,
9
9
  suite, inspection, diff, Domain Pack, and Oracle Assertion contracts retain
10
10
  their independent schema versions and do not reinterpret valid v1 documents.
11
+ The additive, currently unreleased Phase 3 evidence contract is documented
12
+ separately in the [Phase 3 public contract](phase3-public-contract.md); its
13
+ eventual distribution target is 2.1.0.
11
14
 
12
15
  ## Supported product surface
13
16