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
4 changes: 4 additions & 0 deletions Docs/ReleasePreparation.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ also builds the deterministic source archive, verifies `SHA256SUMS`, and creates
a draft release. Publishing the draft and creating the moving `v1` tag remain
separate owner-approved actions.

For version 1.0.0, the protected workflow completed successfully on 2026-07-16.
The owner subsequently published the release, and the moving `v1` tag points to
the same release commit as exact tag `1.0.0`.

For a local first release, use the scripts under `Scripts/release` with
identities already installed in the login Keychain. Store notarization
credentials through `notarytool store-credentials`; never put a password or key
Expand Down
15 changes: 10 additions & 5 deletions Docs/SecurityReview.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,14 +112,19 @@ swift build -c release
Scripts/benchmark/run.sh .build/release/resizelint 250000 10
```

## Residual limitations
## Residual limitations and release closure

- Cancellation cannot interrupt a synchronous SwiftParser call already in
progress; it prevents later batches and suppresses a cancelled result.
- Xcode 27 was not available; Xcode 26.5 simulator evidence is documented
separately.
- Developer ID Application and Installer identities were not installed.
Signed-artifact, notarization, stapling, and Gatekeeper acceptance checks
therefore remain release blockers. Unsigned ZIP and package structure were
verified without contacting Apple's notarization service.
- Advisory databases change over time and must be queried again for a release.

The local defensive review did not import release credentials. That boundary
was preserved: signing and notarization ran only in the protected release
workflow. The published 1.0.0 assets were independently downloaded on
2026-07-17; all checksums matched, the installer signature and stapled ticket
validated, Gatekeeper accepted the package as `Notarized Developer ID`, and the
universal executable satisfied strict signature and notarization checks. The
previous signing and notarization release blocker is therefore closed for
version 1.0.0.
42 changes: 23 additions & 19 deletions Docs/Verification.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Release candidate verification
# Version 1.0 verification

Local verification completed on 2026-07-13 without publishing a repository,
tag, package, or release. It covered the Swift package, command-line contracts,
distribution scripts, an exact Linux toolchain, and simulator-only ResizeLab
behavior.
Local engineering verification completed on 2026-07-13. The protected release
workflow then completed successfully for exact tag `1.0.0` on 2026-07-16, and
the release was published with signed macOS, Linux, source, and checksum
assets. This document combines the pre-release engineering evidence with the
published-artifact verification.

## Automated tests and coverage

Expand All @@ -26,20 +27,23 @@ fix behavior. The detailed defensive assessment is in the
## Compatibility and artifacts

- Native macOS release builds completed independently for arm64 and x86_64.
- The local universal executable reports both architectures and version 1.0.0.
- The ZIP executable and package payload matched the universal executable
byte-for-byte; SHA-256 verification succeeded.
- The published ZIP contains a universal arm64 and x86_64 executable that
passes strict code-signature verification and Apple's notarization
requirement.
- All four published archives match the release `SHA256SUMS` file.
- The published installer is signed by `Developer ID Installer` for Team
`4NGTWD262W`, carries a trusted timestamp, has a valid stapled notarization
ticket, and is accepted by Gatekeeper as `Notarized Developer ID`.
- The Linux release archive contained an x86_64 ELF executable that reported
version 1.0.0 inside the Swift 6.3.3 Jammy container.
- Source-archive and checksum self-tests passed.
- The composite Action consumer fixture passed, and both workflows passed
actionlint 1.7.12.

The local signing-readiness check finds Developer ID Application and Developer
ID Installer identities for distribution Team `4NGTWD262W`. General engineering
tests do not use private signing credentials; signature, notarization, stapling,
and Gatekeeper evidence must come from the explicitly approved protected release
workflow.
The protected [release workflow](https://github.com/mikonyaa/ResizeLint/actions/runs/29513460101)
completed successfully at commit `cde1a7b5165cd6dc225166e6e0a7614a32ebce28`.
Published assets were independently downloaded and rechecked on 2026-07-17
with `shasum`, `pkgutil`, `stapler`, `spctl`, `codesign`, and `file`.

## Precision, performance, and interface evidence

Expand All @@ -60,13 +64,13 @@ square, wide, portrait, landscape, accessibility text, appearance, Reduce
Motion, and Reduce Transparency evidence is documented in the
[simulator QA report](ResizeLabQA.md).

## Remaining release limitations
## Remaining limitations

- Xcode 27 and Device Hub were unavailable; exact-size render tests and iOS
26.5 simulator orientations were used instead.
- Signed and notarized installation cannot be verified without the two
Developer ID identities.
- Advisory databases can change and must be queried again immediately before
a release.
- Public Action, Homebrew tap, and clean-clone-from-hosting checks require an
approved published repository and exact release tag.
a future release.
- The standalone `mikonyaa/homebrew-tap` repository is not published. The
signed and notarized package remains the canonical macOS installation path.
- Physical-device iPhone Mirroring was not used or claimed; ResizeLab evidence
is simulator-only.
Loading