Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

## [Unreleased]

### Changed

- Updated the installed and exact CI-tested `openstatspec/spss-sav` codec from
3.0.2 to 3.0.3, and aligned the reported engine identity and codec
documentation with the separately versioned OpenStatSpec package.
- Made the transformation capability boundary explicit: the current PHP API uses the package-local legacy `openstatspec-transformation-plan-v1` contract and does not yet claim official Transformation Plan or SPSS Frontend profile 0.1/0.2 conformance.

## [0.4.0] - 2026-07-31

### Added
Expand Down
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,7 @@ Pass only loss codes consciously accepted for that conversion. `operation_catalo
- `src/Spss` - SAV/ZSAV gating, typed V3 engine bridge and public adapter API.

See [docs/architecture.md](docs/architecture.md) for the complete relational contract.
See [docs/transformations.md](docs/transformations.md) for the canonical
transformation plan, frontend boundaries, in-place guarantees, supported
syntax, and development commands.
See [docs/transformations.md](docs/transformations.md) for the current package-local legacy transformation plan, frontend boundaries, in-place guarantees, supported syntax, and the required migration path to the official OpenStatSpec plan profiles. The capability declaration exposes no official plan or frontend contract claim yet.

## Upgrading an existing catalogue

Expand Down
6 changes: 6 additions & 0 deletions docs/transformations.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

## Purpose and boundary

> Status: this PHP layer currently uses the package-local legacy contract
> `openstatspec-transformation-plan-v1`. It does not claim conformance with
> OpenStatSpec Transformation Plan or SPSS Frontend profile 0.1 or 0.2.
> Migration to official 0.1 is required before the additive 0.2 conditional
> profile can be implemented or claimed.

The transformation layer applies small, deterministic edits to an existing
OpenStatSpec dataset. Its canonical `TransformationPlan`, validation, and SQL
executor do not depend on SPSS, Stata, SAS, or another statistics package.
Expand Down
11 changes: 11 additions & 0 deletions src/Core/CapabilityDeclaration.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use OpenStatSpec\Sql\PdoSqlProfile;
use OpenStatSpec\Sql\PostgreSqlProfile;
use OpenStatSpec\Sql\SqliteProfile;
use OpenStatSpec\Transformation\Model\TransformationPlan;
use PDO;

/** Machine-readable SPSS 1.0 and SQL-profile capability declaration. */
Expand Down Expand Up @@ -54,6 +55,16 @@ public function toArray(): array
'maximum_source_file_bytes' => null,
'limit_basis' => 'runtime_memory_limit',
],
'transformation_contracts' => [
'status' => 'legacy_contract_only',
'legacy_plan_contracts' => [TransformationPlan::CONTRACT],
'official_plan_contracts' => [],
'official_frontend_contracts' => [],
'migration_order' => [
'openstatspec-transformation-plan-v0.1',
'openstatspec-transformation-plan-v0.2',
],
],
'active_connection' => [
'profile' => $activeProfile,
'server_version' => $serverVersion,
Expand Down
10 changes: 10 additions & 0 deletions tests/Core/CapabilityDeclarationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,16 @@ public function testDeclarationIsMachineReadableAndIncludesEveryProfileLimit():
'maximum_source_file_bytes' => null,
'limit_basis' => 'runtime_memory_limit',
], $declaration['resource_behavior']);
self::assertSame([
'status' => 'legacy_contract_only',
'legacy_plan_contracts' => ['openstatspec-transformation-plan-v1'],
'official_plan_contracts' => [],
'official_frontend_contracts' => [],
'migration_order' => [
'openstatspec-transformation-plan-v0.1',
'openstatspec-transformation-plan-v0.2',
],
], $declaration['transformation_contracts']);
self::assertSame('3.0.3', $declaration['engine']['active_version']);
self::assertSame('>=3.0.0 <4.0.0', $declaration['engine']['claimed_version_range']);
self::assertSame(['3.0.3'], $declaration['engine']['ci_tested_versions']);
Expand Down