Repository navigation
Troubleshooting
Install/enable the PHP Zip extension.
The server workspace requires Zip because it processes source ZIP archives and portable .spkg14 packages.
The health endpoint reports the same requirement.
Inspect the JSON response. Required checks include:
- PHP >= 8.2
- Sodium
- Zip
random_bytes()- writable/initializable storage
PDO MySQL is reported as optional in the current health endpoint.
A common deployment issue is missing SPK_NAME_PEPPER in PHP's environment.
Current V14 behavior includes a fallback that generates:
storage/secrets/name-pepper.bin
with a random 256-bit value and restrictive permissions.
For production, configure an explicit secret instead of depending on the fallback.
V14.1.0 fixed a V13 builder/parser schema mismatch where key slots lacked the required type and version fields.
Verify that the deployed browser client contains:
primary: type=password-pattern, version=1
recovery: type=recovery, version=1
This is expected when authenticated metadata or ciphertext was modified.
V14 verifies:
- header binding
- manifest authentication
- completion record
- ciphertext hashes
- Merkle root
- stream authentication
A changed package is supposed to fail closed.
V14 intentionally uses a fail-on-existing-path restore policy.
Choose a new destination rather than allowing the application to overwrite an existing tree.
Check the archive and V14 limits.
Relevant current limits include:
- upload: 1 TiB
- upload chunk: 8 MiB
- single input file: 16 GiB
- total archive plaintext: 100 GiB
- V14 total plaintext: 100 GiB
- V14 nodes: 100,000
- V14 blobs: 100,000
Also check available disk space and PHP process/resource limits.
The runtime can still expose the application code, but the documented development/release gates use Composer.
Install Composer in the development/release environment before relying on:
composer validate --strict --no-check-publish
composer install --no-interaction --prefer-dist --no-progress
composer audit --no-interactionDo not generate a fake lockfile just to satisfy CI.
The verifier supports two trust modes.
Without an external key:
embedded-key verification
checks self-consistency only.
For independent trust, configure:
SECURE_PACKAGE_TRUSTED_RELEASE_KEY_HEX=<64-hex-public-key>
The V14 recovery key is deliberately not recoverable from the package.
If the password/pattern is also unavailable, the package is intentionally designed to remain inaccessible.
This is a security property, not a missing convenience feature.
Use the cleanup helper and inspect the temporary storage tree:
php bin/cleanup.phpOperational environments should schedule cleanup of expired upload, job, access-token, and restore-token state according to their deployment model.
Run the same checks locally where possible:
php bin/self-check.php
php bin/source-audit.php
php bin/security-test.php --full
composer validate --strict --no-check-publish
composer audit --no-interactionAlso verify that CI has PHP Zip enabled and that a real committed composer.lock exists for release-gated workflows.
Do not publish sensitive exploit details in a public issue before coordinating responsible disclosure. The repository should maintain a clear security contact and disclosure procedure appropriate for the project stage.
Secure Package V14 · SECURE-PKG-V14 · Version 14.1.0 · MIT License · Author: ElmanCod110
This Wiki describes the implementation currently documented by the repository. Security-sensitive behavior should be verified against the active source tree before production deployment.
Start
V14 Engine
Security
Integration
Operations
- Storage and Data Lifecycle
- Deployment
- Testing and Validation
- Release and Supply Chain
- Migration V13 to V14
Contributing