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