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
29 changes: 28 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# Changelog

## [0.7.2] - Unreleased

### Fixed

- Preserve finite binary64 precision in SQLite case values and compression bias,
and in affected multiple-response counted-value metadata writes.
- Fail imports on SQL errors even when the supplied PDO uses silent or warning
mode, restoring the caller's error mode afterward. Reject caller-owned active
transactions before import mutation.
- Finalize SQLite/PostgreSQL import audit success inside the native import
transaction, so finalization failure rolls back the attempt. Retain the
MySQL/MariaDB/Dolt ownership-scoped cleanup and finalization compensation.

### Performance

- Send PostgreSQL and MySQL/MariaDB/Dolt case INSERTs in bounded prepared batches,
respecting parameter/packet budgets and preserving preflight-valid oversized
singleton rows, case order, NULLs, strings and numeric precision.
- Load canonical and legacy export dictionary children and set members with
dataset-scoped grouped queries instead of per-variable/per-set queries.
Export remains database-read-only and observes fresh metadata on every call.

Existing import/export call forms, dependencies, specification pin, database
support claims and catalog schema remain unchanged. Catalog preparation and
ownership checks are retained; this patch requires no new migration.

## [0.7.1] - 2026-09-07

### Changed
Expand Down Expand Up @@ -129,7 +155,8 @@
- Pinned active conformance fixtures and capabilities to released OpenStatSpec
specification v0.1.0 at commit `d287c2cde9ade71f04e27dd012caec876901aed5`.

[Unreleased]: https://github.com/OpenStatSpec/php/compare/v0.6.0...HEAD
[0.7.2]: https://github.com/OpenStatSpec/php/compare/v0.7.1...HEAD
[0.7.1]: https://github.com/OpenStatSpec/php/compare/v0.7.0...v0.7.1
[0.7.0]: https://github.com/OpenStatSpec/php/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/OpenStatSpec/php/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/OpenStatSpec/php/compare/v0.4.0...v0.5.0
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ It imports an unencrypted SPSS `.sav` or `.zsav` dataset into a relational datab

## Status

PHP v0.7.1 targets released OpenStatSpec specification `v0.5.0` at immutable
PHP v0.7.2 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.
Expand Down
58 changes: 47 additions & 11 deletions docs/release-readiness.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
# PHP adapter release readiness

This page records the release contract for PHP adapter v0.7.1. It does not mean
This page records the release contract for PHP adapter v0.7.2. 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.

## Patch scope

Version 0.7.2 includes the merged import precision/error/transaction fixes,
bounded server INSERT batching and grouped export metadata reads described in
[the release notes](../CHANGELOG.md). Dependencies, specification pin, SQL support
and catalog schema are unchanged. Export still requires a ready, owned catalog;
initialize or upgrade it with `SpssAdapter::migrateCatalog()` on a write-capable
deployment connection before export when needed. This patch adds no migration
or setup for an already prepared current catalog.
Run the gates below on the exact selected patch release commit, not an earlier
0.7.1 commit.

## Specification pin and claims

The machine-readable capability declaration and every CI fixture checkout use
released OpenStatSpec specification `v0.5.0` at exact commit
`864e84479f554b8ee250ffed44c4dfb963750d4a`, with
`specification_status: released`.

Release v0.7.1 selects `database_io_policy: openstatspec-database-io-v1`.
Release v0.7.2 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
Expand All @@ -30,9 +42,24 @@ contracts are not implemented or claimed. Existing target pre-provisioning and
caller-owned Dolt commit rules remain unchanged; see the
[transformation migration notes](transformations.md#v060-migration).

## Required gates
## 0.7.2 local preparation verification

On PHP 8.5.9, PHPUnit 11.5.56 and the exact v0.5.0 specification checkout,
without configured database services:

- `composer check` passed strict validation, lint, style, PHPStan and PHPUnit:
**615 tests, 10,468 assertions, 112 skipped**.
- `composer install --dry-run --no-dev` and a disposable ZIP archive inspection
passed. Required source, lockfile and release notes were present; `.git` and
`vendor` were absent.
- A clean extraction installed production dependencies from the unchanged lock
(including codec 3.1.1), and the adapter/batch classes autoloaded successfully.
This checks the archive, not future Packagist version resolution.

Before tagging v0.7.1:
This is local candidate evidence, not final release-commit service CI or
publication evidence. No v0.7.2 tag or registry publication was made.

## Before tagging v0.7.2

1. Verify `git rev-parse HEAD` in the specification checkout equals
`864e84479f554b8ee250ffed44c4dfb963750d4a`, and the published `v0.5.0` tag
Expand Down Expand Up @@ -65,11 +92,20 @@ Before tagging v0.7.1:
PostgreSQL, MySQL, MariaDB, and Dolt matrix entry. Each service filter must
include both official in-place test classes; the Dolt filter must also
include `DoltReadOnlyExportTest`.
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-v071-package`;
7. Confirm README, changelog, and release notes agree on this patch's fixes,
unchanged specification pin, initialization requirement and Dolt defaults.
Finalize the 0.7.2 changelog date and comparison link before selecting the
final release commit. Run `composer install --dry-run --no-dev` and
`composer archive --format=zip --dir="$(mktemp -d /tmp/openstatspec-php-v072-package.XXXXXX)"`;
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.1` on the reviewed `main` commit, publish the GitHub release, and
confirm Packagist installation. Do not infer publication from this checklist.
8. Confirm the selected commit's full CI matrix, protected-tag controls and
Packagist update access.

## Publication (separate maintainer action)

1. Create and verify annotated tag `v0.7.2` on the reviewed `main` commit that
passed the gates above. Do not move an existing tag.
2. Wait for tag-context CI before publishing the GitHub release.
3. Confirm Packagist lists the new version and a clean
`composer require openstatspec/php:0.7.2` resolves it to the intended commit.
Do not infer publication from this checklist.