Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
502c9da
Add conditional SPSS transformation profile
TonisOrmisson Aug 3, 2026
1c2871d
Install transformation validator dependencies
TonisOrmisson Aug 3, 2026
1372fd7
Keep conditional profile on the unreleased v0.3.0 line
TonisOrmisson Aug 3, 2026
52760a5
Clarify v0.3.0 release-candidate provenance [skip ci]
TonisOrmisson Aug 3, 2026
fbd1a2c
Mark transformation profile 0.2 as release-candidate [skip ci]
TonisOrmisson Aug 3, 2026
b527606
Clarify plan 0.2 release-candidate status [skip ci]
TonisOrmisson Aug 3, 2026
8255061
Clarify frontend 0.2 release-candidate status [skip ci]
TonisOrmisson Aug 3, 2026
b56eb9a
Make profile 0.2 release status explicit
TonisOrmisson Aug 3, 2026
85567a7
Allow in-place transformation audit contract 0.2
TonisOrmisson Aug 3, 2026
9bc635f
Link binding fixture to compatible audit schema
TonisOrmisson Aug 3, 2026
ec9e17f
Define in-place audit schema migration for binding 0.2
TonisOrmisson Aug 3, 2026
9faa5c0
Define canonical boolean-chain lowering
TonisOrmisson Aug 3, 2026
481ac67
Add canonical three-term boolean plan fixture
TonisOrmisson Aug 3, 2026
540f114
Add three-term AND frontend conformance case
TonisOrmisson Aug 3, 2026
bddd110
Validate audit DDL and canonical boolean chains
TonisOrmisson Aug 3, 2026
5a8c2ff
Align Plan 0.2 boolean canonicalization
TonisOrmisson Aug 3, 2026
31545c7
Permit transactional SQLite audit schema rebuild
TonisOrmisson Aug 3, 2026
d0d79da
Add frontend failure conformance fixtures
TonisOrmisson Aug 3, 2026
4d2e5b2
Enforce frontend failure conformance cases
TonisOrmisson Aug 3, 2026
07cb990
Define deterministic finite-number conversion
TonisOrmisson Aug 3, 2026
20ed939
Cover parenthesized same-operator flattening
TonisOrmisson Aug 3, 2026
15d8911
Enforce parenthesized flattening fixture
TonisOrmisson Aug 3, 2026
a22b647
Add mixed-precedence and numeric conversion plans
TonisOrmisson Aug 3, 2026
dcefb7c
Add mixed-precedence and numeric frontend cases
TonisOrmisson Aug 3, 2026
27b8e4c
Enforce precedence and numeric conversion goldens
TonisOrmisson Aug 3, 2026
0fb3fd5
Add three-term OR and strict greater-than plans
TonisOrmisson Aug 3, 2026
32c2115
Add OR-chain and strict greater-than frontend cases
TonisOrmisson Aug 3, 2026
bb9327d
Enforce OR-chain and greater-than goldens
TonisOrmisson Aug 3, 2026
6afaa3d
Add comparison operand permutation plan
TonisOrmisson Aug 3, 2026
0a3a791
Complete operand and diagnostic frontend coverage
TonisOrmisson Aug 3, 2026
cfc62c6
Enforce operand and diagnostic frontend coverage
TonisOrmisson Aug 3, 2026
d2380d0
Add subnormal and grouped metadata plans
TonisOrmisson Aug 3, 2026
6291af2
Add subnormal and grouped metadata frontend cases
TonisOrmisson Aug 3, 2026
d22b04a
Cover unsupported command-form variants
TonisOrmisson Aug 3, 2026
c80b725
Enforce subnormal and command-form coverage
TonisOrmisson Aug 3, 2026
dd69d3e
Add negative-zero canonical plan
TonisOrmisson Aug 3, 2026
1bea0a2
Add negative-zero frontend golden
TonisOrmisson Aug 3, 2026
3a8d49d
Validate frontend identity and negative zero
TonisOrmisson Aug 3, 2026
97d12f4
Add string assignment rejection plans
TonisOrmisson Aug 3, 2026
b3de86c
Validate plan schema identity and string values
TonisOrmisson Aug 3, 2026
c128e14
Add string target rejection frontends
TonisOrmisson Aug 3, 2026
eb9ef8b
Enforce string target rejection coverage
TonisOrmisson Aug 3, 2026
ebbf668
Add metadata-only v0.1 compatibility case
TonisOrmisson Aug 3, 2026
621ed02
Add variable missing propagation binding case
TonisOrmisson Aug 3, 2026
1f3625e
Validate binding identity and compatibility cases
TonisOrmisson Aug 3, 2026
6f55049
Add variable-label-only v0.1 compatibility golden
TonisOrmisson Aug 3, 2026
7307998
Enforce variable-label v0.1 compatibility
TonisOrmisson Aug 3, 2026
57df5d3
Clarify string measurement-level targets
TonisOrmisson Aug 3, 2026
de7ecb6
Add string measurement-level plan
TonisOrmisson Aug 3, 2026
c4f5f26
Add string measurement-level frontend
TonisOrmisson Aug 3, 2026
097cf59
Enforce string measurement-level behavior
TonisOrmisson Aug 3, 2026
65c9b69
Add nested boolean rejection plan
TonisOrmisson Aug 3, 2026
6bb8c2a
Enforce non-empty binding actor
TonisOrmisson Aug 3, 2026
527a0e7
Enforce actor and canonical boolean rejection
TonisOrmisson Aug 3, 2026
ac066c7
Validate successful plan links and atomic create binding
TonisOrmisson Aug 3, 2026
d40bed1
Add SQLite atomic create-target conformance
TonisOrmisson Aug 3, 2026
2e7e25b
Cover actor and conditional missing semantics
TonisOrmisson Aug 3, 2026
5ded53e
Add actor and missing-value binding goldens
TonisOrmisson Aug 3, 2026
8514d8a
Bind Dolt audit hashes to applied fixtures
TonisOrmisson Aug 3, 2026
6cfa4f7
Specify SQLite audit links and boolean diagnostic
TonisOrmisson Aug 3, 2026
3e25276
fix: complete transformation binding review cases
TonisOrmisson Aug 3, 2026
ecd258a
fix: bind SQLite audit identity
TonisOrmisson Aug 3, 2026
f62b36c
fix: strengthen transformation binding fixtures
TonisOrmisson Aug 3, 2026
28f801c
fix: cover binding edge semantics
TonisOrmisson Aug 3, 2026
8b5bf07
fix: strengthen context and rebuild fixtures
TonisOrmisson Aug 3, 2026
f381a46
fix: supply inequality apply actor
TonisOrmisson Aug 3, 2026
308b883
fix: complete binding apply inputs
TonisOrmisson Aug 4, 2026
6fa2065
fix: supply Dolt rejection context
TonisOrmisson Aug 4, 2026
6ba206a
fix: cover mixed frontend promotion
TonisOrmisson Aug 4, 2026
61e2ed3
Refocus transformation conformance on artifact integrity
TonisOrmisson Aug 4, 2026
1de465a
Strengthen transformation artifact integrity checks
TonisOrmisson Aug 4, 2026
0981434
Link legacy binding conformance fixtures
TonisOrmisson Aug 4, 2026
8d47ce2
Tighten generic transformation integrity invariants
TonisOrmisson Aug 4, 2026
f09cac0
Validate transformation manifest declarations
TonisOrmisson Aug 4, 2026
2a5713a
Preserve published 0.1 conformance manifests
TonisOrmisson Aug 4, 2026
26a001b
Complete transformation audit integrity fixtures
TonisOrmisson Aug 4, 2026
75f3994
Tighten transformation reference declarations
TonisOrmisson Aug 4, 2026
774f6d7
Remove-transformation-conformance-tooling
TonisOrmisson Aug 4, 2026
8f1f750
Integrate-packaged-Dolt-validator-into-transformation-0.2
TonisOrmisson Aug 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,24 @@

## Unreleased

Target stable specification release: `v0.3.0` (not published).

Until a protected or signed `v0.3.0` tag targets this work, implementations MUST identify it with `specification_status: release_candidate`, `specification_release: null`, and the exact immutable specification commit. The entries below do not constitute a stable release.

- Prepared `openstatspec-specification` 0.2.1 with the reusable,
fail-closed Dolt adapter declaration validator and packaged schema resources.
This package update adds no concrete Dolt support declaration.
- Added backward-compatible Transformation Plan and SPSS Syntax Frontend 0.2
contracts for sequential numeric `COMPUTE` and conditional `IF`, bounded
comparison/`AND`/`OR` expressions, `FORMATS`, `VARIABLE LEVEL`, and
`EXECUTE`.
- Defined exact SQL three-valued missing semantics and deterministic complete
plan JSON hashing while preserving every 0.1 contract, fixture, and hash.
- Kept create-target apply fail-closed on MySQL, MariaDB, and Dolt; these
profiles require a separately versioned physical-and-catalog provisioning
action followed by an existing-target apply with no automatic Dolt commit.
- Added independent synthetic golden fixtures, hashes, examples, and repository
validation gates for the new contracts.

## v0.2.0 - 2026-07-31

Expand Down
27 changes: 16 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,18 @@ permits a transformation to mutate a core import.
That separate derived-data profile is not used by the SPSS-like in-place
frontend below.

The [Transformation Plan Profile 0.1](docs/transformation-plan-profile-0.1.md)
adds a canonical, language-neutral operation plan. The
[SPSS Syntax Frontend Profile 0.1](docs/spss-syntax-frontend-profile-0.1.md)
lowers a deliberately small `RECODE`, `VARIABLE LABELS`, and `VALUE LABELS`
subset into that plan. The
[in-place binding](docs/transformation-plan-sql-binding-0.1.md) applies the plan
The release-candidate [Transformation Plan Profile 0.2](docs/transformation-plan-profile-0.2.md)
adds sequential bounded numeric assignment and conditional assignment to the
unchanged 0.1 operations. The
[SPSS Syntax Frontend Profile 0.2](docs/spss-syntax-frontend-profile-0.2.md)
lowers `COMPUTE`, `IF`, `FORMATS`, `VARIABLE LEVEL`, and `EXECUTE`
alongside the 0.1 `RECODE`, `VARIABLE LABELS`, and `VALUE LABELS` subset.
Programs using only the 0.1 subset retain exact 0.1 plan identity and hash. The
[in-place binding](docs/transformation-plan-sql-binding-0.2.md) applies the plan
to the same dataset and same physical wide table on supported SQL profiles. It
creates no derived dataset, data copy, or OpenStatSpec undo layer; Dolt-specific
history and commits remain Dolt's.
history and commits remain Dolt's. MySQL, MariaDB, and Dolt require a new target
to be provisioned separately before an in-place transformation apply.

## Repository layout

Expand All @@ -62,17 +65,19 @@ history and commits remain Dolt's.
- `transformation/plan-0.1.schema.json` — canonical transformation-plan schema.
- `sql/transformation-plan-profile-schema.sql` — compact in-place apply audit;
it is not a dataset-version catalog.
- `conformance/transformation-plan-0.1.json` and
`conformance/spss-syntax-frontend-0.1.json` — plan and frontend conformance
cases with canonical hashes; `conformance/in-place-transformation-0.1.json`
- `conformance/transformation-plan-0.2.json` and
`conformance/spss-syntax-frontend-0.2.json` — additive plan and frontend
conformance cases with independent golden hashes; `conformance/in-place-transformation-0.2.json`
fixes the same-dataset/same-table execution invariants and the additional
controlled Dolt context.
controlled Dolt context. The 0.1 schemas and fixtures remain unchanged.
- `examples/` — small illustrative mapping fixtures.

## Conformance principle

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.

This specification repository publishes only normative Transformation Plan and SPSS syntax frontend schemas, documentation, and declarative fixtures. Executable validation or behavioral conformance code, including parser, SQL-engine, transaction, and adapter behavior, belongs in each implementation or adapter repository.

## Who it is for

OpenStatSpec is for people and projects that need to move statistical datasets between SPSS and relational databases without turning the data into a different model. It is especially relevant to:
Expand Down
9 changes: 9 additions & 0 deletions VERSIONING.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ core source profile. Adding or revising an optional profile does not authorize
changes to core datasets. A breaking workflow-profile change increments that
profile's major version even when the core version is unchanged.

Transformation Plan and frontend contracts are selected by their exact
contract identifiers. An implementation may support multiple versions
simultaneously. It MUST preserve the canonical bytes and hashes of accepted
older plans and MUST NOT silently reinterpret or rewrite an older plan under a
newer schema. A frontend that accepts a newer request contract but receives a
program entirely inside the 0.1 command subset emits the exact 0.1 plan
contract. Explicit recompilation to a newer plan is a new identified operation,
not migration of the old plan or audit row.

The SPSS SAV/ZSAV profile is versioned independently in its document and manifest. A conforming implementation must publish the exact profile version, immutable specification commit, specification status, supported directions, supported SQL profiles, and engine capability declaration it tested.

The immutable commit is mandatory for both release candidates and stable releases. `specification_release` is additive provenance, not an alternative to the commit:
Expand Down
Loading