diff --git a/CHANGELOG.md b/CHANGELOG.md index e5508ed..9459367 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.7.1] - 2026-09-07 + +### Changed + +- Updated the installed and exact CI-tested `openstatspec/spss-sav` codec from + 3.0.3 to 3.1.1 and aligned engine capability declarations and conformance tests. +- No adapter API, specification pin, or database support changes. + ## [0.7.0] - 2026-09-07 ### Changed diff --git a/README.md b/README.md index c6c53fd..15416e3 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ It imports an unencrypted SPSS `.sav` or `.zsav` dataset into a relational datab ## Status -PHP v0.7.0 targets released OpenStatSpec specification `v0.5.0` at immutable +PHP v0.7.1 targets released OpenStatSpec specification `v0.5.0` at immutable commit `864e84479f554b8ee250ffed44c4dfb963750d4a` (`specification_status: released`). Composer derives the package version from its Git tag; it is independent of the specification version. diff --git a/composer.lock b/composer.lock index 98b6fd5..4e6374e 100644 --- a/composer.lock +++ b/composer.lock @@ -67,16 +67,16 @@ }, { "name": "openstatspec/spss-sav", - "version": "3.0.3", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/OpenStatSpec/php-spss.git", - "reference": "6c42f7273c741c4117a841cd767eb4434ac92a4b" + "reference": "249f8a0b3a46dc503cc24f42a5c8f629e421a60b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OpenStatSpec/php-spss/zipball/6c42f7273c741c4117a841cd767eb4434ac92a4b", - "reference": "6c42f7273c741c4117a841cd767eb4434ac92a4b", + "url": "https://api.github.com/repos/OpenStatSpec/php-spss/zipball/249f8a0b3a46dc503cc24f42a5c8f629e421a60b", + "reference": "249f8a0b3a46dc503cc24f42a5c8f629e421a60b", "shasum": "" }, "require": { @@ -87,7 +87,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.95", - "infection/infection": "^0.34", + "infection/infection": "^0.34 || ^0.35", "php-parallel-lint/php-parallel-lint": "^1.4", "phpstan/phpstan": "^2.2", "phpstan/phpstan-phpunit": "^2.0", @@ -213,7 +213,7 @@ "issues": "https://github.com/OpenStatSpec/php-spss/issues", "source": "https://github.com/OpenStatSpec/php-spss" }, - "time": "2026-08-03T08:08:43+00:00" + "time": "2026-09-07T18:47:21+00:00" } ], "packages-dev": [ @@ -4735,5 +4735,5 @@ "platform-overrides": { "php": "8.4.1" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/docs/release-readiness.md b/docs/release-readiness.md index 2dcde38..e59b67a 100644 --- a/docs/release-readiness.md +++ b/docs/release-readiness.md @@ -1,6 +1,6 @@ # PHP adapter release readiness -This page records the release contract for PHP adapter v0.7.0. It does not mean +This page records the release contract for PHP adapter v0.7.1. It does not mean that a package tag or Packagist publication has happened. Composer derives the package version from the Git tag; `composer.json` has no `version` key. @@ -11,7 +11,7 @@ released OpenStatSpec specification `v0.5.0` at exact commit `864e84479f554b8ee250ffed44c4dfb963750d4a`, with `specification_status: released`. -Release v0.7.0 selects `database_io_policy: openstatspec-database-io-v1`. +Release v0.7.1 selects `database_io_policy: openstatspec-database-io-v1`. SAV/ZSAV export is database-read-only, including failures, and no longer returns `SpssExportResult::operationId` or writes operation/fidelity audit records. Initialize or upgrade the catalogue with `SpssAdapter::migrateCatalog()` using a @@ -32,7 +32,7 @@ caller-owned Dolt commit rules remain unchanged; see the ## Required gates -Before tagging v0.7.0: +Before tagging v0.7.1: 1. Verify `git rev-parse HEAD` in the specification checkout equals `864e84479f554b8ee250ffed44c4dfb963750d4a`, and the published `v0.5.0` tag @@ -68,8 +68,8 @@ Before tagging v0.7.0: 7. Confirm README, changelog, and release notes agree on the exact specification pin, breaking export changes, initialization requirement, and Dolt defaults. Run `composer install --dry-run --no-dev` and - `composer archive --format=zip --dir=/tmp/openstatspec-php-v070-package`; + `composer archive --format=zip --dir=/tmp/openstatspec-php-v071-package`; inspect the archive without publishing it. No separate build is required. 8. Publication is a separate maintainer action: create and verify annotated - tag `v0.7.0` on the reviewed `main` commit, publish the GitHub release, and + tag `v0.7.1` on the reviewed `main` commit, publish the GitHub release, and confirm Packagist installation. Do not infer publication from this checklist. diff --git a/src/Spss/PhpSpssEngine.php b/src/Spss/PhpSpssEngine.php index 9f6a45a..3766e62 100644 --- a/src/Spss/PhpSpssEngine.php +++ b/src/Spss/PhpSpssEngine.php @@ -17,7 +17,7 @@ final class PhpSpssEngine implements SpssEngine public const READER_CLASS = 'SPSS\\Sav\\Reader'; public const WRITER_CLASS = 'SPSS\\Sav\\Writer'; public const CLAIMED_VERSION_RANGE = '>=3.0.0 <4.0.0'; - public const CI_TESTED_VERSIONS = ['3.0.3']; + public const CI_TESTED_VERSIONS = ['3.1.1']; public function isAvailable(): bool { diff --git a/tests/Core/CapabilityDeclarationTest.php b/tests/Core/CapabilityDeclarationTest.php index cbeb396..9cba19f 100644 --- a/tests/Core/CapabilityDeclarationTest.php +++ b/tests/Core/CapabilityDeclarationTest.php @@ -63,9 +63,9 @@ public function testDeclarationIsMachineReadableAndIncludesEveryProfileLimit(): ); self::assertArrayNotHasKey('legacy_plan_contracts', $contracts); self::assertFalse(class_exists(\OpenStatSpec\Transformation\Model\TransformationPlan::class)); - self::assertSame('3.0.3', $declaration['engine']['active_version']); + self::assertSame('3.1.1', $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']); + self::assertSame(['3.1.1'], $declaration['engine']['ci_tested_versions']); self::assertTrue($declaration['engine']['claimed_supported']); self::assertNotEmpty($declaration['required_capabilities']); foreach ($declaration['required_capabilities'] as $supported) { diff --git a/tests/Integration/OfficialSpssConformanceManifestTest.php b/tests/Integration/OfficialSpssConformanceManifestTest.php index ac3540c..6e06ddf 100644 --- a/tests/Integration/OfficialSpssConformanceManifestTest.php +++ b/tests/Integration/OfficialSpssConformanceManifestTest.php @@ -134,7 +134,7 @@ private function assertRequiredCapabilities(array $manifest, SpssAdapter $adapte self::assertTrue($declaration['active_connection']['claimed_supported'], $profile . ': active server version is outside the claimed profile'); self::assertSame($declaration['sql_profiles'][$profile]['claimed_server_versions'], $declaration['active_connection']['matched_claim']); self::assertTrue($declaration['engine']['claimed_supported']); - self::assertSame(['3.0.3'], $declaration['engine']['ci_tested_versions']); + self::assertSame(['3.1.1'], $declaration['engine']['ci_tested_versions']); self::assertContains($profile, array_keys($declaration['sql_profiles'] ?? [])); self::assertContains('import', $declaration['directions'] ?? []); self::assertContains('export', $declaration['directions'] ?? []); diff --git a/tests/Spss/SpssAdapterTest.php b/tests/Spss/SpssAdapterTest.php index 89a63ff..a05a795 100644 --- a/tests/Spss/SpssAdapterTest.php +++ b/tests/Spss/SpssAdapterTest.php @@ -51,10 +51,10 @@ public function testComposerInstallsTheOfficialPhpSpssV3Engine(): void self::assertTrue(class_exists(Dataset::class)); self::assertSame([ 'package' => 'openstatspec/spss-sav', - 'version' => '3.0.3', - 'active_version' => '3.0.3', + 'version' => '3.1.1', + 'active_version' => '3.1.1', 'claimed_version_range' => '>=3.0.0 <4.0.0', - 'ci_tested_versions' => ['3.0.3'], + 'ci_tested_versions' => ['3.1.1'], 'claimed_supported' => true, ], (new PhpSpssEngine())->identity()); }