release: prepare ZUPT 5.2.7 native test gates
This commit is contained in:
parent
6d9f740a2b
commit
cb794e100c
29 changed files with 278 additions and 169 deletions
104
README.md
104
README.md
|
|
@ -1,35 +1,41 @@
|
|||
# ZUPT 5.2.6
|
||||
# ZUPT 5.2.7
|
||||
|
||||
ZUPT is a command-line backup archiver written in C11. It combines the
|
||||
bundled VaptVupt compression codec with authenticated AES-256-CTR +
|
||||
HMAC-SHA256 encryption, native ML-KEM-768/X25519 hybrid encryption, archive
|
||||
integrity checks, multithreaded operation, and a Python/Qt graphical frontend.
|
||||
|
||||
Version 5.2.6 corrects portability defects exposed by the native release gates:
|
||||
macOS and NetBSD use the compiler-resistant volatile secure-wipe fallback
|
||||
instead of assuming an `explicit_bzero` symbol, the source-only scanner handles
|
||||
empty arrays under the system Bash 3.2, and the Windows hostile-path regression
|
||||
passes explicitly encoded bytes to its fixture. The immutable `v5.2.5`
|
||||
candidate was not promoted after exact-tag GitHub Actions run `33434986357`:
|
||||
13 jobs succeeded, while the native Windows and macOS jobs failed. This is a
|
||||
release/test integration correction; it does not change the archive format,
|
||||
cryptography, bundled codec, or SDK ABI. No v5.2.5 evidence transfers
|
||||
automatically to v5.2.6.
|
||||
Version 5.2.7 corrects two test-harness portability defects exposed after the
|
||||
immutable `v5.2.6` tag. Exact-tag GitHub Actions run `33442264243` completed 13
|
||||
jobs successfully, but the native macOS job failed because x86 SHA-NI test
|
||||
helper declarations were unused on arm64 under `-Werror`, and the native
|
||||
Windows job aborted while argv transcoding a safe UTF-8 fixture before its
|
||||
intended assertions. No 5.2.6 assets were promoted. These are release/test
|
||||
integration corrections; they do not change the archive format, cryptography,
|
||||
bundled codec, or SDK ABI. No v5.2.6 evidence transfers automatically to
|
||||
v5.2.7.
|
||||
|
||||
Version 5.2.2 restored the original ZUPT product name and the `zupt` command.
|
||||
The `.zupt` archive extension, format v1.6, magic bytes, codec identifiers, and
|
||||
SDK ABI remain unchanged. An optional `vaptvupt` command alias may be provided
|
||||
for scripts written against versions 3.0.0 through 5.2.1.
|
||||
|
||||
## Corrective changes in 5.2.6
|
||||
## Corrective changes in 5.2.7
|
||||
|
||||
Darwin and NetBSD now select the secure volatile wipe fallback supported by the
|
||||
existing portable implementation; scanner option/path arrays are guarded for
|
||||
Bash 3.2; and the Windows path fixture verifies requested bytes in the archive
|
||||
while rejecting each dangerous raw byte fragment from diagnostic output. All
|
||||
current release paths move to 5.2.6 and require fresh
|
||||
exact-tag hosted CI, package, native-platform, source-only, checksum, OBS, and
|
||||
promotion evidence. The `v5.2.5` tag remains immutable and unpromoted.
|
||||
The SHA-NI regression now keeps x86-only helper declarations out of unsupported
|
||||
arm64 builds, and the safe UTF-8 Windows fixture crosses the argv boundary in a
|
||||
byte-stable representation. All current release paths move to 5.2.7 and require
|
||||
fresh exact-tag hosted CI, package, native-platform, source-only, checksum, OBS,
|
||||
and promotion evidence. The `v5.2.6` tag remains immutable and unpromoted.
|
||||
|
||||
## Corrective changes introduced in 5.2.6
|
||||
|
||||
Darwin and NetBSD select the portable compiler-resistant secure-wipe fallback;
|
||||
scanner option/path arrays are guarded for Bash 3.2; and hostile Windows path
|
||||
fixtures use explicit bytes and reject dangerous raw diagnostic fragments.
|
||||
Those corrections changed release/test integration only. The resulting v5.2.6
|
||||
candidate was not promoted because its next exact-tag run exposed the distinct
|
||||
arm64 SHA-NI helper and safe UTF-8 Windows argv failures described above.
|
||||
|
||||
## Corrective changes introduced in 5.2.5
|
||||
|
||||
|
|
@ -145,9 +151,9 @@ users. Those assets must be built from the tagged source, tested on their target
|
|||
environment, and kept outside Git and the source archive. A format that was not
|
||||
built and tested is not presented as supported.
|
||||
|
||||
## 5.2.6 release artifacts
|
||||
## 5.2.7 release artifacts
|
||||
|
||||
The 5.2.6 release workflow is defined to produce the following files only after
|
||||
The 5.2.7 release workflow is defined to produce the following files only after
|
||||
the corresponding target gate succeeds. `SHA256SUMS` records the exact promoted
|
||||
filenames and digests. The release notes identify the tested commit and the
|
||||
manually dispatched CI run; that run's job definitions and logs are the runtime
|
||||
|
|
@ -156,23 +162,23 @@ skips. This table is not a substitute for that evidence.
|
|||
|
||||
| Format | Intended target and validation boundary |
|
||||
| --- | --- |
|
||||
| `zupt-5.2.6.tar.gz` | Reproducible, source-only archive; scanned twice-built input plus SHA-256. |
|
||||
| `zupt_5.2.6_amd64.deb` | Ubuntu 24.04 amd64 package; install, functional round trip, and uninstall gate. |
|
||||
| `zupt-5.2.6-*.x86_64.rpm` and `.src.rpm` | openSUSE Tumbleweed x86_64 source/binary RPM gate; package inspection, install, round trip, and uninstall. |
|
||||
| `zupt-5.2.6-linux-x86_64.tar.xz` | Linux x86_64 CLI plus the complete public license/notice payload; dependency allowlist and extracted-package functional gate. |
|
||||
| `zupt-gui_5.2.6_all.deb` | Architecture-independent Python/Qt GUI package; exact dependency/payload checks plus installed off-screen GUI/CLI integration gate. |
|
||||
| `zupt-gui-5.2.6-1.noarch.rpm` | Architecture-independent Python/Qt GUI RPM; package inspection plus installed off-screen GUI/CLI integration gate. |
|
||||
| `zupt-gui-5.2.6-1.src.rpm` | Source RPM corresponding exactly to the gated noarch GUI RPM. |
|
||||
| `zupt-gui-5.2.6-portable.zip` | Source-only GUI and launchers with licenses/provenance; source scan, exact member allowlist, and extracted off-screen GUI/CLI gate. |
|
||||
| `zupt-5.2.6-windows-x86_64.zip` | Native Windows x86_64 executable with notices; extracted-ZIP round-trip gate. |
|
||||
| `ZUPT-5.2.6-macOS-*.dmg` | Native macOS image; mounted packaged executable round-trip gate, with the actual architecture in the filename. |
|
||||
| `zupt-5.2.7.tar.gz` | Reproducible, source-only archive; scanned twice-built input plus SHA-256. |
|
||||
| `zupt_5.2.7_amd64.deb` | Ubuntu 24.04 amd64 package; install, functional round trip, and uninstall gate. |
|
||||
| `zupt-5.2.7-*.x86_64.rpm` and `.src.rpm` | openSUSE Tumbleweed x86_64 source/binary RPM gate; package inspection, install, round trip, and uninstall. |
|
||||
| `zupt-5.2.7-linux-x86_64.tar.xz` | Linux x86_64 CLI plus the complete public license/notice payload; dependency allowlist and extracted-package functional gate. |
|
||||
| `zupt-gui_5.2.7_all.deb` | Architecture-independent Python/Qt GUI package; exact dependency/payload checks plus installed off-screen GUI/CLI integration gate. |
|
||||
| `zupt-gui-5.2.7-1.noarch.rpm` | Architecture-independent Python/Qt GUI RPM; package inspection plus installed off-screen GUI/CLI integration gate. |
|
||||
| `zupt-gui-5.2.7-1.src.rpm` | Source RPM corresponding exactly to the gated noarch GUI RPM. |
|
||||
| `zupt-gui-5.2.7-portable.zip` | Source-only GUI and launchers with licenses/provenance; source scan, exact member allowlist, and extracted off-screen GUI/CLI gate. |
|
||||
| `zupt-5.2.7-windows-x86_64.zip` | Native Windows x86_64 executable with notices; extracted-ZIP round-trip gate. |
|
||||
| `ZUPT-5.2.7-macOS-*.dmg` | Native macOS image; mounted packaged executable round-trip gate, with the actual architecture in the filename. |
|
||||
|
||||
An asset absent from the release was not promoted through its mandatory gate.
|
||||
Do not infer support for another distribution release, OS version, CPU
|
||||
architecture, raw UNC/SMB destination, or package manager from a similarly
|
||||
named file. Binary assets are release outputs, never source-build inputs.
|
||||
|
||||
No AppImage is promised for 5.2.6. The inspected upstream type-2 runtime lacked
|
||||
No AppImage is promised for 5.2.7. The inspected upstream type-2 runtime lacked
|
||||
a complete notice/source-relink handoff for every statically linked component,
|
||||
so redistributing it would not meet this release's provenance gate. AppDir and
|
||||
Flatpak bundles and GUI platform installers are likewise outside the promoted
|
||||
|
|
@ -202,8 +208,8 @@ bash tests/test_source_only.sh
|
|||
For a tag or an existing source archive:
|
||||
|
||||
~~~sh
|
||||
bash scripts/check-source-only.sh --tag v5.2.6
|
||||
bash scripts/check-source-only.sh --archive /path/to/zupt-5.2.6.tar.gz
|
||||
bash scripts/check-source-only.sh --tag v5.2.7
|
||||
bash scripts/check-source-only.sh --archive /path/to/zupt-5.2.7.tar.gz
|
||||
~~~
|
||||
|
||||
Unknown `.bin` files fail the scan. A necessary binary data fixture may be
|
||||
|
|
@ -339,7 +345,7 @@ sanitizer-detected crash. An earlier off-screen GUI smoke run remains supporting
|
|||
evidence rather than an exact-candidate package result.
|
||||
|
||||
Those results are historical upstream self-audit evidence, not independent
|
||||
certification and not 5.2.6 results. Post-tag CI integration failures prevented
|
||||
certification and not 5.2.7 results. Post-tag CI integration failures prevented
|
||||
5.2.2 promotion. The immutable 5.2.3 candidate was also not promoted because its
|
||||
source-policy test assumed LF for a `.bat` checkout that correctly used CRLF.
|
||||
The immutable v5.2.4 candidate then recorded 12 successful jobs in exact-tag CI
|
||||
|
|
@ -347,18 +353,20 @@ run `33431386002`; the sole openSUSE service-harness job failed because the
|
|||
standalone executor did not enter its service directory, so dependent Windows
|
||||
and macOS jobs were skipped. A local Tumbleweed reproduction proved the explicit
|
||||
tag ref and corrected working-directory contract, but neither that reproduction
|
||||
nor the successful v5.2.4 jobs are v5.2.6 evidence. The immutable v5.2.5
|
||||
nor the successful v5.2.4 jobs are v5.2.7 evidence. The immutable v5.2.5
|
||||
candidate was not promoted after exact-tag GitHub Actions run `33434986357`:
|
||||
13 jobs succeeded, but the native Windows hostile-path fixture and macOS
|
||||
build/check gate failed. The corrective byte-exact fixture, portable secure-wipe
|
||||
fallback, and Bash 3.2 array handling therefore require new 5.2.6 evidence. The
|
||||
exact 5.2.6 candidate must repeat all required gates. Native Windows and macOS,
|
||||
build/check gate failed. Their 5.2.6 corrections were followed by exact-tag run
|
||||
`33442264243`, which also completed 13 jobs successfully but failed native
|
||||
macOS on arm64-unused SHA-NI helper declarations under `-Werror` and native
|
||||
Windows during safe UTF-8 fixture argv transcoding. The immutable v5.2.6 tag was
|
||||
not promoted. The exact 5.2.7 candidate must repeat all required gates. Native Windows and macOS,
|
||||
hosted GitHub CI/release promotion, authenticated OBS, and resolution of the
|
||||
openSUSE automatic `debugsource` rpmlint `no-binary`
|
||||
finding remain pending until recorded otherwise. Unexecuted gates are `SKIP`,
|
||||
never `PASS`.
|
||||
|
||||
On Windows, 5.2.6 scopes output handling to normal local Win32 paths. A MinGW
|
||||
On Windows, 5.2.7 scopes output handling to normal local Win32 paths. A MinGW
|
||||
cross-build or Wine run is not native-Windows evidence; the `windows-latest`
|
||||
package job, including its Unicode round trip, remains a mandatory publication
|
||||
gate. Win32 extended-length and device-namespace paths, raw UNC output roots
|
||||
|
|
@ -380,7 +388,7 @@ downgrading authentication of header and footer metadata.
|
|||
`disk restore`, and exists only to recover a known, trusted archive created
|
||||
before AIT was introduced. Do not use that override for an archive from
|
||||
untrusted or attacker-writable storage; verify and migrate the recovered data to
|
||||
a newly created 5.2.6 archive. Compression and disk backup never create a
|
||||
a newly created 5.2.7 archive. Compression and disk backup never create a
|
||||
no-AIT archive.
|
||||
|
||||
`info` is deliberately different: it reports unauthenticated framing metadata,
|
||||
|
|
@ -398,7 +406,7 @@ lists, tests, extracts, and restores it byte-exact. The full local Linux gate
|
|||
passed on commit `ff99770`. This is not a claim that a 5.2.1 reader understands every new
|
||||
flag-gated 5.2.2 encoding or that every historical combination was tested.
|
||||
|
||||
The candidate commands and outcome fields for 5.2.6 are maintained in the
|
||||
The candidate commands and outcome fields for 5.2.7 are maintained in the
|
||||
release handoff and
|
||||
[packaging/opensuse/README.md](packaging/opensuse/README.md). They must be
|
||||
updated from the final release candidate before tagging. No architecture or
|
||||
|
|
@ -410,9 +418,9 @@ Generate the reproducible source archive outside the repository:
|
|||
|
||||
~~~sh
|
||||
make dist
|
||||
sha256sum /tmp/zupt-5.2.6.tar.gz
|
||||
sha256sum /tmp/zupt-5.2.7.tar.gz
|
||||
bash scripts/check-source-only.sh \
|
||||
--archive /tmp/zupt-5.2.6.tar.gz
|
||||
--archive /tmp/zupt-5.2.7.tar.gz
|
||||
~~~
|
||||
|
||||
Archive ordering, ownership and timestamps are normalized. The default epoch is
|
||||
|
|
@ -428,7 +436,7 @@ final digest before the tag is published.
|
|||
## openSUSE and OBS
|
||||
|
||||
The maintained upstream recipe is in packaging/opensuse. It is prepared for an
|
||||
immutable v5.2.6 tag, disables submodules and Git LFS, builds with
|
||||
immutable v5.2.7 tag, disables submodules and Git LFS, builds with
|
||||
WITH_SDK=0 WITH_PQBOX=0, runs real checks, and installs without the renamed-era
|
||||
`vaptvupt` alias.
|
||||
|
||||
|
|
@ -471,7 +479,7 @@ The optional GUI is under `gui/`. It invokes the `zupt` CLI and needs Python 3
|
|||
plus PySide6 or PyQt6. GUI image assets are data files whose purpose,
|
||||
provenance and license are recorded in [gui/assets/README.md](gui/assets/README.md).
|
||||
The integrated source and lightweight consistency checks do not constitute a
|
||||
target-native audit of every historical GUI format. The 5.2.6 artifact promise
|
||||
target-native audit of every historical GUI format. The 5.2.7 artifact promise
|
||||
is limited to the gated GUI DEB, noarch/source RPM, and source-only portable ZIP
|
||||
listed above; AppImage, AppDir, Flatpak bundles, and platform GUI installers
|
||||
remain excluded.
|
||||
|
|
@ -481,13 +489,13 @@ remain excluded.
|
|||
Cristian Cezar Moisés is the creator and current upstream maintainer of ZUPT and
|
||||
the author of the current upstream source, build, test, documentation, and
|
||||
packaging changes, including the 5.2.2 baseline and corrective
|
||||
5.2.3/5.2.4/5.2.5/5.2.6 work.
|
||||
5.2.3/5.2.4/5.2.5/5.2.6/5.2.7 work.
|
||||
|
||||
Alessandro de Oliveira Faria (Cabelo) is credited as the openSUSE collaborator
|
||||
and downstream package maintainer. He reviews the handoff, commits it in the
|
||||
OBS project he maintains, and may make the additional openSUSE-side adjustments
|
||||
he considers necessary. That downstream role is not attribution of ZUPT source
|
||||
authorship or of the upstream 5.2.2, 5.2.3, 5.2.4, 5.2.5, or 5.2.6 changes.
|
||||
authorship or of the upstream 5.2.2, 5.2.3, 5.2.4, 5.2.5, 5.2.6, or 5.2.7 changes.
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue