deterministic-scenario-engine 2.0.0__tar.gz → 2.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/MANIFEST.in +1 -0
- {deterministic_scenario_engine-2.0.0/src/deterministic_scenario_engine.egg-info → deterministic_scenario_engine-2.1.0}/PKG-INFO +21 -15
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/README.md +20 -14
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/api.md +41 -5
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/determinism.md +13 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/phase2-public-contract.md +6 -3
- deterministic_scenario_engine-2.1.0/docs/phase3-architecture.md +731 -0
- deterministic_scenario_engine-2.1.0/docs/phase3-public-contract.md +298 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/quickstart.md +17 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/reproducibility.md +16 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/security-and-non-goals.md +25 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/testing-oracle.md +6 -0
- deterministic_scenario_engine-2.1.0/examples/phase3_ecommerce_evidence.py +27 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0/src/deterministic_scenario_engine.egg-info}/PKG-INFO +21 -15
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/SOURCES.txt +26 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/_version.py +1 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/cli/main.py +98 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/models.py +4 -4
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/__init__.py +211 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/adapter.py +329 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/canonical.py +71 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/compatibility.py +490 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/errors.py +123 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/export.py +320 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/fixture.py +152 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/migration.py +223 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/models.py +223 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/evidence/read.py +371 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/provenance.py +2 -2
- deterministic_scenario_engine-2.1.0/src/scenario_engine/reference_packs/__init__.py +16 -0
- deterministic_scenario_engine-2.1.0/src/scenario_engine/reference_packs/ecommerce_evidence.py +310 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_1_0e_packaging_release_candidate.py +11 -3
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_10_workflow_demonstrators.py +4 -2
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_12_public_contract_docs_freeze.py +1 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_13_packaging_fresh_install_rc.py +11 -4
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_1_v1_read_contract.py +1 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_2_composition.py +1 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_3_matrix.py +1 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_4_batch.py +1 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_5_inspect_explain.py +1 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_7_cli_product_surface.py +1 -1
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_10_performance_security_hardening.py +208 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_11_public_contract_docs_freeze.py +184 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_12_packaging_fresh_install_rc.py +76 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_1_evidence_bundle_contract.py +259 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_2_safe_bundle_reader_validator.py +286 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_3_ordered_export.py +267 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_4_evidence_adapter_contract.py +256 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_5_compatibility_migration_planner.py +232 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_6_lossless_migrations_fixture_export.py +133 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_7_cli_interchange_surface.py +256 -0
- deterministic_scenario_engine-2.1.0/tests/test_phase_3_8_ecommerce_evidence_workflow.py +132 -0
- deterministic_scenario_engine-2.0.0/src/scenario_engine/reference_packs/__init__.py +0 -1
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/LICENSE +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/compatibility.md +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/dsl-reference.md +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/hypothesis.md +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/phase2-architecture.md +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/plugins.md +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/schemathesis.md +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/sqlalchemy.md +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/api_scenario.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/cart.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/control_flow.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/ecommerce.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/openapi.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/oracle_fault.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_1b_cart.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_3_resources.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_4_control_flow.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_5_oracle_fault.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_6_sqlalchemy_rows.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_7_ecommerce_plugin.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_8_api_scenario.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/phase0_8_openapi.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/resources.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/examples/sqlalchemy_rows.yaml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/pyproject.toml +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/setup.cfg +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/dependency_links.txt +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/entry_points.txt +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/requires.txt +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/deterministic_scenario_engine.egg-info/top_level.txt +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/adapters/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/adapters/json_file.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/adapters/sqlalchemy.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/address.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/artifacts.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/batch/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/batch/canonical.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/batch/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/batch/models.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/batch/runtime.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/canonical.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/cli/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/cli/__main__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/clock.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/composition/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/composition/canonical.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/composition/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/composition/models.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/composition/parser.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/composition/resolver.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/composition/runtime.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/context.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/control_flow.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/diff/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/diff/compare.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/diff/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/diff/models.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/diff/render.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/diff/serialization.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/domain_packs/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/domain_packs/canonical.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/domain_packs/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/domain_packs/models.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/domain_packs/registry.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/compiler.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/parser.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/dsl/runtime.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/expressions.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/faults.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/history.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/ids.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/inspection/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/inspection/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/inspection/explain.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/inspection/inspect.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/inspection/models.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/inspection/redaction.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/inspection/serialization.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/integrations/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/integrations/hypothesis.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/integrations/schemathesis.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/invariants.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/manifest.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/matrix/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/matrix/canonical.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/matrix/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/matrix/expand.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/matrix/filtering.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/matrix/models.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/matrix/runtime.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/oracle.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/oracle_assertions/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/oracle_assertions/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/oracle_assertions/evaluate.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/oracle_assertions/models.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/oracle_assertions/serialization.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/plugins.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/pytest_plugin.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/reference_packs/ecommerce.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/resources.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/result.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/rng.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/runner.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/state.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/suite/__init__.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/suite/errors.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/suite/models.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/suite/read.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/suite/serialization.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/validation.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/src/scenario_engine/values.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_1a_semantic_kernel.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_1b_linear_dsl.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_1c_integrated_phase0_1.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_1c_r1_missing_sentinel_repair.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_2a_reproducible_results.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_2b_json_pytest_integration.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_3_resources_constraints.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_4_control_flow.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_5_oracle_faults.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_6_sqlalchemy_materializer.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_7_plugins_ecommerce.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_0_8_hypothesis_schemathesis.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_1_0b_public_api_error_contract.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_1_0c_dsl_compatibility_contract.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_1_0d_documentation_examples.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_11_performance_scale_hardening.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_1_models_serialization.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_6_structured_semantic_diff.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_8_domain_pack_foundation.py +0 -0
- {deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/tests/test_phase_2_9_oracle_assertions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deterministic-scenario-engine
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Reproducible, state-consistent business scenarios with deterministic ground truth
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Keywords: deterministic,scenario,testing,fixtures,replay
|
|
@@ -35,10 +35,11 @@ Dynamic: license-file
|
|
|
35
35
|
|
|
36
36
|
Deterministic Scenario Engine (DSE) creates reproducible, state-consistent
|
|
37
37
|
business histories and deterministic scenario suites with ground truth for
|
|
38
|
-
testing. The
|
|
39
|
-
|
|
40
|
-
distribution version
|
|
41
|
-
|
|
38
|
+
testing. The published distribution is `deterministic-scenario-engine` 2.0.0.
|
|
39
|
+
Phase 3 evidence-interchange capabilities are implemented on `main` and the
|
|
40
|
+
current source release candidate reports distribution version 2.1.0, while 2.1.0
|
|
41
|
+
is not published. Its deterministic compatibility version remains
|
|
42
|
+
`ENGINE_VERSION == "1.0.0"`, and its DSL version remains integer 1.
|
|
42
43
|
|
|
43
44
|
## Why it exists
|
|
44
45
|
|
|
@@ -66,14 +67,18 @@ make expected behavior explicit.
|
|
|
66
67
|
- ordered Cartesian matrices with stable case IDs and original indexes
|
|
67
68
|
- immutable ordered batch plans and worker-independent results
|
|
68
69
|
- structured, redacted inspect/explain evidence and typed RFC 6901 semantic diff
|
|
69
|
-
-
|
|
70
|
+
- twelve-command `scenario` CLI for local and CI workflows, including bounded
|
|
71
|
+
local evidence export, verification, and lossless migration
|
|
70
72
|
- explicit immutable Domain Pack registries and pure Oracle Assertions
|
|
73
|
+
- canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
|
|
74
|
+
explicit adapters, closed lossless migrations, and fixture-directory export
|
|
71
75
|
|
|
72
76
|
Core execution does not require a database, network service, plugin, or property
|
|
73
77
|
testing framework. See [security assumptions and non-goals](docs/security-and-non-goals.md).
|
|
74
|
-
Phase 2 adds
|
|
75
|
-
environment semantics.
|
|
76
|
-
|
|
78
|
+
Neither Phase 2 nor Phase 3 adds hidden discovery, network, randomness,
|
|
79
|
+
wall-clock, or ambient environment semantics. The historical Phase 2 contract
|
|
80
|
+
is frozen in the [Phase 2 public contract](docs/phase2-public-contract.md); the
|
|
81
|
+
additive evidence surface is frozen in the [Phase 3 public contract](docs/phase3-public-contract.md).
|
|
77
82
|
|
|
78
83
|
## Installation
|
|
79
84
|
|
|
@@ -93,7 +98,7 @@ Install only the named optional integrations you need:
|
|
|
93
98
|
/tmp/scenario-engine-docs-venv/bin/python -m pip install '.[schemathesis]'
|
|
94
99
|
```
|
|
95
100
|
|
|
96
|
-
The
|
|
101
|
+
The published distribution is `deterministic-scenario-engine` 2.0.0. Install the package
|
|
97
102
|
with `pip install deterministic-scenario-engine`, or select an optional integration
|
|
98
103
|
with a command such as `pip install 'deterministic-scenario-engine[pytest]'`.
|
|
99
104
|
|
|
@@ -153,12 +158,13 @@ Unsupported cross-version replay fails explicitly. See the [determinism model](d
|
|
|
153
158
|
- [Security assumptions and non-goals](docs/security-and-non-goals.md)
|
|
154
159
|
- [Compatibility contract](docs/compatibility.md)
|
|
155
160
|
- [Phase 2 public contract, CLI, and hard bounds](docs/phase2-public-contract.md)
|
|
161
|
+
- [Phase 3 public contract and evidence interchange](docs/phase3-public-contract.md)
|
|
156
162
|
|
|
157
163
|
## Status
|
|
158
164
|
|
|
159
165
|
Distribution release identity and deterministic engine compatibility are
|
|
160
|
-
separate contracts
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
166
|
+
separate contracts. Version 2.0.0 has been published to PyPI and as a GitHub
|
|
167
|
+
Release. This source tree reports the unpublished 2.1.0 release candidate;
|
|
168
|
+
generated core manifests retain `ENGINE_VERSION` 1.0.0 and DSL 1. No 2.1.0 tag,
|
|
169
|
+
GitHub Release, or package-index publication exists. The project is licensed
|
|
170
|
+
under Apache-2.0.
|
|
@@ -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. The
|
|
8
|
-
|
|
9
|
-
distribution version
|
|
10
|
-
|
|
7
|
+
testing. The published distribution is `deterministic-scenario-engine` 2.0.0.
|
|
8
|
+
Phase 3 evidence-interchange capabilities are implemented on `main` and the
|
|
9
|
+
current source release candidate reports distribution version 2.1.0, while 2.1.0
|
|
10
|
+
is not published. Its deterministic compatibility version remains
|
|
11
|
+
`ENGINE_VERSION == "1.0.0"`, and its DSL version remains integer 1.
|
|
11
12
|
|
|
12
13
|
## Why it exists
|
|
13
14
|
|
|
@@ -35,14 +36,18 @@ make expected behavior explicit.
|
|
|
35
36
|
- ordered Cartesian matrices with stable case IDs and original indexes
|
|
36
37
|
- immutable ordered batch plans and worker-independent results
|
|
37
38
|
- structured, redacted inspect/explain evidence and typed RFC 6901 semantic diff
|
|
38
|
-
-
|
|
39
|
+
- twelve-command `scenario` CLI for local and CI workflows, including bounded
|
|
40
|
+
local evidence export, verification, and lossless migration
|
|
39
41
|
- explicit immutable Domain Pack registries and pure Oracle Assertions
|
|
42
|
+
- canonical evidence bundles, ordered JSON/JSONL export, compatibility reports,
|
|
43
|
+
explicit adapters, closed lossless migrations, and fixture-directory export
|
|
40
44
|
|
|
41
45
|
Core execution does not require a database, network service, plugin, or property
|
|
42
46
|
testing framework. See [security assumptions and non-goals](docs/security-and-non-goals.md).
|
|
43
|
-
Phase 2 adds
|
|
44
|
-
environment semantics.
|
|
45
|
-
|
|
47
|
+
Neither Phase 2 nor Phase 3 adds hidden discovery, network, randomness,
|
|
48
|
+
wall-clock, or ambient environment semantics. The historical Phase 2 contract
|
|
49
|
+
is frozen in the [Phase 2 public contract](docs/phase2-public-contract.md); the
|
|
50
|
+
additive evidence surface is frozen in the [Phase 3 public contract](docs/phase3-public-contract.md).
|
|
46
51
|
|
|
47
52
|
## Installation
|
|
48
53
|
|
|
@@ -62,7 +67,7 @@ Install only the named optional integrations you need:
|
|
|
62
67
|
/tmp/scenario-engine-docs-venv/bin/python -m pip install '.[schemathesis]'
|
|
63
68
|
```
|
|
64
69
|
|
|
65
|
-
The
|
|
70
|
+
The published distribution is `deterministic-scenario-engine` 2.0.0. Install the package
|
|
66
71
|
with `pip install deterministic-scenario-engine`, or select an optional integration
|
|
67
72
|
with a command such as `pip install 'deterministic-scenario-engine[pytest]'`.
|
|
68
73
|
|
|
@@ -122,12 +127,13 @@ Unsupported cross-version replay fails explicitly. See the [determinism model](d
|
|
|
122
127
|
- [Security assumptions and non-goals](docs/security-and-non-goals.md)
|
|
123
128
|
- [Compatibility contract](docs/compatibility.md)
|
|
124
129
|
- [Phase 2 public contract, CLI, and hard bounds](docs/phase2-public-contract.md)
|
|
130
|
+
- [Phase 3 public contract and evidence interchange](docs/phase3-public-contract.md)
|
|
125
131
|
|
|
126
132
|
## Status
|
|
127
133
|
|
|
128
134
|
Distribution release identity and deterministic engine compatibility are
|
|
129
|
-
separate contracts
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
135
|
+
separate contracts. Version 2.0.0 has been published to PyPI and as a GitHub
|
|
136
|
+
Release. This source tree reports the unpublished 2.1.0 release candidate;
|
|
137
|
+
generated core manifests retain `ENGINE_VERSION` 1.0.0 and DSL 1. No 2.1.0 tag,
|
|
138
|
+
GitHub Release, or package-index publication exists. The project is licensed
|
|
139
|
+
under Apache-2.0.
|
|
@@ -1,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
|
|
5
|
-
implicitly promoted to top-level public API. Specialized
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
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).
|
{deterministic_scenario_engine-2.0.0 → deterministic_scenario_engine-2.1.0}/docs/determinism.md
RENAMED
|
@@ -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
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|