Skip to content

Commit 009122b

Browse files
committed
Complete Phase 11E acceptance
1 parent ebe3201 commit 009122b

2 files changed

Lines changed: 60 additions & 31 deletions

File tree

docs/IMPLEMENTATION_PLAN.md

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ Current baseline as of 2026-07-22:
4040
and the private Manifest-driven suite passed with X100VI RAF, JPEG, HIF,
4141
HEIC, and MOV representatives across Scan, Quick Look, duplicate detection,
4242
import, and SHA-256 integrity.
43-
- Phase 11E release automation is implemented: one repository-owned script
43+
- Phase 11E release automation is complete: one repository-owned script
4444
performs secret scanning, exact-toolchain Release build, ad hoc signature
4545
verification, ZIP/checksum/Manifest v1 generation, and extracted-app
4646
verification, while a pinned GitHub Actions workflow runs the deterministic
47-
test gate and retains only those three files. Acceptance of an artifact
48-
downloaded from Actions remains pending.
47+
test gate and retains only those three files. The artifact from the first
48+
manually dispatched run was downloaded, independently verified, launched,
49+
and used for a successful curated representative import.
4950
- Live mode is wired through `LiveAssembly` to `MacFileSystem`,
5051
`MacMetadataProvider`, `MacContentHasher`, `MacImporter`,
5152
`MacDestinationFileLookup`, and an Application Support-backed
@@ -614,8 +615,8 @@ Add UI tests for:
614615
### Phase 10E: Production readiness and live wiring
615616

616617
**Status: complete for live application wiring as of 2026-07-18. Ad hoc release
617-
packaging remains Phase 11E work; Developer ID signing, notarization, and App
618-
Store distribution are deferred future work.**
618+
packaging was completed in Phase 11E; Developer ID signing, notarization, and
619+
App Store distribution are deferred future work.**
619620

620621
Finalize production-oriented integration after the UI and tests are stable.
621622

@@ -755,8 +756,7 @@ and content hashes remain outside Git.
755756

756757
### Phase 11E: Ad hoc-signed release packaging and automation
757758

758-
**Status: automation implemented as of 2026-07-22; acceptance of an artifact
759-
downloaded from GitHub Actions remains pending.**
759+
**Status: complete as of 2026-07-22.**
760760

761761
The current binary release target must not require Apple Developer Program
762762
membership, signing certificates, notarization credentials, or App Store
@@ -793,11 +793,11 @@ tests before calling that script on `macos-26`; its checkout and upload actions
793793
are pinned to immutable commit SHAs, permissions are read-only, and the artifact
794794
retention period is 30 days. It does not create a GitHub Release.
795795

796-
The remaining phase gate is external acceptance: manually run the merged
797-
workflow, download its artifact, repeat checksum/signature/architecture and
798-
Info.plist checks, launch the app, complete one curated representative import,
799-
and record the result in `docs/RELEASE.md`. Until then, Phase 11E as a whole is
800-
not marked complete.
796+
External acceptance completed with manually dispatched run `29856922122` at
797+
source commit `ebe320194b815dca37c903729914fd3b8f7f7319`. Its artifact was
798+
downloaded and independently checked for checksum, signature, architectures,
799+
Info.plist, and Manifest v1. The extracted app launched and completed a curated
800+
representative import. `docs/RELEASE.md` records the full acceptance evidence.
801801

802802
The following remain outside Phase 11E and are deferred until the distribution
803803
strategy changes:
@@ -874,13 +874,13 @@ known production-hardening gap into an accepted product decision.
874874
| 10B: Progress and cancellation | Complete at per-file granularity | Scan, duplicate checking, and import publish deterministic progress. Canceling import preserves completed copies and marks remaining selected items canceled. An individual synchronous copy is not byte-level cancelable. |
875875
| 10C: Cache settings | Complete | Aggregate stats, fixed-policy explanation, per-volume metadata and role counts, UUID details, confirmed clear-all/per-volume actions, localized notices, and recovery paths are implemented. |
876876
| 10D-2: New behavior UI tests | Complete for implemented scope | Progress cancellation, cache settings, cache failure recovery, and language switching are covered. |
877-
| 10E: Live wiring | Complete for local execution | Application Support SQLite, live services, bookmark persistence, destination conflict lookup, logging, safe startup failure, main bundle identifier, Hardened Runtime, and manual ad hoc signing are configured. Ad hoc packaging is Phase 11E work; formal signing and notarization are deferred. |
877+
| 10E: Live wiring | Complete for local execution | Application Support SQLite, live services, bookmark persistence, destination conflict lookup, logging, safe startup failure, main bundle identifier, Hardened Runtime, and manual ad hoc signing are configured. Ad hoc packaging was completed in Phase 11E; formal signing and notarization are deferred. |
878878
| 10F: Localization | Complete | English/Japanese copy, persisted selection, launch override, and runtime relocalization exist. |
879879
| 11A: Stable volume identity and import safety | Complete | Stable source/destination cache scopes, UUID-unavailable cache bypass, volume-root-relative cache paths, schema v2 invalidation, source-before-final-check import ordering, and typed late destination conflicts are implemented and tested. |
880880
| 11B: Fast Stage A and scale validation | Complete | Indexed same-size candidate detection, sparse Stage B hashing, the deterministic 1,000-item fixture, bounded Review presentation, cancellation latency, and UI performance metrics are implemented and tested. |
881881
| 11C: Cache lifecycle and volume settings | Complete | Fixed age/size maintenance, startup coordination, LRU SQLite compaction, volume summaries and clearing, metadata refresh, point-of-use destination validation, additive fixture data, and localized UI coverage are implemented. |
882882
| 11D: Representative real media | Complete | HIF and MOV metadata support, deterministic regression tests, private Manifest validation, Quick Look checks, import integrity, Git exclusion, and operating instructions are implemented. The required X100VI RAF, JPEG, HIF, HEIC, and MOV matrix passed on Xcode 26.6 and macOS 26.5.2. |
883-
| 11E: Ad hoc release automation | Automation implemented; downloaded-artifact acceptance pending | Release-only entitlement injection is disabled. The shared script enforces clean full-history source, redacted secret scans, Xcode 26.6, manual ad hoc signing, Hardened Runtime, Universal Binary output, strict bundle and extracted-app verification, checksum, and path-safe Manifest v1 packaging. The SHA-pinned `macos-26` workflow runs Core, PlatformMac, and app unit tests and uploads only the three versioned files for 30 days. Phase completion still requires downloading the merged-workflow artifact, re-verifying it, launching it, and recording one curated import. |
883+
| 11E: Ad hoc release automation | Complete | Release-only entitlement injection is disabled. The shared script enforces clean full-history source, redacted secret scans, Xcode 26.6, manual ad hoc signing, Hardened Runtime, Universal Binary output, strict bundle and extracted-app verification, checksum, and path-safe Manifest v1 packaging. The SHA-pinned `macos-26` workflow runs Core, PlatformMac, and app unit tests and uploads only the three versioned files for 30 days. Run `29856922122` succeeded; its downloaded artifact passed independent verification, app launch, and curated representative import, with evidence recorded in `docs/RELEASE.md`. |
884884

885885
### Additional completed behavior
886886

@@ -943,11 +943,15 @@ hitches on the verification machine. The cancellation UI test also verified a
943943
return to the Source screen within two seconds after requesting cancellation
944944
during a deliberately delayed Stage B hash.
945945

946-
The locally packaged ad hoc artifact is verified, but it is not the canonical
947-
GitHub Actions output. The phase remains open until a merged-workflow artifact
948-
is downloaded, independently checked, launched, and used for the curated import
949-
recorded in `docs/RELEASE.md`. Developer ID signing, notarization, and public
950-
Gatekeeper acceptance are not current release criteria.
946+
GitHub Actions run `29856922122` completed all Core, PlatformMac, app unit,
947+
release build, verification, and upload steps in 5 minutes 11 seconds. The
948+
downloaded `PicChronoImporter-1.0-build1` artifact contained exactly the ZIP,
949+
checksum, and Manifest v1. Its checksum was
950+
`114c350aae65e7eb976514c641b41efb6eef0fe0799b0f8aaa4730fd3f532513`;
951+
independent signature, architecture, Info.plist, and manifest checks passed.
952+
The extracted app launched and completed the curated representative import on
953+
the acceptance Mac. Developer ID signing, notarization, and public Gatekeeper
954+
acceptance are not current release criteria.
951955

952956
## 14. Known remaining gaps and constraints
953957

@@ -960,10 +964,10 @@ Universal Binary before and after ZIP extraction, and emits the checksum and
960964
Manifest v1. GitHub Actions is the canonical clean build; the local script is
961965
the common implementation and fallback rather than a separate release process.
962966

963-
Phase 11E still requires a post-merge manual workflow run and acceptance of the
964-
downloaded artifact. That acceptance includes repeating checksum and signature
965-
verification, launching the extracted app, completing one curated import, and
966-
recording the result in `docs/RELEASE.md`.
967+
Phase 11E acceptance is complete. The post-merge manual workflow run,
968+
downloaded-artifact checksum and signature verification, extracted-app launch,
969+
and curated import all passed on 2026-07-22. The durable acceptance record is in
970+
`docs/RELEASE.md`.
967971

968972
Source publication is complete. The 2026-07-21 full-history and intended-tree
969973
`betterleaks` scans reported zero findings, and the audited source commit became
@@ -990,10 +994,12 @@ background automatic import, or additional windows.
990994

991995
## 15. Suggested next task
992996

993-
The recommended next task after merging this automation is:
997+
No Phase 11E implementation or acceptance work remains. Select the next product
998+
phase explicitly before implementation. If a canonical tagged artifact is
999+
desired, the next separate release operation is:
9941000

9951001
```text
996-
Phase 11E: Run GitHub Actions and accept the downloaded ad hoc artifact
1002+
Create v1.0 and verify the tag-triggered Actions artifact
9971003
```
9981004

9991005
Do not include Developer ID signing, notarization, or App Store submission in

docs/RELEASE.md

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,35 @@ requires a new schema version.
160160

161161
## Release acceptance record
162162

163-
Phase 11E is not complete until an artifact downloaded from GitHub Actions has
164-
been independently verified and exercised on a Mac. Copy this template below
165-
for each accepted build:
163+
Phase 11E acceptance requires an artifact downloaded from GitHub Actions to be
164+
independently verified and exercised on a Mac.
165+
166+
### 2026-07-22 — PicChronoImporter 1.0 (build 1)
167+
168+
- Workflow run URL:
169+
<https://github.com/3ckey/picchronoimporter/actions/runs/29856922122>
170+
- Artifact name and retention expiry: `PicChronoImporter-1.0-build1`,
171+
`2026-08-20T18:27:25Z` (`2026-08-21 03:27 JST`)
172+
- Source commit and ref:
173+
`ebe320194b815dca37c903729914fd3b8f7f7319`, `refs/heads/main`
174+
- Host Mac model / architecture: `Mac13,1` / `arm64`
175+
- macOS version and build: `26.5.2` / `25F84`
176+
- SHA-256 verification: passed,
177+
`114c350aae65e7eb976514c641b41efb6eef0fe0799b0f8aaa4730fd3f532513`
178+
- Extracted `codesign --verify --deep --strict`: passed
179+
- Signature (`adhoc,runtime`, no Team ID, no `get-task-allow`): passed
180+
- Architectures and Info.plist: passed; `x86_64 arm64`, bundle identifier
181+
`com.kofeincska.picchronoimporter`, version `1.0`, build `1`, minimum macOS
182+
`26.0`
183+
- App launch: passed; confirmed by the repository owner
184+
- Curated representative import: passed; confirmed by the repository owner
185+
- Private `RepresentativeRealMedia` run and date: passed on `2026-07-22`,
186+
including RAF, JPEG, HIF/HEIC, and MOV import-integrity coverage
187+
- Reviewer and notes: `3ckey`; Gatekeeper acceptance was not used as a release
188+
criterion, and the artifact remains ad hoc signed and non-notarized
189+
190+
This acceptance record completes Phase 11E. Copy the template below for future
191+
accepted builds:
166192

167193
```markdown
168194
### YYYY-MM-DD — PicChronoImporter <version> (build <build>)
@@ -181,6 +207,3 @@ for each accepted build:
181207
- Private `RepresentativeRealMedia` run and date:
182208
- Reviewer and notes:
183209
```
184-
185-
Until that record is completed from a downloaded Actions artifact, the release
186-
automation is implemented but Phase 11E acceptance remains pending.

0 commit comments

Comments
 (0)