diff --git a/AUDIT.md b/AUDIT.md index d5d6516..76b87d3 100644 --- a/AUDIT.md +++ b/AUDIT.md @@ -223,7 +223,7 @@ its volume and file index against the traversal handle, and marks only that identity-checked handle for deletion. The live-workspace regression injects a directory symlink and verifies that its external sentinel survives. These are reviewed fixes and regression coverage, not independent -certification or proof that an exact-tag 5.2.8 gate passed. +certification by themselves; the exact-tag evidence is recorded below. The C/C++ default-branch analysis of commit `69fc26b` closed #5, #6, and #7, then reported High #8, #9, and #10 solely in the newly added SDK regression: @@ -248,12 +248,24 @@ matching, and requires extraction plus a full tree diff. The path-confinement regression independently constructs the BMP/non-BMP archive name from ASCII hex and requires byte-exact listing and extraction. -Because that pre-tag run failed, it is diagnostic evidence rather than release -approval. The exact 5.2.8 candidate must repeat the required suite. Exact-tag -native Windows/macOS, hosted CI, authenticated OBS service execution, and -release promotion remain pending until recorded otherwise. The pre-tag -openSUSE Tumbleweed job did build source and binary RPMs, pass `rpmlint` without -suppressions, and pass install/round-trip/uninstall checks. +Because that pre-tag run failed, it remains diagnostic evidence rather than +release approval. The immutable `v5.2.8` tag at +`ebb9ab3aa1d42c50030ca02883f6162dc4771fe1` repeated the complete suite in +manually dispatched run `33456209269`: all 15 jobs passed, including native +Windows/macOS, the pinned local OBS service chain, source reproducibility, +DEB/RPM/SRPM, installed-package, sanitizer, analyzer, and source-only gates. +The canonical source archive was reproduced at 798296 bytes with SHA-256 +`378b9506211545b9594cf0d38ac8955d9b1cac34eb6b379ae0ec26b84edb65f7`. + +Initial promotion run `33457344882` stopped before release creation because +its validator incorrectly assumed that an SRPM's `%{ARCH}` must be `src`. +Both artifacts were genuine source packages: `%{SOURCEPACKAGE}` was `1`, +`%{SOURCERPM}` was absent, each payload was exactly its Source0 plus spec, and +each binary RPM referenced the matching SRPM. Commit `33eb904` changed the +gate to those canonical metadata and payload checks. Corrected promotion run +`33457868306` then validated the same tag-bound artifacts and published exactly +13 assets. No asset was rebuilt to pass promotion. These are reproducible +project records, not independent certification. ## Cryptographic review boundary diff --git a/CHANGELOG.md b/CHANGELOG.md index a1576d2..3371176 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,9 +57,13 @@ unchanged. - Realign current code, package, workflow, artifact, and documentation references to 5.2.8, and pin the AUR/Homebrew SHA-256 and Guix content hash to the final reproducible source archive before tagging. -- Require fresh exact-`v5.2.8` source, checksum, hosted CI, native-platform, - package, OBS, and promotion evidence. This entry does not claim those gates - passed, and no v5.2.7 result transfers automatically. +- Exact-tag run `33456209269` passed all 15 source, package, analyzer, + sanitizer, OBS, Windows, and macOS jobs at `ebb9ab3`. Promotion initially + stopped before publication because its validator treated `%{ARCH}` as the + SRPM discriminator; the genuine SRPMs instead correctly carry + `%{SOURCEPACKAGE}=1`. Commit `33eb904` corrected and strengthened that gate, + and run `33457868306` published the exact 13 tested assets without rebuilding + them. No v5.2.7 result transfers to this evidence. ## [5.2.7] — 2026-08-31 — Native test-harness portability corrections diff --git a/DISTRIBUTION.md b/DISTRIBUTION.md index 24b0c3b..7cff1ce 100644 --- a/DISTRIBUTION.md +++ b/DISTRIBUTION.md @@ -37,7 +37,13 @@ Windows distribution checks, before an old MSYS `grep` non-BMP pattern failed in the later smoke. ZUPT's redirected listing was byte-correct; the corrected gate uses byte-exact, locale-independent checks and requires extraction plus a full tree diff. The failed run is diagnostic evidence only. -Corrective packages and release assets must use `v5.2.8`; never move or +Exact-tag run `33456209269` subsequently passed all 15 jobs at +`ebb9ab3aa1d42c50030ca02883f6162dc4771fe1`, including the pinned local OBS +source-service chain, native +Windows/macOS, and every package gate. Promotion run `33457868306` published +the exact tested 13-file set; the source archive SHA-256 is +`378b9506211545b9594cf0d38ac8955d9b1cac34eb6b379ae0ec26b84edb65f7`. +Corrective packages and release assets use `v5.2.8`; never move or overwrite an earlier tag or checksum, and never transfer prior evidence automatically. Version 5.2.8 corrects those native test boundaries, hardens three path-race boundaries, and adds the SDK regression to release/hosted Linux @@ -295,9 +301,10 @@ For every published artifact: Do not infer multi-architecture compatibility from portable source. Do not add precompiled optional libraries to make a package build. -Publish release assets at the canonical GitHub release. If an expected asset is -absent or has a different checksum, report that target as unpublished rather -than redirecting consumers to an unverified file. +The 13 gated assets are published at the +[canonical GitHub release](https://github.com/cristiancmoises/zupt/releases/tag/v5.2.8). +If an expected asset is absent or has a different checksum, report that target +as unpublished rather than redirecting consumers to an unverified file. ## Downstream checklist diff --git a/INSTALL.md b/INSTALL.md index 298378d..76a320e 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -38,11 +38,11 @@ check`; a MinGW/Wine reproduction isolated the cause to the non-console password-prompt test entering `_getch`. Version 5.2.8 makes both fixtures portable, hardens the three CodeQL High path-race boundaries described in the security documents, and adds `sdk-test` to release and hosted Linux -gates. It still requires fresh exact-version validation. Do not treat any prior -candidate's artifacts or evidence as 5.2.8 packages or validation. +gates. Exact-tag run `33456209269` passed all 15 jobs, and promotion run +`33457868306` published the exact tested set. Do not treat any prior candidate's +artifacts or evidence as 5.2.8 packages or validation. -The 5.2.8 package set eligible for promotion after each target gate succeeds is -exactly these 13 assets: +The published 5.2.8 package set is exactly these 13 gated assets: | Component | Gated artifacts | |---|---| diff --git a/README.md b/README.md index 0d33c50..905bbad 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,9 @@ POSIX-mode projection. The C/C++ default-branch scan run `33452563116` of commit `7a8e5c5` completed successfully after the follow-up changed the new SDK regression to no-follow descriptors plus `fstat` and descriptor reads. Alerts #5 through #10 are fixed, and the authenticated code-scanning API reported zero -open alerts. These corrections do not change archive format v1.6, +open alerts. Final release-commit CodeQL run `33456049125` also completed +successfully, with the API still reporting zero open alerts. These corrections +do not change archive format v1.6, cryptography, the bundled codec release, or the SDK ABI. The predecessor `v5.2.7` tag is immutable and was not promoted. Exact-tag run @@ -39,6 +41,16 @@ gate creates that name from byte escapes, validates Latin-1, BMP, and non-BMP listing bytes with Python, and requires extraction plus a full tree diff. The failed run is diagnostic evidence, not release-candidate approval. +The immutable `v5.2.8` candidate at commit +`ebb9ab3aa1d42c50030ca02883f6162dc4771fe1` subsequently passed all 15 jobs in +manually dispatched exact-tag run `33456209269`. That run includes the pinned +local OBS source-service chain, reproducible source checks, GCC/Clang, analyzers, +sanitizers, DEB/RPM/SRPM and portable-package gates, the native Windows ZIP +round trip, and the mounted macOS arm64 DMG test. Corrected promotion run +`33457868306` validated and published exactly 13 assets. The canonical source +archive is 798296 bytes with SHA-256 +`378b9506211545b9594cf0d38ac8955d9b1cac34eb6b379ae0ec26b84edb65f7`. + 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 @@ -55,8 +67,9 @@ SDK link-target/mode regression, static path-race guards, portable raw-C1 fixture with Bash 3.2 unsigned-byte normalization, native redirected-prompt and protected-DACL regressions, byte-exact BMP/non-BMP Windows list and extract checks, and `sdk-test` CI step cover these boundaries. All current release -paths move to 5.2.8 and require fresh exact-tag hosted CI, package, -native-platform, source-only, checksum, OBS, and promotion evidence. +paths moved to 5.2.8 and received fresh exact-tag hosted CI, package, +native-platform, source-only, checksum, OBS, and promotion evidence in runs +`33456209269` and `33457868306`. ## Corrective changes introduced in 5.2.7 @@ -177,8 +190,12 @@ See [CHANGELOG.md](CHANGELOG.md) for the release record. ## Canonical source - Canonical: https://github.com/cristiancmoises/zupt +- Codeberg mirror: https://codeberg.org/berkeley/zupt +- SecurityOps Brazil mirror: https://git.securityops.com.br/cristiancmoises/zupt +- SecurityOps global mirror: https://git.securityops.co/cristiancmoises/zupt -Release tags and source archives are published from this repository. +GitHub remains canonical. The `v5.2.8` tag and its 13 release assets are also +published byte-for-byte on the three mirrors above. ## Source-only policy @@ -194,8 +211,8 @@ built and tested is not presented as supported. ## 5.2.8 release artifacts -The 5.2.8 release workflow is defined to produce exactly the following 13 files only after -the corresponding target gate succeeds. `SHA256SUMS` records the exact promoted +The published 5.2.8 release contains exactly the following 13 files after +every corresponding target gate succeeded. `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 evidence for runner image, architecture, toolchain, results, and explicit @@ -238,9 +255,10 @@ software already installed on the target. Other historical GUI packages and platform installers are not carried forward implicitly. The canonical source repository is -. Release assets referenced by the AUR, -Homebrew, Guix, or generic RPM recipes must exist in the canonical GitHub -release at their recorded URL before those recipes are published. +. The canonical release is +. Assets referenced +by the AUR, Homebrew, Guix, or generic RPM recipes must exist there at their +recorded URL before those recipes are published. Audit the current checkout and its Git archive with: @@ -410,11 +428,12 @@ not promoted. The immutable v5.2.7 tag was also not promoted: exact-tag run recorded 13 successful jobs, and cancelled Windows after the hosted job stalled in `make check`; a MinGW/Wine reproduction isolated the stall to `test --password-prompt ...