All notable changes to this reference implementation are documented here.
This minor release adds the explicitly selected optional official SPSS Frontend 0.3 and changes emitted Python schema-extension identifiers. Older readers cannot load the new IDs; upgrade consumers before using new compiler output.
- Implement explicitly selected official SPSS Frontend 0.3 over unchanged
Plan 0.1/0.2 through the shared parser/binder, with a strict
compile_spss_requestboundary and opt-in live apply provenance. Support comments, dictionary-orderTO, grouped commands, finite open RECODE ranges, additive ordered typed labels, inequality aliases, and canonical NOT lowering. Precedence is comparisons → NOT → AND → OR; parentheses override it. Tests cover all 90 effective normative cases plus request boundaries and in-place SQLite identity/metadata/audit/no-artifact checks. Default APIs and Python extension support/rejections remain unchanged.
- Namespace new Python schema-change plans and SPSS output as
openstatspec-python-schema-change-plan-v0.1andopenstatspec-python-schema-change-spss-v0.1, retaining exported constant names. The formeropenstatspec-transformation-plan-v0.3remains accepted as a legacy Python extension with unchanged semantics, canonical JSON, and hashes; stored audits are not migrated. New compilation changes schema-plan hashes. - Clarify that specification
v0.5.0has no official Plan 0.3. Its syntax-only Frontend 0.3 over Plan 0.1/0.2 is separate from Python schema extensions. Legacy acceptance and Python extension tests do not claim official conformance. See compatibility and migration.
The specification remains pinned to released v0.5.0 at exact commit
864e84479f554b8ee250ffed44c4dfb963750d4a; the required SPSS codec remains
openstatspec-pyspssio==0.5.1.post2. No catalog migration, dependency change,
new database support, or optional Transformation Workflow 0.3 implementation
is included.
- Preserve other variables' shared value labels when replacing one variable's
labels. Reject deletion of variables referenced by published derived lineage
before any plan mutation, with
variable_has_dependents. - Enable and verify SQLite foreign keys on in-place apply connections.
- Read export values, dictionary metadata, import fidelity events and validation reflection from one native database snapshot; close it before writing SAV/ZSAV.
- Scope transformation label reads to the target variable's dataset. Unrelated malformed labels no longer fail the operation; malformed target-linked labels still fail, and shared/foreign-owned linked label sets remain supported.
- Remove quadratic suffix/name scans from canonical-plan binding and reuse one canonical plan encoding/hash per public canonical or SPSS apply.
- Remove redundant full case-row dictionary collections from database reads and imports. Results remain buffered; this is not a streaming API.
- Avoid the discarded core relation hash during SQLite workflow registration, retaining physical projection validation and derived-parent integrity checks. Execution-time hashes remain required; their loop avoids a redundant tuple copy.
- Document numeric create/replace, RECODE and separately provisioned target recipes, with bounded local SQLite measurements in the transformations manual.
- Remove an unreachable view-creation branch; workflow output remains materialized-only.
The specification pin, engine dependency, database/profile claims, catalog schema, public call signatures and Dolt-owned versioning policy remain unchanged.
- Pin released specification
v0.5.0at exact commit864e84479f554b8ee250ffed44c4dfb963750d4a, with normative statusreleased. Capabilities identify adapter version 0.8.0 and explicitly select SAV/ZSAV 1.0 withdatabase_io_policy=openstatspec-database-io-v1. - Reads, inspection, validation, and SAV/ZSAV export no longer write database
operation/fidelity audit records, including on failure. Export diagnostics
and loss consent remain operation-scoped; export results omit
operation_id. - Default Dolt writes use the packaged tested exact-version policy for 2.2.2 and 2.2.3 without user-supplied evidence files. Unknown/untested versions remain blocked before mutation; explicit external overrides remain strict. Safety budgets are not claimed as proven native server limits.
- Dolt reads no longer require write-version declarations or the write variable-count ceiling. Missing SQLite files are rejected without creation.
- Exact Dolt 2.2.2/2.2.3 CI explicitly runs SELECT-only export success/failure tests using a separate fixture-admin account; normal service permissions and adapter permissions are unchanged. Wheel smoke installs resolve the required engine from PyPI rather than a source checkout.
No optional Transformation Workflow 0.3 implementation is claimed.
- Pinned capability declarations, conformance fixtures, and release validation
to the published OpenStatSpec specification
v0.3.0at exact commitcd8f198c68b849eb8ed018a894670a0904c2181d.
- Added root release workflow support for publishing the normative
openstatspec-specificationcompanion distribution, with independent artifact validation, smoke tests, and PyPI publishing. - Carried the complete 0.6.0 transformation, PostgreSQL, and documentation
work forward into the versioned 0.7.0 release from
main.
- Completed Python parity for bounded in-place SPSS schema transformations: STRING, DELETE VARIABLES, string RECODE width validation, and durable delete/recreate physical-column bindings.
- Added PostgreSQL physical attribute-slot preflight and real-service regression coverage for delete/recreate at the column limit.
- Schema-changing SPSS plans use the v0.3 contract and fail closed for unsupported STRING/DELETE variable ranges.
- Removed the temporary
*_catalogcompatibility schema and made SAV/ZSAV import, validation, export, fidelity reporting, and in-place metadata edits use the normative UUID-keyed OpenStatSpec catalog exclusively. - Existing databases that contain former compatibility relations must be remediated manually before further operations.
- Imports now reject dataset names that collide with normative UUID identifiers, cleanup drops only a physical table actually created by the failing import, and non-preserved SPSS compatible variable names are reported as an explicit loss requiring export consent.
- Added bounded typed expressions with variable references, numeric literals,
parentheses,
=,<,<=,>,>=,AND, andOR. String comparison and v0.2 string assignment fail closed pending exact portable semantics. - Added sequential SPSS-like
COMPUTEandIFassignment operations plusFORMATS,VARIABLE LEVEL, andEXECUTE. - Added atomic numeric target creation on SQLite and PostgreSQL. MySQL,
MariaDB, and Dolt fail closed on
target_mode=create; their targets must be provisioned physically and in the catalog by a separate versioned stage before this executor applies assignment and metadata operations. - Added synthetic exact-program, catalog, failure-boundary, and pre-existing target regression coverage.
- Bumped the canonical transformation-plan and SPSS frontend contracts to
v0.2; canonical JSON and hashes include every sequential operation. - In-place apply records variable label, value labels,
Fprint/write format, and measurement level only in the normative catalog. - Dolt still requires an exact branch, exact HEAD, and clean working set;
successful apply leaves an inspectable diff and never calls
DOLT_COMMIT. - Dolt declaration validation is implemented by the Python adapter. The specification remains a language-neutral source of JSON contracts and fixtures and is not installed as a Python distribution.
- Release validation is pinned to the untagged OpenStatSpec specification
release candidate at immutable commit
f2fdf687d8cb32b944ca55a3e9e7215ffc603019. Itsspecification_releaseremains null until that commit receives a stable tag.
- Added a public canonical transformation-plan in-place API accepting either typed plan objects or strictly validated mappings.
- Added apply-plan and install-in-place-schema CLI workflows alongside the compatible apply-spss command.
- Added explicit audit provenance distinguishing canonical plan documents from SPSS syntax sources.
- Added a transformation manual covering the canonical core, frontend boundary, execution invariants, CLI/API workflows, and extension rules.
- Moved the SPSS parser, binder, compiler, and convenience execution adapter to the dedicated openstatspec.frontends.spss package.
- Kept openstatspec.transform language-neutral with canonical plan, schema, and live-schema validation modules while preserving previous SPSS import paths.
- Reserved empty Stata and SAS frontend directories without exposing parsers, capabilities, CLI choices, or support claims.
- Strengthened pre-mutation target-type checks and target-scoped physical table identity guards. The executor continues to modify the same dataset and table without creating OpenStatSpec rollback, copy, snapshot, or history layers.
- Conformance and release validation continue to use OpenStatSpec specification release v0.2.0 at exact commit 79339ec3d8f8aa81789b7e85f6b8afa6f1374e50.
- Added a bounded SPSS-like
RECODE,VARIABLE LABELS, andVALUE LABELSparser with stable diagnostics and conformance fixtures. - Added canonical Transformation Plan serialization, RFC 8785 hashes, schema binding, deterministic typed operations, and an agent-facing CLI/API.
- Added product-neutral in-place execution with same dataset/table identity, direct data and metadata mutation, and compact operation audit. Dolt adds expected branch/HEAD and clean-working-set checks.
- Version history, diff, rollback, restoration, and commit remain database
responsibilities; the transformer creates no derived/copy/snapshot/recovery
layer and performs no
DOLT_COMMIT. - SQL server support now distinguishes conservative family claims from exact CI evidence: PostgreSQL 17.x/18.x at 17.10/18.4, MySQL 8.4.x/9.7.x at 8.4.11/9.7.2, and MariaDB 11.4.x/11.8.x/12.3.x at 11.4.12/11.8.8/12.3.2. Each service job verifies the live normalized version.
- Dolt remains an independent core profile, now claiming canonical stable
versions
>=2.2.2,<2.3.0and running its complete service suite at exact versions 2.2.2 and 2.2.3 from immutable container-image pins. SQLite retains its core>=3.24.0,<4.0.0and optional workflow>=3.35.0,<4.0.0tiers. MSSQL remains unsupported and roadmap-only.
- CI, release validation, and machine-readable capabilities use OpenStatSpec
specification release
v0.2.0at exact commit79339ec3d8f8aa81789b7e85f6b8afa6f1374e50.
This release extends the reference adapter while keeping imported source datasets immutable and all unsupported paths fail-closed.
- An optional SQLite-only Transformation Workflow for immutable, versioned, parameterized SELECT definitions; materialized derived datasets; lineage and weights; public catalog APIs; and CLI operations.
- An independent Dolt core SQL profile for exact product version 2.2.2, with service-backed coverage, conservative adapter limits, complete compensating cleanup, and pre-DDL rejection of unsupported values. Transformation Workflow support on Dolt is not claimed.
- SAV and ZSAV validation now rewrites legacy compatible names consistently across type-2 records and subtype-13/subtype-14 long-name metadata.
- Transformation publication, interrupted-run reconciliation, retirement, and physical-removal recovery now preserve auditable state and fail closed on catalog or relation drift.
- Release automation builds distributions before test-only source checkouts and supports idempotent rebuilds of an existing release tag.
- CI and release validation are pinned to OpenStatSpec specification release
v1.0.0-rc.1at exact commitfef0dc6f4b17ff7141dad3f49d0524c63efbfed5.
First public reference implementation of the OpenStatSpec strict wide-table SPSS profile.
- Import of unencrypted SAV and ZSAV sources into one dedicated wide SQL table and its metadata catalog.
- Export of supported dataset semantics to SAV and ZSAV.
- SQLite, PostgreSQL, MySQL, and MariaDB profiles, including service-backed PostgreSQL 17/18, MySQL 8.4/9.7, and MariaDB 11.4/11.8/12.3 CI coverage.
- Read-only positive Dolt identity and working-set inspection. Operational Dolt writes use adapter-owned declaration validation and remain fail-closed because the adapter ships no concrete declaration claim. The specification remains language-neutral and is consumed only as JSON contracts and fixtures.
- Added explicit packaged/directory conformance-source injection and exact single-match binding across active Dolt product version, adapter implementation and version, and specification commit before mutation.
- Explicit catalog initialization/migration through
initialize_catalogandopenstatspec init; data operations never auto-create catalog relations. - Read-only Dolt working-set evidence through
dolt_state_snapshotandopenstatspec dolt-state; core performs no Dolt version-control mutations. - Preflight checks for target profile limits, atomic imports, validation, a command-line interface, and machine-readable capability and loss reports.
- This release promises semantic round-trip equivalence only for supported features; it never promises byte-identical SAV/ZSAV output.
- The adapter requires explicit
allow_lossconsent before exporting known unsupported or lossy dictionary semantics. - Multiple-response sets, variable alignment, variable sets, and custom attributes have explicit capability diagnostics; see the SAV profile.
- Encrypted SPSS files are not supported.
- Dolt adapter-envelope values are not claims about Dolt server limits. Failure recovery is compensating and reports deterministic residual inventory; a verified catalog receives a best-effort failed-operation audit when cleanup itself fails.
- Export publication uses a durable, audit-recorded prior-file backup through SQL finalization. Post-success backup retention is reported separately and does not rewrite a successful export as failed; pre-success failures restore the prior destination and close the running operation as failed.