deterministic-scenario-engine 2.2.0__tar.gz → 3.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/MANIFEST.in +1 -0
- {deterministic_scenario_engine-2.2.0/src/deterministic_scenario_engine.egg-info → deterministic_scenario_engine-3.0.0}/PKG-INFO +20 -14
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/README.md +19 -13
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/api.md +42 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/compatibility.md +21 -6
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/dsl-reference.md +4 -0
- deterministic_scenario_engine-3.0.0/docs/dsl2-reference.md +40 -0
- deterministic_scenario_engine-3.0.0/docs/phase5-architecture.md +1149 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/quickstart.md +77 -1
- deterministic_scenario_engine-3.0.0/docs/release-notes-3.0.0.md +45 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/release-process.md +16 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/pyproject.toml +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0/src/deterministic_scenario_engine.egg-info}/PKG-INFO +20 -14
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/deterministic_scenario_engine.egg-info/SOURCES.txt +43 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/__init__.py +2 -3
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/_version.py +3 -2
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/address.py +16 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/canonical.py +23 -3
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/cli/main.py +259 -22
- deterministic_scenario_engine-3.0.0/src/scenario_engine/compatibility.py +50 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/compatibility_fixtures.py +223 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/artifacts/manifest-v2.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/artifacts/result-v2.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/artifacts/schedule-v1.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/artifacts/suite-run-v2.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/compatibility-fixtures.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/references/legacy-result1.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/corrupt-result-hash.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/duplicate-key.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/incomplete-coordinates.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/invalid-type.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/missing-field.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/mixed-contract-tuple.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/noncanonical-address.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/unknown-contract.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/unknown-engine.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/unknown-field.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-input-hashes.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-root-seed.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-scenario-hash.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-schedule-hash.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-schedule-seed.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/rejections/wrong-scheduler-contract.json +1 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/data/compatibility/phase5_10/scenarios/scenario-v2.yaml +15 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/definition_diff.py +59 -6
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/diagnostics.py +7 -3
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/dsl/__init__.py +6 -5
- deterministic_scenario_engine-3.0.0/src/scenario_engine/dsl/actor_runtime.py +433 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/dsl/compiler.py +17 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/dsl/errors.py +16 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/dsl/models.py +39 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/dsl/parser.py +119 -6
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/dsl/runtime.py +12 -4
- deterministic_scenario_engine-3.0.0/src/scenario_engine/engine2.py +618 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/compatibility.py +2 -2
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/impact.py +81 -16
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/inspection/__init__.py +3 -1
- deterministic_scenario_engine-3.0.0/src/scenario_engine/inspection/explain.py +142 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/inspection/inspect.py +94 -3
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/inspection/models.py +4 -2
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/manifest.py +4 -1
- deterministic_scenario_engine-3.0.0/src/scenario_engine/schedule.py +415 -0
- deterministic_scenario_engine-3.0.0/src/scenario_engine/scheduler.py +175 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/trace_view.py +159 -6
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_2a_reproducible_results.py +3 -2
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_1_0d_documentation_examples.py +2 -2
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_1_0e_packaging_release_candidate.py +2 -2
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_10_workflow_demonstrators.py +2 -2
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_12_public_contract_docs_freeze.py +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_13_packaging_fresh_install_rc.py +4 -3
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_1_v1_read_contract.py +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_2_composition.py +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_3_matrix.py +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_4_batch.py +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_5_inspect_explain.py +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_7_cli_product_surface.py +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_11_public_contract_docs_freeze.py +1 -1
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_1_evidence_bundle_contract.py +2 -2
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_10_public_api_cli_compatibility_fixtures.py +139 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_11_performance_security_contract_freeze.py +148 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_12a_r2_quickstart_installed_consumer.py +170 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_12b_1_version_promotion.py +107 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_1_dsl2_actor_lane_foundation.py +133 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_2_scheduler_kernel.py +151 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_3_actor_execution_shared_state.py +170 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_4_schedule_identity_replay.py +217 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_5_result2_engine2_compatibility.py +217 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_6_public_cli_python_execution.py +122 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_7_actor_aware_analysis.py +215 -0
- deterministic_scenario_engine-3.0.0/tests/test_phase_5_9_actor_aware_static_trace_viewer.py +156 -0
- deterministic_scenario_engine-2.2.0/src/scenario_engine/compatibility_fixtures.py +0 -94
- deterministic_scenario_engine-2.2.0/src/scenario_engine/inspection/explain.py +0 -79
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/LICENSE +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/determinism.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/hypothesis.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/phase2-architecture.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/phase2-public-contract.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/phase3-architecture.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/phase3-public-contract.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/phase4-architecture.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/plugins.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/product-evidence-gate.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/release-notes-2.2.0.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/reproducibility.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/schemathesis.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/security-and-non-goals.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/sqlalchemy.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/testing-oracle.md +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/api_scenario.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/cart.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/control_flow.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/ecommerce.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/openapi.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/oracle_fault.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase0_1b_cart.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase0_3_resources.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase0_4_control_flow.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase0_5_oracle_fault.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase0_6_sqlalchemy_rows.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase0_7_ecommerce_plugin.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase0_8_api_scenario.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase0_8_openapi.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/phase3_ecommerce_evidence.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/resources.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/examples/sqlalchemy_rows.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/setup.cfg +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/setup.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/deterministic_scenario_engine.egg-info/dependency_links.txt +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/deterministic_scenario_engine.egg-info/entry_points.txt +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/deterministic_scenario_engine.egg-info/requires.txt +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/deterministic_scenario_engine.egg-info/top_level.txt +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/adapters/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/adapters/json_file.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/adapters/sqlalchemy.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/artifacts.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/batch/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/batch/canonical.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/batch/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/batch/models.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/batch/runtime.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/cli/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/cli/__main__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/clock.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/composition/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/composition/canonical.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/composition/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/composition/models.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/composition/parser.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/composition/resolver.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/composition/runtime.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/context.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/control_flow.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/artifacts/current-2.1.2-suite-run-v1.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/artifacts/historical-1.0.0-result-v1.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/artifacts/historical-2.0.0-suite-run-v1.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-incomplete-suite-run-v1.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-scenario-mismatch-suite-run-v1.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-unknown-engine-suite-run-v1.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-unknown-manifest-suite-run-v9.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/artifacts/synthetic-unsupported-contract.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/compatibility-fixtures.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/inputs/current-2.1.2-suite-run-v1.inputs.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/inputs/historical-2.0.0-suite-run-v1.inputs.json +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/scenarios/compatibility_case.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/data/compatibility/phase4_11/scenarios/mismatch_case.yaml +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/diff/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/diff/compare.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/diff/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/diff/models.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/diff/render.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/diff/serialization.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/domain_packs/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/domain_packs/canonical.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/domain_packs/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/domain_packs/models.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/domain_packs/registry.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/adapter.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/canonical.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/export.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/fixture.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/migration.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/models.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/evidence/read.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/expressions.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/faults.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/history.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/ids.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/inspection/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/inspection/redaction.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/inspection/serialization.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/integrations/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/integrations/hypothesis.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/integrations/schemathesis.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/invariants.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/matrix/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/matrix/canonical.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/matrix/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/matrix/expand.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/matrix/filtering.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/matrix/models.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/matrix/runtime.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/oracle.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/oracle_assertions/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/oracle_assertions/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/oracle_assertions/evaluate.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/oracle_assertions/models.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/oracle_assertions/serialization.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/plugins.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/provenance.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/pytest_plugin.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/reference_packs/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/reference_packs/ecommerce.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/reference_packs/ecommerce_evidence.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/resources.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/result.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/rng.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/runner.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/scaffolding.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/state.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/suite/__init__.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/suite/errors.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/suite/models.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/suite/publication.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/suite/read.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/suite/serialization.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/validation.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/src/scenario_engine/values.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_1a_semantic_kernel.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_1b_linear_dsl.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_1c_integrated_phase0_1.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_1c_r1_missing_sentinel_repair.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_2b_json_pytest_integration.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_3_resources_constraints.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_4_control_flow.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_5_oracle_faults.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_6_sqlalchemy_materializer.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_7_plugins_ecommerce.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_0_8_hypothesis_schemathesis.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_1_0b_public_api_error_contract.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_1_0c_dsl_compatibility_contract.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_11_performance_scale_hardening.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_1_models_serialization.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_6_structured_semantic_diff.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_8_domain_pack_foundation.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_2_9_oracle_assertions.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_10_performance_security_hardening.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_12_packaging_fresh_install_rc.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_2_safe_bundle_reader_validator.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_3_ordered_export.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_4_evidence_adapter_contract.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_5_compatibility_migration_planner.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_6_lossless_migrations_fixture_export.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_7_cli_interchange_surface.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_3_8_ecommerce_evidence_workflow.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_10_canonical_workflow_help.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_11_cross_version_fixtures.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_12_hardening.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_12r2_public_fixture_packaging.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_12r3_consumer_secret_redaction.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_1_cli_replay_workflow.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_2_replay_compatibility_diagnostics.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_3_filesystem_trust_boundary.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_4_actionable_human_diagnostics.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_5_machine_readable_error_envelope.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_6_author_time_scaffolding.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_7_scenario_definition_structural_diff.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_8_conservative_impact_analysis.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_phase_4_9_static_trace_viewer.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/tests/test_readme_pypi_portability.py +0 -0
- {deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/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:
|
|
3
|
+
Version: 3.0.0
|
|
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,11 @@ 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.
|
|
45
|
-
|
|
46
|
-
`ENGINE_VERSION`
|
|
47
|
-
|
|
44
|
+
testing. This source tree is the prepublication distribution 3.0.0 candidate.
|
|
45
|
+
Distribution and execution compatibility identities are separate: public
|
|
46
|
+
`ENGINE_VERSION` is 2.0.0, while the preserved DSL 1 path records Engine 1.0.0.
|
|
47
|
+
This statement does not assert package-index publication; PyPI and GitHub
|
|
48
|
+
Releases remain authoritative for public-release availability and history.
|
|
48
49
|
|
|
49
50
|
## Why it exists
|
|
50
51
|
|
|
@@ -58,6 +59,9 @@ make expected behavior explicit.
|
|
|
58
59
|
## Core capabilities
|
|
59
60
|
|
|
60
61
|
- DSL 1 parsing, compilation, and deterministic execution
|
|
62
|
+
- DSL 2 logical-actor execution with an explicit independent schedule seed
|
|
63
|
+
- canonical Result/2, Manifest/2, and Schedule/1 evidence with exact replay
|
|
64
|
+
- actor-aware inspect/explain and deterministic offline trace viewing
|
|
61
65
|
- addressed randomness and logical IDs that do not depend on a shared stream
|
|
62
66
|
- current state plus append-only committed history and artifacts
|
|
63
67
|
- whole-step atomicity
|
|
@@ -80,11 +84,9 @@ make expected behavior explicit.
|
|
|
80
84
|
- canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
|
|
81
85
|
explicit adapters, closed lossless migrations, and fixture-directory export
|
|
82
86
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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).
|
|
87
|
+
The 3.0.0 candidate adds Engine 2.0.0 and DSL 2 while preserving Engine 1/DSL 1
|
|
88
|
+
behavior and immutable evidence. See the
|
|
89
|
+
[3.0.0 candidate notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.0.md).
|
|
88
90
|
|
|
89
91
|
Core execution does not require a database, network service, plugin, or property
|
|
90
92
|
testing framework. See [security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md).
|
|
@@ -151,6 +153,7 @@ self-contained offline HTML file from supported result/evidence.
|
|
|
151
153
|
|
|
152
154
|
- [Quickstart](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/quickstart.md)
|
|
153
155
|
- [DSL 1 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl-reference.md)
|
|
156
|
+
- [DSL 2 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl2-reference.md)
|
|
154
157
|
- [Determinism model](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/determinism.md)
|
|
155
158
|
- [Reproducibility and replay](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/reproducibility.md)
|
|
156
159
|
- [Testing, faults, and oracle](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/testing-oracle.md)
|
|
@@ -162,13 +165,16 @@ self-contained offline HTML file from supported result/evidence.
|
|
|
162
165
|
- [Security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md)
|
|
163
166
|
- [Compatibility contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/compatibility.md)
|
|
164
167
|
- [2.2.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-2.2.0.md)
|
|
168
|
+
- [3.0.0 candidate notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.0.md)
|
|
165
169
|
- [Phase 2 public contract, CLI, and hard bounds](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase2-public-contract.md)
|
|
166
170
|
- [Phase 3 public contract and evidence interchange](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase3-public-contract.md)
|
|
167
171
|
|
|
168
172
|
## Status
|
|
169
173
|
|
|
170
174
|
Distribution release identity and deterministic engine compatibility are
|
|
171
|
-
separate contracts. This source tree reports distribution
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
+
separate contracts. This prepublication source tree reports distribution
|
|
176
|
+
version 3.0.0 and public Engine 2.0.0. Engine 1 manifests remain exactly 1.0.0
|
|
177
|
+
with integer DSL 1; Engine 2 manifests use 2.0.0 with integer DSL 2. Supported
|
|
178
|
+
Python versions are 3.11–3.14. Suite Run/2 is reader/schema support only; Engine
|
|
179
|
+
2 suite orchestration, cross-major promotion, remote URI input, and implicit
|
|
180
|
+
schedule-seed derivation are unsupported. The project is Apache-2.0 licensed.
|
|
@@ -4,10 +4,11 @@
|
|
|
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.
|
|
8
|
-
|
|
9
|
-
`ENGINE_VERSION`
|
|
10
|
-
|
|
7
|
+
testing. This source tree is the prepublication distribution 3.0.0 candidate.
|
|
8
|
+
Distribution and execution compatibility identities are separate: public
|
|
9
|
+
`ENGINE_VERSION` is 2.0.0, while the preserved DSL 1 path records Engine 1.0.0.
|
|
10
|
+
This statement does not assert package-index publication; PyPI and GitHub
|
|
11
|
+
Releases remain authoritative for public-release availability and history.
|
|
11
12
|
|
|
12
13
|
## Why it exists
|
|
13
14
|
|
|
@@ -21,6 +22,9 @@ make expected behavior explicit.
|
|
|
21
22
|
## Core capabilities
|
|
22
23
|
|
|
23
24
|
- DSL 1 parsing, compilation, and deterministic execution
|
|
25
|
+
- DSL 2 logical-actor execution with an explicit independent schedule seed
|
|
26
|
+
- canonical Result/2, Manifest/2, and Schedule/1 evidence with exact replay
|
|
27
|
+
- actor-aware inspect/explain and deterministic offline trace viewing
|
|
24
28
|
- addressed randomness and logical IDs that do not depend on a shared stream
|
|
25
29
|
- current state plus append-only committed history and artifacts
|
|
26
30
|
- whole-step atomicity
|
|
@@ -43,11 +47,9 @@ make expected behavior explicit.
|
|
|
43
47
|
- canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
|
|
44
48
|
explicit adapters, closed lossless migrations, and fixture-directory export
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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).
|
|
50
|
+
The 3.0.0 candidate adds Engine 2.0.0 and DSL 2 while preserving Engine 1/DSL 1
|
|
51
|
+
behavior and immutable evidence. See the
|
|
52
|
+
[3.0.0 candidate notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.0.md).
|
|
51
53
|
|
|
52
54
|
Core execution does not require a database, network service, plugin, or property
|
|
53
55
|
testing framework. See [security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md).
|
|
@@ -114,6 +116,7 @@ self-contained offline HTML file from supported result/evidence.
|
|
|
114
116
|
|
|
115
117
|
- [Quickstart](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/quickstart.md)
|
|
116
118
|
- [DSL 1 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl-reference.md)
|
|
119
|
+
- [DSL 2 reference](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/dsl2-reference.md)
|
|
117
120
|
- [Determinism model](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/determinism.md)
|
|
118
121
|
- [Reproducibility and replay](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/reproducibility.md)
|
|
119
122
|
- [Testing, faults, and oracle](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/testing-oracle.md)
|
|
@@ -125,13 +128,16 @@ self-contained offline HTML file from supported result/evidence.
|
|
|
125
128
|
- [Security assumptions and non-goals](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/security-and-non-goals.md)
|
|
126
129
|
- [Compatibility contract](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/compatibility.md)
|
|
127
130
|
- [2.2.0 release notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-2.2.0.md)
|
|
131
|
+
- [3.0.0 candidate notes](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/release-notes-3.0.0.md)
|
|
128
132
|
- [Phase 2 public contract, CLI, and hard bounds](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase2-public-contract.md)
|
|
129
133
|
- [Phase 3 public contract and evidence interchange](https://github.com/imshahinul/deterministic-scenario-engine/blob/main/docs/phase3-public-contract.md)
|
|
130
134
|
|
|
131
135
|
## Status
|
|
132
136
|
|
|
133
137
|
Distribution release identity and deterministic engine compatibility are
|
|
134
|
-
separate contracts. This source tree reports distribution
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
separate contracts. This prepublication source tree reports distribution
|
|
139
|
+
version 3.0.0 and public Engine 2.0.0. Engine 1 manifests remain exactly 1.0.0
|
|
140
|
+
with integer DSL 1; Engine 2 manifests use 2.0.0 with integer DSL 2. Supported
|
|
141
|
+
Python versions are 3.11–3.14. Suite Run/2 is reader/schema support only; Engine
|
|
142
|
+
2 suite orchestration, cross-major promotion, remote URI input, and implicit
|
|
143
|
+
schedule-seed derivation are unsupported. The project is Apache-2.0 licensed.
|
|
@@ -8,6 +8,11 @@ exports.
|
|
|
8
8
|
|
|
9
9
|
## Constants and value objects
|
|
10
10
|
|
|
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
|
+
|
|
11
16
|
- `ENGINE_VERSION` — engine compatibility version recorded in manifests; for
|
|
12
17
|
current manifests it remains 1.0.0 independently of distribution version.
|
|
13
18
|
- `MISSING` — singleton semantic missing value, distinct from null.
|
|
@@ -58,6 +63,43 @@ checks recorded compatibility before returning a replayed `ScenarioResult`.
|
|
|
58
63
|
`evaluate_scenario()` returns `OracleEvaluation` and optionally raises on an
|
|
59
64
|
oracle mismatch.
|
|
60
65
|
|
|
66
|
+
### Engine 2 explicit public workflow
|
|
67
|
+
|
|
68
|
+
These names are explicitly public from `scenario_engine.engine2` (execution and
|
|
69
|
+
replay) and `scenario_engine.compatibility` (classification). They are not added
|
|
70
|
+
to the compatibility-frozen package root.
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
validate_engine2(yaml_text: str) -> CompiledScenarioV2
|
|
74
|
+
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]
|
|
75
|
+
replay_engine2(result: Engine2Result | bytes | str, schedule: ScheduleArtifact | bytes | str, scenario: CompiledScenarioV2, *, inputs: Mapping[str, Any] | None = None, plugins: PluginRegistry | None = None) -> Engine2Result
|
|
76
|
+
classify_engine_contract(*, dsl_version: int | None, engine_version: str | None, result_contract: str | None, operation: str) -> CompatibilityDecision
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`validate_engine2()` accepts only DSL 2. `execute_engine2()` requires both the
|
|
80
|
+
generation root seed and independent schedule seed and returns immutable,
|
|
81
|
+
canonically serializable Result/2 and Schedule/1 evidence. `replay_engine2()`
|
|
82
|
+
strictly reads supplied evidence when bytes or text are given, independently
|
|
83
|
+
executes every recorded scheduler choice, verifies all coordinates and final
|
|
84
|
+
observations, and returns the verified immutable Result/2. It never reconstructs
|
|
85
|
+
missing schedule evidence. Compatibility classification is explicit and does not
|
|
86
|
+
execute, migrate, or promote evidence. Existing Engine 1 functions are unchanged.
|
|
87
|
+
|
|
88
|
+
`schedule_seed` is a required independent unsigned 64-bit coordinate. It is not
|
|
89
|
+
derived from `root_seed`. Engine 2 writes Result/2, Manifest/2, and Schedule/1;
|
|
90
|
+
exact replay requires the matching result, schedule, scenario, and explicit
|
|
91
|
+
inputs. Actor-aware analysis is exposed through the existing inspection,
|
|
92
|
+
explanation, impact, and offline `scenario_engine.trace_view` surfaces.
|
|
93
|
+
|
|
94
|
+
The immutable Engine 2 evidence access names are also public from their explicit
|
|
95
|
+
modules: `Engine2Manifest`, `Engine2Result`, `ScheduleReference`,
|
|
96
|
+
`read_manifest2()`, `read_result2()`, and their canonical byte functions from
|
|
97
|
+
`scenario_engine.engine2`; and `ScheduleArtifact`, `read_schedule()`, and its
|
|
98
|
+
canonical byte functions from `scenario_engine.schedule`. `read_suite_run2()` is
|
|
99
|
+
schema/reader validation only and does not execute a suite. Errors remain in the
|
|
100
|
+
`Engine2EvidenceError`/`Engine2EvidenceBoundError`/`Engine2ReplayMismatch` and
|
|
101
|
+
`ScheduleError`/`ScheduleBoundError`/`ScheduleReplayMismatch` families.
|
|
102
|
+
|
|
61
103
|
## Canonical scenario functions
|
|
62
104
|
|
|
63
105
|
```python
|
{deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/compatibility.md
RENAMED
|
@@ -1,13 +1,28 @@
|
|
|
1
|
-
# Scenario Engine
|
|
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
|
-
`
|
|
9
|
-
|
|
10
|
-
|
|
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.
|
|
79
|
-
and
|
|
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
|
|
{deterministic_scenario_engine-2.2.0 → deterministic_scenario_engine-3.0.0}/docs/dsl-reference.md
RENAMED
|
@@ -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,40 @@
|
|
|
1
|
+
# DSL 2 logical-actor reference
|
|
2
|
+
|
|
3
|
+
**Status: PREPUBLICATION — DSE distribution 3.0.0 candidate.**
|
|
4
|
+
|
|
5
|
+
DSL 2 is selected only by integer `dsl_version: 2` and executes with Engine
|
|
6
|
+
2.0.0. It preserves DSL 1 expression, deterministic value, resource, plugin,
|
|
7
|
+
clock, and atomic-step foundations while declaring ordered logical actors. Each
|
|
8
|
+
actor has a canonical `scenario:/actor/<id>` address and an ordered `steps`
|
|
9
|
+
sequence. Unknown keys, duplicate identifiers, noncanonical addresses, invalid
|
|
10
|
+
types, and exceeded bounds fail before execution.
|
|
11
|
+
|
|
12
|
+
## Execution and evidence
|
|
13
|
+
|
|
14
|
+
Execution requires two independent coordinates:
|
|
15
|
+
|
|
16
|
+
- `root_seed` controls addressed generation;
|
|
17
|
+
- `schedule_seed` is an explicit unsigned 64-bit integer controlling scheduler
|
|
18
|
+
selection and is never inferred from the root seed.
|
|
19
|
+
|
|
20
|
+
The public workflow is `scenario_engine.engine2.validate_engine2()`,
|
|
21
|
+
`execute_engine2()`, and `replay_engine2()`. It produces canonical
|
|
22
|
+
`scenario.result/2`, embedded `scenario.manifest/2`, and replay-authoritative
|
|
23
|
+
`scenario.schedule/1`. Exact replay rejects missing, altered, mixed-major, or
|
|
24
|
+
incompletely linked evidence.
|
|
25
|
+
|
|
26
|
+
## Analysis and limits
|
|
27
|
+
|
|
28
|
+
Result/2 supports actor-aware inspect/explain, conservative analysis, and the
|
|
29
|
+
offline static trace viewer. Inclusive resource ceilings cover actors, steps,
|
|
30
|
+
scheduler selections, canonical schedule bytes (8 MiB), canonical result bytes
|
|
31
|
+
(32 MiB), nesting depth, and input bytes. Duplicate JSON keys, remote URIs,
|
|
32
|
+
filesystem link traversal, noncanonical semantic addresses, invalid seeds, and
|
|
33
|
+
secret reflection are rejected or redacted.
|
|
34
|
+
|
|
35
|
+
## Unsupported capabilities
|
|
36
|
+
|
|
37
|
+
DSL 1/Engine 2 and DSL 2/Engine 1 execution are unsupported. There is no silent
|
|
38
|
+
migration, package-version inference, schedule-seed derivation, wall-clock or
|
|
39
|
+
network discovery, or Engine 2 suite orchestration. `suite.run/2` is a strict
|
|
40
|
+
schema/reader contract only.
|