openstatspec 0.7.0__tar.gz → 0.7.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openstatspec-0.7.0 → openstatspec-0.7.1}/.github/workflows/ci.yml +1 -1
- {openstatspec-0.7.0 → openstatspec-0.7.1}/.github/workflows/release.yml +1 -1
- {openstatspec-0.7.0 → openstatspec-0.7.1}/CHANGELOG.md +8 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/PKG-INFO +1 -1
- {openstatspec-0.7.0 → openstatspec-0.7.1}/docs/release-readiness.md +5 -7
- openstatspec-0.7.1/docs/superpowers/plans/2026-08-12-python-v071-stable-pin.md +158 -0
- openstatspec-0.7.1/docs/superpowers/specs/2026-08-12-python-stable-specification-pin-design.md +35 -0
- openstatspec-0.7.1/openstatspec-specification/.github/workflows/ci.yml +22 -0
- openstatspec-0.7.1/openstatspec-specification/.github/workflows/release.yml +108 -0
- openstatspec-0.7.1/openstatspec-specification/.gitignore +5 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/CHANGELOG.md +26 -5
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/README.md +9 -2
- openstatspec-0.7.1/openstatspec-specification/RELEASING.md +60 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/ROADMAP.md +45 -23
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/VERSIONING.md +1 -1
- openstatspec-0.7.1/openstatspec-specification/pyproject.toml +21 -0
- openstatspec-0.7.1/openstatspec-specification/sql/dialect-profile-baseline.json +1224 -0
- openstatspec-0.7.1/openstatspec-specification/sql/dialect-profiles.md +273 -0
- openstatspec-0.7.1/openstatspec-specification/sql/dolt-adapter-declaration-schema.json +61 -0
- openstatspec-0.7.1/openstatspec-specification/sql/dolt-adapter-declarations/README.md +33 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/sql/profile-capabilities.md +10 -0
- openstatspec-0.7.1/openstatspec-specification/src/openstatspec_specification/__init__.py +19 -0
- openstatspec-0.7.1/openstatspec-specification/src/openstatspec_specification/dolt.py +1966 -0
- openstatspec-0.7.1/openstatspec-specification/tests/test_dolt_declarations.py +370 -0
- openstatspec-0.7.1/openstatspec-specification/tools/validate_repository.py +145 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/pyproject.toml +1 -1
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/capabilities.py +3 -3
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_cli.py +3 -3
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_sql_profiles.py +4 -4
- openstatspec-0.7.0/openstatspec-specification/.github/workflows/ci.yml +0 -15
- openstatspec-0.7.0/openstatspec-specification/.gitignore +0 -2
- openstatspec-0.7.0/openstatspec-specification/sql/dialect-profile-baseline.json +0 -233
- openstatspec-0.7.0/openstatspec-specification/sql/dialect-profiles.md +0 -202
- openstatspec-0.7.0/openstatspec-specification/tools/validate_repository.py +0 -934
- {openstatspec-0.7.0 → openstatspec-0.7.1}/.github/verify_release_ref.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/.gitignore +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/README.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/THIRD_PARTY_NOTICES.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/docs/architecture.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/docs/in-place-transformation.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/docs/pyspssio-spike.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/docs/sav-profile.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/docs/sql-transformation-workflow.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/docs/transformations.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/CONTRIBUTING.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/LICENSE.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/README.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/core-numeric-string.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/dictionary-and-display.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/generate-fixtures.sps +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/long-utf8-and-attributes.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/missing-rules.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/sets.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/weight-and-string-mr.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/fixtures/zsav-compressed.zsav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/in-place-transformation-0.1.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/in-place-transformation-0.2.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/spss-sav-zsav-1.0.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/spss-syntax-frontend-0.1.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/spss-syntax-frontend-0.2.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/sql-transformation-workflow-0.1.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/transformation-plan-0.1.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/conformance/transformation-plan-0.2.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/architecture.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/implementation-profiles/python-pyspssio-0.5.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/mssql-dialect-roadmap.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/spss-profile.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/spss-sav-zsav-profile-1.0.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/spss-syntax-frontend-profile-0.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/spss-syntax-frontend-profile-0.2.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/sql-transformation-workflow-profile-0.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/transformation-plan-profile-0.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/transformation-plan-profile-0.2.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/transformation-plan-sql-binding-0.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/docs/transformation-plan-sql-binding-0.2.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/examples/basic-spss-mapping.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/examples/spss-syntax-transformation-0.2.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/examples/spss-syntax-transformation.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/examples/sql-transformation-workflow.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/sql/schema-outline.sql +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/sql/server-version-policy.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/sql/transformation-plan-profile-schema.sql +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/sql/transformation-workflow-profile-schema.sql +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/transformation/plan-0.1.schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/transformation/plan-0.2.schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/transformation/spss-syntax-frontend-0.1.schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification/transformation/spss-syntax-frontend-0.2.schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/.github/workflows/ci.yml +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/.github/workflows/publish.yml +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/.gitignore +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/CHANGELOG.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/CONTRIBUTING.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/README.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/RELEASING.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/ROADMAP.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/VERSIONING.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/LICENSE.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/README.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/core-numeric-string.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/dictionary-and-display.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/generate-fixtures.sps +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/long-utf8-and-attributes.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/missing-rules.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/sets.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/weight-and-string-mr.sav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/fixtures/zsav-compressed.zsav +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/in-place-transformation-0.1.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/in-place-transformation-0.2.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/spss-sav-zsav-1.0.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/spss-syntax-frontend-0.1.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/spss-syntax-frontend-0.2.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/sql-transformation-workflow-0.1.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/transformation-plan-0.1.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/conformance/transformation-plan-0.2.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/architecture.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/implementation-profiles/python-pyspssio-0.5.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/mssql-dialect-roadmap.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/spss-profile.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/spss-sav-zsav-profile-1.0.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/spss-syntax-frontend-profile-0.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/spss-syntax-frontend-profile-0.2.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/sql-transformation-workflow-profile-0.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/transformation-plan-profile-0.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/transformation-plan-profile-0.2.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/transformation-plan-sql-binding-0.1.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/docs/transformation-plan-sql-binding-0.2.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/examples/basic-spss-mapping.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/examples/spss-syntax-transformation-0.2.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/examples/spss-syntax-transformation.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/examples/sql-transformation-workflow.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/pyproject.toml +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/dialect-profile-baseline.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/dialect-profiles.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/dolt-adapter-declaration-schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/dolt-adapter-declarations/README.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/profile-capabilities.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/schema-outline.sql +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/server-version-policy.md +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/transformation-plan-profile-schema.sql +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/sql/transformation-workflow-profile-schema.sql +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/src/openstatspec_specification/__init__.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/src/openstatspec_specification/dolt.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/tests/test_dolt_declarations.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/tools/validate_repository.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/transformation/plan-0.1.schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/transformation/plan-0.2.schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/transformation/spss-syntax-frontend-0.1.schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/openstatspec-specification-package/transformation/spss-syntax-frontend-0.2.schema.json +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/__init__.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/api.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/cli.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/core/__init__.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/core/results.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/frontends/__init__.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/frontends/sas/.gitkeep +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/frontends/spss/__init__.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/frontends/spss/binding.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/frontends/spss/compiler.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/frontends/spss/execution.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/frontends/spss/syntax.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/frontends/stata/.gitkeep +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/spss/__init__.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/spss/dictionary.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/spss/raw_dictionary.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/spss/sav.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/__init__.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/catalog_api.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/catalog_verification.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/database_urls.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/dolt_conformance.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/inplace_transform.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/normative.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/profiles.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/wide.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/sql/workflow.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/transform/__init__.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/transform/errors.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/transform/plan.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/transform/schema.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/src/openstatspec/transform/validation.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/conformance.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_atomic_import.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_attribute_catalog.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_catalog_lifecycle.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_catalog_persistence_review.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_conditional_inplace_transform.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_document_round_trip.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_dolt_conformance.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_inplace_transform.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_loss_reports.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_normative_catalog.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_official_conformance.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_pyspssio_catalog_authority.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_release_ref.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_review_transaction_boundary.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_sav_sqlite.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_spss_catalog_preflight.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_sql_services.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_sql_workflow.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_strict_catalog_review.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_transform_frontend.py +0 -0
- {openstatspec-0.7.0 → openstatspec-0.7.1}/tests/test_vls_compatible_names.py +0 -0
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
uses: actions/checkout@v7
|
|
21
21
|
with: &specification-checkout
|
|
22
22
|
repository: OpenStatSpec/specification
|
|
23
|
-
ref:
|
|
23
|
+
ref: cd8f198c68b849eb8ed018a894670a0904c2181d
|
|
24
24
|
path: openstatspec-specification
|
|
25
25
|
- name: Checkout required SPSS engine
|
|
26
26
|
uses: actions/checkout@v7
|
|
@@ -48,7 +48,7 @@ jobs:
|
|
|
48
48
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
49
49
|
with:
|
|
50
50
|
repository: OpenStatSpec/specification
|
|
51
|
-
ref:
|
|
51
|
+
ref: cd8f198c68b849eb8ed018a894670a0904c2181d
|
|
52
52
|
path: openstatspec-specification
|
|
53
53
|
- name: Checkout specification package source
|
|
54
54
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
@@ -6,6 +6,14 @@ All notable changes to this reference implementation are documented here.
|
|
|
6
6
|
|
|
7
7
|
_No unreleased changes._
|
|
8
8
|
|
|
9
|
+
## 0.7.1 - 2026-08-12
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Pinned capability declarations, conformance fixtures, and release validation
|
|
14
|
+
to the published OpenStatSpec specification `v0.3.0` at exact commit
|
|
15
|
+
`cd8f198c68b849eb8ed018a894670a0904c2181d`.
|
|
16
|
+
|
|
9
17
|
## 0.7.0 - 2026-08-11
|
|
10
18
|
|
|
11
19
|
### Added
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 0.7.
|
|
1
|
+
# 0.7.1 release readiness
|
|
2
2
|
|
|
3
3
|
This page records the expected release contract, not a publication event.
|
|
4
4
|
Creating a version tag remains a separate maintainer action.
|
|
@@ -114,12 +114,10 @@ capability claim, or implied support.
|
|
|
114
114
|
4. Build with `python -m build` and install the generated wheel in a clean
|
|
115
115
|
environment.
|
|
116
116
|
5. Confirm `openstatspec capabilities` reflects the intended support boundary.
|
|
117
|
-
6. Confirm CI, release fixtures, and capabilities use the
|
|
118
|
-
specification
|
|
119
|
-
`
|
|
120
|
-
`specification_status=
|
|
121
|
-
`specification_release` null. If that exact commit receives a stable tag
|
|
122
|
-
before this package is tagged, update the identity and re-run every gate.
|
|
117
|
+
6. Confirm CI, release fixtures, and capabilities use the published OpenStatSpec
|
|
118
|
+
specification `v0.3.0` at exact commit
|
|
119
|
+
`cd8f198c68b849eb8ed018a894670a0904c2181d`, publish
|
|
120
|
+
`specification_status=stable`, and set `specification_release` to `v0.3.0`.
|
|
123
121
|
7. Review this document, the README, and CHANGELOG for accurate scope.
|
|
124
122
|
|
|
125
123
|
The tag-triggered release workflow repeats the non-service test suite, builds
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Python 0.7.1 Stable Specification Pin Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** Release Python adapter `0.7.1` with stable, exact provenance for specification `v0.3.0`.
|
|
6
|
+
|
|
7
|
+
**Architecture:** Keep the provenance values centralized in `src/openstatspec/sql/capabilities.py`; tests and capability declarations consume those values. CI and release-readiness documentation pin the same immutable specification commit, while the package version changes only in packaging metadata.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Python 3.11–3.14, pytest, GitHub Actions, `python -m build`, Twine, PyPI Trusted Publishing.
|
|
10
|
+
|
|
11
|
+
## Global Constraints
|
|
12
|
+
|
|
13
|
+
- Specification commit: `cd8f198c68b849eb8ed018a894670a0904c2181d`.
|
|
14
|
+
- Specification status: `stable`.
|
|
15
|
+
- Specification release: `v0.3.0`.
|
|
16
|
+
- Package version: `0.7.1`.
|
|
17
|
+
- Keep the SPSS engine pin, companion package pin, SQL profile matrix, and runtime behavior unchanged.
|
|
18
|
+
- Do not publish or change the normative specification package in this task.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### Task 1: Update provenance contract tests first
|
|
23
|
+
|
|
24
|
+
**Files:**
|
|
25
|
+
- Modify: `tests/test_cli.py:44-48`
|
|
26
|
+
- Modify: `tests/test_sql_profiles.py:32-40`
|
|
27
|
+
|
|
28
|
+
**Interfaces:**
|
|
29
|
+
- Consumes: public `openstatspec.capability_matrix()` and SQL profile declarations.
|
|
30
|
+
- Produces: executable expectations for stable `v0.3.0` provenance.
|
|
31
|
+
|
|
32
|
+
- [ ] **Step 1: Change the assertions to the stable identity**
|
|
33
|
+
|
|
34
|
+
Replace the candidate expectations with:
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
assert matrix["specification_status"] == "stable"
|
|
38
|
+
assert matrix["specification_release"] == "v0.3.0"
|
|
39
|
+
assert matrix["specification_commit"] == "cd8f198c68b849eb8ed018a894670a0904c2181d"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Apply the same three values to each profile declaration assertion.
|
|
43
|
+
|
|
44
|
+
- [ ] **Step 2: Run the focused tests and confirm the expected red state**
|
|
45
|
+
|
|
46
|
+
Run:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
python -m pytest -q tests/test_cli.py::test_capability_matrix_is_public_and_cli_matches_engine_boundary tests/test_sql_profiles.py::test_profile_declarations_publish_stable_specification_provenance
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Expected: both tests fail because production constants still expose the old release-candidate identity.
|
|
53
|
+
|
|
54
|
+
- [ ] **Step 3: Commit the failing-test update**
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git add tests/test_cli.py tests/test_sql_profiles.py
|
|
58
|
+
git commit -m "test: expect stable specification v0.3.0"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Task 2: Bind production provenance and release metadata
|
|
62
|
+
|
|
63
|
+
**Files:**
|
|
64
|
+
- Modify: `src/openstatspec/sql/capabilities.py:20-23`
|
|
65
|
+
- Modify: `pyproject.toml:7`
|
|
66
|
+
- Modify: `.github/workflows/ci.yml:23`
|
|
67
|
+
- Modify: `.github/workflows/release.yml:51`
|
|
68
|
+
- Modify: `docs/release-readiness.md:1,116-123`
|
|
69
|
+
- Modify: `CHANGELOG.md` after the `Unreleased` section
|
|
70
|
+
|
|
71
|
+
**Interfaces:**
|
|
72
|
+
- Consumes: the exact specification commit from the published `v0.3.0` tag.
|
|
73
|
+
- Produces: capability output and release automation identifying `stable`, `v0.3.0`, and `cd8f198c...`.
|
|
74
|
+
|
|
75
|
+
- [ ] **Step 1: Update the centralized capability constants**
|
|
76
|
+
|
|
77
|
+
Set the declarations to:
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
SPECIFICATION_COMMIT = "cd8f198c68b849eb8ed018a894670a0904c2181d"
|
|
81
|
+
SPECIFICATION_STATUS = "stable"
|
|
82
|
+
SPECIFICATION_RELEASE: str | None = "v0.3.0"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- [ ] **Step 2: Bump the package and CI fixture pin**
|
|
86
|
+
|
|
87
|
+
Set `project.version` in `pyproject.toml` to `0.7.1`. Replace the old specification checkout ref in both workflows with the exact commit `cd8f198c68b849eb8ed018a894670a0904c2181d`; leave the companion package ref unchanged.
|
|
88
|
+
|
|
89
|
+
- [ ] **Step 3: Update release documentation and changelog**
|
|
90
|
+
|
|
91
|
+
Rename the readiness heading to `0.7.1 release readiness`, change its specification checklist to the stable commit/release identity, and add a dated `0.7.1` entry explaining that the adapter now pins published specification `v0.3.0`.
|
|
92
|
+
|
|
93
|
+
- [ ] **Step 4: Run focused tests and confirm green**
|
|
94
|
+
|
|
95
|
+
Run the focused command from Task 1. Expected: both tests pass.
|
|
96
|
+
|
|
97
|
+
- [ ] **Step 5: Commit the implementation and metadata**
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
git add src/openstatspec/sql/capabilities.py pyproject.toml .github/workflows/ci.yml .github/workflows/release.yml docs/release-readiness.md CHANGELOG.md
|
|
101
|
+
git commit -m "release: pin Python adapter to specification v0.3.0"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Task 3: Verify the complete Python release candidate
|
|
105
|
+
|
|
106
|
+
**Files:**
|
|
107
|
+
- Verify: all tracked files in the Python repository.
|
|
108
|
+
|
|
109
|
+
- [ ] **Step 1: Check the diff and stale current references**
|
|
110
|
+
|
|
111
|
+
Run:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
git diff --check
|
|
115
|
+
rg -n 'f2fdf687d8cb32b944ca55a3e9e7215ffc603019|specification_status.*release_candidate|specification_release.*None|version = "0\.7\.0"' src tests .github docs pyproject.toml
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Expected: no stale current references; historical changelog entries may retain their original release evidence.
|
|
119
|
+
|
|
120
|
+
- [ ] **Step 2: Run the non-service test suite**
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
python -m pytest -m "not services"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Expected: zero failures.
|
|
127
|
+
|
|
128
|
+
- [ ] **Step 3: Build and smoke-test the package**
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
rm -rf /tmp/openstatspec-v071-dist /tmp/openstatspec-v071-smoke
|
|
132
|
+
python -m build --outdir /tmp/openstatspec-v071-dist
|
|
133
|
+
python -m twine check /tmp/openstatspec-v071-dist/*
|
|
134
|
+
python -m venv /tmp/openstatspec-v071-smoke
|
|
135
|
+
/tmp/openstatspec-v071-smoke/bin/python -m pip install ./openstatspec-pyspssio
|
|
136
|
+
/tmp/openstatspec-v071-smoke/bin/python -m pip install /tmp/openstatspec-v071-dist/openstatspec-0.7.1-*.whl
|
|
137
|
+
/tmp/openstatspec-v071-smoke/bin/openstatspec capabilities
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Expected: build and Twine checks pass, and capabilities reports `stable`, `v0.3.0`, and the exact commit.
|
|
141
|
+
|
|
142
|
+
### Task 4: Review, publish, and release
|
|
143
|
+
|
|
144
|
+
- [ ] **Step 1: Run the local review loop and fix every actionable finding**
|
|
145
|
+
|
|
146
|
+
Review the complete branch diff against `origin/main`; repeat the tests after each fix until no actionable findings remain.
|
|
147
|
+
|
|
148
|
+
- [ ] **Step 2: Push the branch and open a draft PR**
|
|
149
|
+
|
|
150
|
+
Push `agent/stable-spec-v071` to `OpenStatSpec/python`, open a PR targeting `main`, mark it ready for review, and add `@codex review`.
|
|
151
|
+
|
|
152
|
+
- [ ] **Step 3: Iterate on GitHub review and CI**
|
|
153
|
+
|
|
154
|
+
Inspect every Codex review finding and failing check, fix actionable issues locally, push, and repeat until the review and required checks are clean.
|
|
155
|
+
|
|
156
|
+
- [ ] **Step 4: After merge, create and push annotated tag `v0.7.1`**
|
|
157
|
+
|
|
158
|
+
Verify the tag targets the merge commit and wait for tag-context CI to pass before relying on the existing PyPI workflow.
|
openstatspec-0.7.1/docs/superpowers/specs/2026-08-12-python-stable-specification-pin-design.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Python 0.7.1 stable specification pin
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Publish the Python adapter's first patch release after Python adapter `v0.7.0`
|
|
6
|
+
with its capability declarations and conformance fixtures bound to the
|
|
7
|
+
published OpenStatSpec specification `v0.3.0`.
|
|
8
|
+
|
|
9
|
+
## Scope
|
|
10
|
+
|
|
11
|
+
- Bump the Python distribution from `0.7.0` to `0.7.1`.
|
|
12
|
+
- Replace the release-candidate specification identity with:
|
|
13
|
+
- commit `cd8f198c68b849eb8ed018a894670a0904c2181d`;
|
|
14
|
+
- status `stable`;
|
|
15
|
+
- release `v0.3.0`.
|
|
16
|
+
- Update unit expectations, CI fixture checkouts, release-readiness guidance,
|
|
17
|
+
and the changelog so every release surface carries the same identity.
|
|
18
|
+
- Keep the required SPSS engine pin, specification companion package pin,
|
|
19
|
+
database version matrix, and runtime behavior unchanged.
|
|
20
|
+
- Separately update the specification repository roadmap to mark the completed
|
|
21
|
+
`v0.3.0` release gates and current public release.
|
|
22
|
+
|
|
23
|
+
## Release and verification
|
|
24
|
+
|
|
25
|
+
The Python change is reviewed through a pull request. Before tagging `v0.7.1`,
|
|
26
|
+
run the non-service suite, package build and wheel smoke test, and the full
|
|
27
|
+
GitHub CI matrix. The annotated `v0.7.1` tag must target the merged release
|
|
28
|
+
commit; its tag-context workflow must pass before the existing trusted-PyPI
|
|
29
|
+
workflow publishes the package artifacts.
|
|
30
|
+
|
|
31
|
+
## Non-goals
|
|
32
|
+
|
|
33
|
+
This work does not add transformation behavior, change SQL dialect support,
|
|
34
|
+
modify the normative specification, or publish a new specification package
|
|
35
|
+
version.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
specification:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
# v7.0.1: https://github.com/actions/checkout/commit/3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
15
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
16
|
+
with:
|
|
17
|
+
persist-credentials: false
|
|
18
|
+
# v7.0.0: https://github.com/actions/setup-python/commit/5fda3b95a4ea91299a34e894583c3862153e4b97
|
|
19
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.13"
|
|
22
|
+
- run: python tools/validate_repository.py
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
name: Publish Python specification package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "package-v*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
name: Build and verify distribution
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Check out repository
|
|
19
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
20
|
+
with:
|
|
21
|
+
persist-credentials: false
|
|
22
|
+
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.13"
|
|
27
|
+
|
|
28
|
+
- name: Build distribution
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
python -m pip install build twine pytest
|
|
32
|
+
python -m pip install -e .
|
|
33
|
+
python -m pytest -q tests/test_dolt_declarations.py
|
|
34
|
+
python tools/validate_repository.py
|
|
35
|
+
python -m build
|
|
36
|
+
|
|
37
|
+
- name: Verify distribution metadata
|
|
38
|
+
run: python -m twine check dist/*
|
|
39
|
+
|
|
40
|
+
- name: Verify release tag version
|
|
41
|
+
if: startsWith(github.ref, 'refs/tags/package-v')
|
|
42
|
+
env:
|
|
43
|
+
RELEASE_TAG: ${{ github.ref_name }}
|
|
44
|
+
run: |
|
|
45
|
+
python - <<'PY'
|
|
46
|
+
import os
|
|
47
|
+
import tomllib
|
|
48
|
+
from pathlib import Path
|
|
49
|
+
|
|
50
|
+
project = tomllib.loads(Path("pyproject.toml").read_text())
|
|
51
|
+
version = project["project"]["version"]
|
|
52
|
+
tag = os.environ["RELEASE_TAG"]
|
|
53
|
+
if tag != f"package-v{version}":
|
|
54
|
+
raise SystemExit(
|
|
55
|
+
f"release tag {tag!r} does not match project version package-v{version}"
|
|
56
|
+
)
|
|
57
|
+
PY
|
|
58
|
+
|
|
59
|
+
- name: Store distribution artifacts
|
|
60
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
61
|
+
with:
|
|
62
|
+
name: python-package-distributions
|
|
63
|
+
path: dist/
|
|
64
|
+
if-no-files-found: error
|
|
65
|
+
|
|
66
|
+
publish-testpypi:
|
|
67
|
+
name: Publish to TestPyPI
|
|
68
|
+
if: github.event_name == 'workflow_dispatch'
|
|
69
|
+
needs: build
|
|
70
|
+
runs-on: ubuntu-latest
|
|
71
|
+
environment:
|
|
72
|
+
name: testpypi
|
|
73
|
+
url: https://test.pypi.org/p/openstatspec-specification
|
|
74
|
+
permissions:
|
|
75
|
+
id-token: write
|
|
76
|
+
|
|
77
|
+
steps:
|
|
78
|
+
- name: Download distribution artifacts
|
|
79
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
80
|
+
with:
|
|
81
|
+
name: python-package-distributions
|
|
82
|
+
path: dist/
|
|
83
|
+
|
|
84
|
+
- name: Publish distribution to TestPyPI
|
|
85
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
86
|
+
with:
|
|
87
|
+
repository-url: https://test.pypi.org/legacy/
|
|
88
|
+
|
|
89
|
+
publish-pypi:
|
|
90
|
+
name: Publish to PyPI
|
|
91
|
+
if: startsWith(github.ref, 'refs/tags/package-v')
|
|
92
|
+
needs: build
|
|
93
|
+
runs-on: ubuntu-latest
|
|
94
|
+
environment:
|
|
95
|
+
name: pypi
|
|
96
|
+
url: https://pypi.org/p/openstatspec-specification
|
|
97
|
+
permissions:
|
|
98
|
+
id-token: write
|
|
99
|
+
|
|
100
|
+
steps:
|
|
101
|
+
- name: Download distribution artifacts
|
|
102
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
103
|
+
with:
|
|
104
|
+
name: python-package-distributions
|
|
105
|
+
path: dist/
|
|
106
|
+
|
|
107
|
+
- name: Publish distribution to PyPI
|
|
108
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
@@ -2,9 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Future changes will be listed here.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## v0.3.0 - 2026-08-12
|
|
8
|
+
|
|
9
|
+
Release preparation for the planned stable `v0.3.0` tag. Until a protected or
|
|
10
|
+
signed `v0.3.0` tag targets this exact release commit, implementations MUST
|
|
11
|
+
identify it with `specification_status: release_candidate`,
|
|
12
|
+
`specification_release: null`, and the exact immutable specification commit.
|
|
13
|
+
The entries below become the stable release only when that tag exists.
|
|
8
14
|
|
|
9
15
|
- Added backward-compatible Transformation Plan and SPSS Syntax Frontend 0.2
|
|
10
16
|
contracts for sequential numeric `COMPUTE` and conditional `IF`, bounded
|
|
@@ -17,9 +23,24 @@ Until a protected or signed `v0.3.0` tag targets this work, implementations MUST
|
|
|
17
23
|
action followed by an existing-target apply with no automatic Dolt commit.
|
|
18
24
|
- Added independent synthetic golden fixtures, hashes, examples, and repository
|
|
19
25
|
validation gates for the new contracts.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
|
|
27
|
+
- Packaged the repository's Dolt declaration validator and authoritative SQL
|
|
28
|
+
resources as the `openstatspec-specification` companion distribution.
|
|
29
|
+
- Bound every concrete Dolt declaration to a declaration ID, adapter
|
|
30
|
+
implementation and exact version, exact specification commit, and conformance
|
|
31
|
+
run ID; exact single-match selection is required before mutation.
|
|
32
|
+
|
|
33
|
+
- Added a pending symbolic Dolt profile template and a separate concrete adapter
|
|
34
|
+
declaration schema/path and contract for tested active-version identity,
|
|
35
|
+
numeric limits, DDL atomicity, audit-safe cleanup failure, and machine-linked
|
|
36
|
+
boundary/fault evidence.
|
|
37
|
+
|
|
38
|
+
## v0.2.1 - 2026-08-04
|
|
39
|
+
|
|
40
|
+
- Corrected the SPSS Syntax Frontend 0.1 schema's `$defs` and `$ref`
|
|
41
|
+
keywords so typed value-label values are constrained as the existing
|
|
42
|
+
contract states. This maintenance release contains no Transformation Plan or
|
|
43
|
+
SPSS Syntax Frontend 0.2 work.
|
|
23
44
|
|
|
24
45
|
## v0.2.0 - 2026-07-31
|
|
25
46
|
|
|
@@ -25,7 +25,7 @@ remains an explicitly unsupported [future dialect](docs/mssql-dialect-roadmap.md
|
|
|
25
25
|
|
|
26
26
|
OpenStatSpec does not define long-form cells, EAV storage, table splitting, reshaping, automatic harmonization, or questionnaire/study entities. It does not infer respondent keys or combine datasets. All conformant database-object identifiers are generic; the double-underscore prefix is reserved for standard technical identifiers.
|
|
27
27
|
|
|
28
|
-
[Versioning](VERSIONING.md) defines compatibility and release rules. [Roadmap](ROADMAP.md) tracks remaining project work and maintainer setup.
|
|
28
|
+
[Versioning](VERSIONING.md) defines compatibility and release rules. [Releasing](RELEASING.md) defines the maintainer release checklist. [Roadmap](ROADMAP.md) tracks remaining project work and maintainer setup.
|
|
29
29
|
|
|
30
30
|
## Optional SQL transformation workflow
|
|
31
31
|
|
|
@@ -59,6 +59,13 @@ to be provisioned separately before an in-place transformation apply.
|
|
|
59
59
|
- `docs/spss-profile.md` — SPSS source-faithful mapping rules.
|
|
60
60
|
- [Python / pinned pyspssio implementation profile](docs/implementation-profiles/python-pyspssio-0.5.1.md) — Python adapter pyspssio capability boundary; it does not relax the normative SAV/ZSAV profile.
|
|
61
61
|
- `sql/dialect-profiles.md` — initial SQLite, PostgreSQL, MySQL/MariaDB and Dolt physical profiles.
|
|
62
|
+
- `sql/dolt-adapter-declaration-schema.json` — machine-readable contract for
|
|
63
|
+
concrete Dolt adapter declarations.
|
|
64
|
+
- `sql/dolt-adapter-declarations/` — declaration and evidence resources; the
|
|
65
|
+
checked-in baseline remains a symbolic template until a concrete adapter
|
|
66
|
+
declaration is published.
|
|
67
|
+
- `openstatspec-specification` — installable companion distribution exposing
|
|
68
|
+
the shared Dolt declaration validator and authoritative SQL resources.
|
|
62
69
|
- `sql/` — dialect-neutral schema outline and profile notes.
|
|
63
70
|
- `sql/transformation-workflow-profile-schema.sql` - optional derived-data
|
|
64
71
|
catalog outline, separate from the immutable core catalog.
|
|
@@ -76,7 +83,7 @@ to be provisioned separately before an in-place transformation apply.
|
|
|
76
83
|
|
|
77
84
|
Implementations must preflight target capabilities before import. If the target cannot faithfully create one wide table because of column, identifier, string, or row limits, import must fail atomically with a machine-readable capability diagnostic. It must never silently truncate, drop, split, transpose, pivot, or transform source data.
|
|
78
85
|
|
|
79
|
-
This specification repository publishes
|
|
86
|
+
This specification repository publishes normative Transformation Plan and SPSS syntax frontend schemas, documentation, declarative fixtures, and its own structural/hash/fixture validation in tools/validate_repository.py. It does not contain executable implementation or behavioral conformance code: parser, SQL-engine, transaction, and adapter behavior belong in each implementation or adapter repository.
|
|
80
87
|
|
|
81
88
|
## Who it is for
|
|
82
89
|
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Releasing OpenStatSpec
|
|
2
|
+
|
|
3
|
+
This checklist governs releases of this specification repository. It does not
|
|
4
|
+
publish an implementation package and does not substitute for implementation
|
|
5
|
+
or adapter conformance evidence.
|
|
6
|
+
|
|
7
|
+
The repository release maintainer with repository-admin authority is responsible
|
|
8
|
+
for completing this checklist and preserving the release controls it requires.
|
|
9
|
+
|
|
10
|
+
The Python companion distribution is released separately from the specification.
|
|
11
|
+
Package tags use the `package-vX.Y.Z` convention; specification tags use
|
|
12
|
+
`vX.Y.Z`. A specification tag MUST NOT publish the package, and a package tag
|
|
13
|
+
MUST match the version declared in `pyproject.toml`.
|
|
14
|
+
|
|
15
|
+
## Before preparing a release
|
|
16
|
+
|
|
17
|
+
- Choose an exact reviewed commit on the appropriate branch and record its
|
|
18
|
+
full commit ID. Stable tags use the convention `vX.Y.Z`.
|
|
19
|
+
- Keep maintenance releases on their maintained release branch. Merge the
|
|
20
|
+
equivalent corrective change to `main` separately when it is also needed by
|
|
21
|
+
the next minor release; do not make a maintenance tag point at unrelated
|
|
22
|
+
unreleased `main` work.
|
|
23
|
+
- Run the repository validation at that exact commit and confirm the required
|
|
24
|
+
CI run for that commit is successful. A green run for a nearby commit is not
|
|
25
|
+
sufficient.
|
|
26
|
+
- Gate a specification release on its normative artifacts, review, versioning,
|
|
27
|
+
repository validation, and exact-commit CI. Adapter conformance and
|
|
28
|
+
service-matrix evidence are downstream: they gate only an implementation's
|
|
29
|
+
support or conformance claims and package releases against the exact
|
|
30
|
+
specification commit and, once published, its release identifier. They do not
|
|
31
|
+
gate specification publication.
|
|
32
|
+
- Confirm the changelog, versioning impact, and release notes describe only
|
|
33
|
+
the included specification changes.
|
|
34
|
+
|
|
35
|
+
## Tag and release
|
|
36
|
+
|
|
37
|
+
- Create and push `vX.Y.Z` only after the exact release commit has passed
|
|
38
|
+
CI. Use the selected signed annotated-tag path where signing is available,
|
|
39
|
+
or the selected protected-tag path restricted to release maintainers. Do not
|
|
40
|
+
move or reuse a published tag.
|
|
41
|
+
- Wait for the CI run in that exact tag context to succeed before creating or
|
|
42
|
+
publishing the immutable GitHub release; a branch-commit CI result is not a
|
|
43
|
+
substitute for the tag-context result.
|
|
44
|
+
- Create the GitHub release as a draft from that exact tag and verify the tag
|
|
45
|
+
target, title, notes, links, and any release assets before publication.
|
|
46
|
+
- Before publishing, verify the repository immutable-releases setting is
|
|
47
|
+
enabled. If that setting or the selected signed-or-protected tag path is
|
|
48
|
+
unavailable, stop and restore the missing selected control before publishing.
|
|
49
|
+
- Publish the release only after those checks are confirmed.
|
|
50
|
+
|
|
51
|
+
## After publication
|
|
52
|
+
|
|
53
|
+
- Verify GitHub reports immutable true for the published release and its tag as
|
|
54
|
+
the intended full commit ID.
|
|
55
|
+
- Verify the tag-triggered CI run is successful and that the release notes are
|
|
56
|
+
visible from the repository release page.
|
|
57
|
+
- Track implementation conformance and service-matrix work separately from
|
|
58
|
+
specification release gates. Publishing a specification does not assert
|
|
59
|
+
implementation conformance, and incomplete implementation evidence does not
|
|
60
|
+
block specification publication.
|
|
@@ -26,10 +26,12 @@ Prerequisite: the core mapping and canonical fixtures are stable enough to test
|
|
|
26
26
|
|
|
27
27
|
## 4. CI, releases, and documentation
|
|
28
28
|
|
|
29
|
-
- [x] Add continuous checks for
|
|
29
|
+
- [x] Add continuous specification-repository checks for links, schema examples,
|
|
30
|
+
and fixtures.
|
|
31
|
+
- [x] Define adapter conformance guidance; each adapter repository owns its runtime CI and evidence.
|
|
30
32
|
- [x] Define versioning and compatibility guidance for the specification and profiles.
|
|
31
|
-
- [x] Publish release notes and tagged specification releases; `v0.2.
|
|
32
|
-
current public specification release.
|
|
33
|
+
- [x] Publish release notes and tagged specification releases; `v0.2.1` is the
|
|
34
|
+
current public specification release and is immutable.
|
|
33
35
|
- [ ] Expand implementation, dialect-profile, and adoption documentation from real adapter experience.
|
|
34
36
|
|
|
35
37
|
## 5. Future adapters
|
|
@@ -45,7 +47,10 @@ Prerequisite: the SPSS profile, fixtures, and reference-adapter lessons are matu
|
|
|
45
47
|
- [x] Define parameter binding, lineage, hashes, audit, metadata and weight
|
|
46
48
|
propagation, dialect boundaries, and atomic publication.
|
|
47
49
|
- [x] Add machine-readable positive and failure conformance cases.
|
|
48
|
-
- [ ]
|
|
50
|
+
- [ ] Publish profile 1.0 after its normative contract, declarative cases, and
|
|
51
|
+
specification-repository checks are complete.
|
|
52
|
+
- [ ] Require each implementation to pass the relevant cases before claiming
|
|
53
|
+
profile 1.0 conformance.
|
|
49
54
|
|
|
50
55
|
## 7. Canonical transformation plans and syntax frontends
|
|
51
56
|
|
|
@@ -55,8 +60,9 @@ Prerequisite: the SPSS profile, fixtures, and reference-adapter lessons are matu
|
|
|
55
60
|
machine-readable conformance cases.
|
|
56
61
|
- [x] Define the in-place binding that preserves dataset/table identity on
|
|
57
62
|
supported SQL profiles and never creates an OpenStatSpec undo/copy layer.
|
|
58
|
-
- [ ]
|
|
59
|
-
before publishing execution claims
|
|
63
|
+
- [ ] Require each implementation to run the in-place apply service matrix
|
|
64
|
+
against every claimed SQL profile before publishing its execution claims;
|
|
65
|
+
this does not block specification publication.
|
|
60
66
|
- [ ] Evaluate additional language frontends as separate adapters that lower to
|
|
61
67
|
the same canonical plan.
|
|
62
68
|
|
|
@@ -69,32 +75,42 @@ scope without creating a capability claim.
|
|
|
69
75
|
- [ ] Select and pin Python and PHP driver stacks after fidelity and security evaluation.
|
|
70
76
|
- [ ] Define T-SQL types, quoting, catalog binding, identity probes and effective-limit preflight.
|
|
71
77
|
- [ ] Add exact cumulative-update CI services and complete conformance/fault-injection evidence.
|
|
72
|
-
- [ ] Publish an independent dialect profile
|
|
78
|
+
- [ ] Publish an independent dialect profile after its normative T-SQL contract,
|
|
79
|
+
declarative cases, and specification-repository checks are complete.
|
|
80
|
+
- [ ] Require each reference adapter to pass the relevant evidence gate before
|
|
81
|
+
claiming Microsoft SQL Server support.
|
|
73
82
|
- [ ] Evaluate Azure SQL identities separately; do not inherit a SQL Server claim implicitly.
|
|
74
83
|
|
|
75
84
|
## 9. Next release dependency order
|
|
76
85
|
|
|
77
|
-
The
|
|
78
|
-
|
|
79
|
-
|
|
86
|
+
The specification release and implementation claims have separate gates. The
|
|
87
|
+
specification defines and publishes the contract first; implementation evidence
|
|
88
|
+
follows and does not block specification publication.
|
|
80
89
|
|
|
81
90
|
1. [x] Merged Transformation Plan and SPSS Frontend profile 0.2 as
|
|
82
91
|
unreleased, release-candidate work for the planned specification `v0.3.0`.
|
|
83
|
-
2. [ ]
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
3. [ ]
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
gates. Only after those gates pass and release-tag signing or protection is
|
|
91
|
-
configured, create a signed or protected `v0.3.0` tag on that commit.
|
|
92
|
+
2. [ ] Complete and review the normative `v0.3.0` documents, schemas,
|
|
93
|
+
declarative fixtures, and hashes; select the exact release commit and pass
|
|
94
|
+
this repository's validation and CI on that commit.
|
|
95
|
+
3. [ ] After confirming release-tag signing or protection, create a signed or
|
|
96
|
+
protected `v0.3.0` tag on that commit, require its exact tag-context CI run
|
|
97
|
+
to pass, and follow the [release checklist](RELEASING.md) draft and control
|
|
98
|
+
verification before publishing the immutable release.
|
|
92
99
|
Until then claims use `release_candidate`, a null release identifier, and
|
|
93
100
|
the exact tested commit.
|
|
101
|
+
4. [ ] Have Python pin the exact specification commit and, once published,
|
|
102
|
+
record its `v0.3.0` release identifier; rebase conditional transformations
|
|
103
|
+
on the lifecycle implementation and pass the combined service and
|
|
104
|
+
conformance gates before making an adapter claim or package release.
|
|
105
|
+
5. [ ] Have PHP pin the exact specification commit and, once published, record
|
|
106
|
+
its `v0.3.0` release identifier; migrate to the canonical transformation plan
|
|
107
|
+
and pass the relevant conformance cases before making an adapter claim or
|
|
108
|
+
package release.
|
|
94
109
|
|
|
95
110
|
The pending in-place service matrix and adapter conformance work in sections 6
|
|
96
|
-
and 7
|
|
97
|
-
|
|
111
|
+
and 7 are downstream implementation gates. They do not block the `v0.3.0`
|
|
112
|
+
specification release, and publishing the specification does not complete those
|
|
113
|
+
implementation evidence gates.
|
|
98
114
|
|
|
99
115
|
## Maintainer setup
|
|
100
116
|
|
|
@@ -108,5 +124,11 @@ These are maintainer actions, not implementation tasks for the specification rep
|
|
|
108
124
|
- [x] Register and publish the OpenStatSpec PHP package through Packagist. The
|
|
109
125
|
public package establishes the registry setup; repository update ownership
|
|
110
126
|
still needs release-process verification.
|
|
111
|
-
- [
|
|
112
|
-
|
|
127
|
+
- [x] Define the specification release tag convention and maintainer checklist in
|
|
128
|
+
[RELEASING.md](RELEASING.md); the repository release maintainer with repository-admin responsibility owns release-process controls.
|
|
129
|
+
- [x] Protect the default branch and release tags. main requires pull requests,
|
|
130
|
+
successful specification CI, and resolved conversations; force pushes and
|
|
131
|
+
deletion are disabled, and these controls apply to administrators. The active
|
|
132
|
+
v* tag ruleset permits bypass only to repository administrators. GitHub
|
|
133
|
+
Actions use full-SHA, GitHub-owned actions, and merged head branches are
|
|
134
|
+
automatically deleted.
|