kumwe / record-values
Portable bounded record values, exact numeric normalization and temporal semantics.
Requires
- php: ^8.5
- php-64bit: *
- ext-json: *
- ext-mbstring: *
- kumwe/conversion: 0.1.5
Requires (Dev)
- ext-zip: *
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^12.0 || ^13.0
- squizlabs/php_codesniffer: ^4.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-12 15:16:04 UTC
README
Bounded portable record values, exact numeric normalization and temporal semantics
under Kumwe\Record\Value.
Installation
Requires 64-bit PHP 8.5 with JSON and mbstring. Pin an exact pre-1.0 release:
composer require kumwe/record-values:0.1.4
Composer declares the exact Conversion dependency. The version badge links published packages; CI reports default-branch package checks. Core integration and independent release verification are separate consumer responsibilities.
Usage and Core contract
require 'vendor/autoload.php'; $instant = \Kumwe\Record\Value\ClientAssertedInstant::fromPortableString('2024-02-29T10:00:00Z'); echo $instant->toPortableString(); // 2024-02-29T10:00:00.000000+00:00
Values and stateless normalization use direct construction. A client instant is a
UTC-normalized claim with microsecond precision; it never replaces server ordering,
expiry, accounting-period or numbering authority. ProtectedRecordValue admits
bounded detached JSON storage; Core retains authenticity, associated-data validation,
key lifecycle and rotation. The marker performs no cryptography or trust validation.
See public API, architecture, integration, test ownership, release record and the standalone consumer.
Development
Requires Node.js 20+ for development schema validation:
npm ci --prefix tools/schema-validator --ignore-scripts composer install composer check
The pinned Ajv2020/YAML gate validates complete canonical manifests and release records with rejection regressions. PHP checks cover behavior/conformance, architecture, static analysis, manifests/governance, audit, dependency identities, release automation and a no-dev classmap-authoritative archive consumer. CI runs PHP 8.5 on Linux. Development tools are excluded from consumer archives.
Published tags remain fixed. See releasing and changelog. Licensed under Apache-2.0.