Qualify and package the native app #24

Open
opened 2026-10-11 19:10:51 +00:00 by phg · 2 comments
Owner

Parent

IODD Tool specification

What to build

Deliver IODD Tool with the integrated native workflow as a Developer ID signed, notarized downloadable app and Forgejo-hosted Homebrew cask, with documented profiles, verified lifecycle behavior and the agreed software-only release evidence.

Acceptance criteria

  • The integrated app provides the approved analysis/map/selection, IODD eligibility, VHD creation, defrag, compaction, progress, cancellation, recovery, and remount workflows.

  • The reviewed prototype decisions, IODD Tool naming, native appearance, menus/About, keyboard navigation, and accessibility are reflected in complete app-level smoke checks.

  • Creation/compaction interactions follow the resolved product policy: Compact is separately reviewed, followed by fresh analysis/creation preview and explicit retry.

  • The arm64 app targets macOS 15+, uses a pinned stable Xcode/Swift release and exact build, and passes native runtime acceptance on macOS 15 and current stable macOS.

  • Required independent software/oracle/fault/recovery and virtual access/UI evidence passes; profiles and coverage distinguish documented requirements, native virtual observations and simulated cases from unmeasured hardware behavior.

  • The final immutable DMG and app/ordinary-worker components have appropriate Developer ID signatures, hardened runtime, secure timestamps, successful notarization/stapling and clean-user Gatekeeper/install evidence; permanent daemon registration is not required.

  • A Forgejo-hosted Homebrew cask installs the same final DMG using an exact version/URL/SHA-256 and arm64/macOS-15 restrictions; explicit Git-URL tap setup and fully qualified install/upgrade commands are documented and tested.

  • Manual replacement and Homebrew upgrade/reinstall/uninstall wait for safe worker completion or refuse while an operation remains active; quitting the UI alone does not establish a safe worker state. No in-app updater is required for v1.

  • Authoritative journals, recovery registry and exported recovery bundles survive upgrade, reinstall, uninstall and --zap; optional preferences/cache cleanup excludes recovery evidence and its parent directory.

  • Fault tests treat specified safe refusal/recovery-required outcomes as passing only when independently verified. Repair-dependent success, false clean/success and lost unresolved evidence fail acceptance.

  • Missing release credentials block signing/publication rather than image-based development. Physical-media/IODD trials and performance commitments are not release prerequisites.

  • Capacity, initialization, complete allocation, eligibility and conditional recovery/persistence evidence remain distinct; no unmeasured firmware attachment, bootability or physical power-loss guarantee is advertised.

Blocked by

Validation contract

Completion requires the applicable independently checked software evidence in Set validation gates and the implementation handoff. A closed policy decision does not establish that implementation tests have passed. Use disposable images/virtual volumes and controlled faults; no hardware-trial or performance gate applies.

Scope

This ticket belongs to the later implementation effort. All planning decisions are resolved; current work covers tracker and documentation updates. The parent specification indexes the authoritative product and software-validation contracts. Forgejo governs live updates; retained local files record the handoff.

## Parent [IODD Tool specification](https://git.s1q.dev/phg/iodd-tool/issues/7) ## What to build Deliver **IODD Tool** with the integrated native workflow as a Developer ID signed, notarized downloadable app and Forgejo-hosted Homebrew cask, with documented profiles, verified lifecycle behavior and the agreed software-only release evidence. ## Acceptance criteria - [ ] The integrated app provides the approved analysis/map/selection, IODD eligibility, VHD creation, defrag, compaction, progress, cancellation, recovery, and remount workflows. - [ ] The reviewed prototype decisions, **IODD Tool** naming, native appearance, menus/About, keyboard navigation, and accessibility are reflected in complete app-level smoke checks. - [ ] Creation/compaction interactions follow the resolved product policy: Compact is separately reviewed, followed by fresh analysis/creation preview and explicit retry. - [ ] The arm64 app targets macOS 15+, uses a pinned stable Xcode/Swift release and exact build, and passes native runtime acceptance on macOS 15 and current stable macOS. - [ ] Required independent software/oracle/fault/recovery and virtual access/UI evidence passes; profiles and coverage distinguish documented requirements, native virtual observations and simulated cases from unmeasured hardware behavior. - [ ] The final immutable DMG and app/ordinary-worker components have appropriate Developer ID signatures, hardened runtime, secure timestamps, successful notarization/stapling and clean-user Gatekeeper/install evidence; permanent daemon registration is not required. - [ ] A Forgejo-hosted Homebrew cask installs the same final DMG using an exact version/URL/SHA-256 and arm64/macOS-15 restrictions; explicit Git-URL tap setup and fully qualified install/upgrade commands are documented and tested. - [ ] Manual replacement and Homebrew upgrade/reinstall/uninstall wait for safe worker completion or refuse while an operation remains active; quitting the UI alone does not establish a safe worker state. No in-app updater is required for v1. - [ ] Authoritative journals, recovery registry and exported recovery bundles survive upgrade, reinstall, uninstall and --zap; optional preferences/cache cleanup excludes recovery evidence and its parent directory. - [ ] Fault tests treat specified safe refusal/recovery-required outcomes as passing only when independently verified. Repair-dependent success, false clean/success and lost unresolved evidence fail acceptance. - [ ] Missing release credentials block signing/publication rather than image-based development. Physical-media/IODD trials and performance commitments are not release prerequisites. - [ ] Capacity, initialization, complete allocation, eligibility and conditional recovery/persistence evidence remain distinct; no unmeasured firmware attachment, bootability or physical power-loss guarantee is advertised. ## Blocked by - [Inspect the complete allocation map](https://git.s1q.dev/phg/iodd-tool/issues/10) - [Create a verified VHD on external storage](https://git.s1q.dev/phg/iodd-tool/issues/21) - [Defragment files on external storage](https://git.s1q.dev/phg/iodd-tool/issues/22) - [Compact external storage](https://git.s1q.dev/phg/iodd-tool/issues/23) ## Validation contract Completion requires the applicable independently checked software evidence in [Set validation gates and the implementation handoff](https://git.s1q.dev/phg/iodd-tool/issues/6). A closed policy decision does not establish that implementation tests have passed. Use disposable images/virtual volumes and controlled faults; no hardware-trial or performance gate applies. ## Scope This ticket belongs to the later implementation effort. All planning decisions are resolved; current work covers tracker and documentation updates. The parent specification indexes the authoritative product and software-validation contracts. Forgejo governs live updates; retained local files record the handoff.
phg self-assigned this 2026-10-15 00:12:21 +00:00
Author
Owner

Started #24 after the qualified operation integration 381442f was pushed and remote-confirmed. Native operation flags are enabled; the artifact remains a development build, not a notarized final release.

Next is the selected minimal shared lifecycle: signed IODDLifecycle install/uninstall over one public NativeAppLifecycle module, shared by manual and standard fully-qualified Homebrew callers. The first public RED→GREEN uses a real independent process holding the lifecycle lease beyond caller lifetime: installation/uninstallation must refuse busy before changing the app, evidence or backups. Cohesive real filesystem/signature/path failure, retained-bundle, bounded export/purge and caller/phase-gap cases follow.

Keep the private account-owned destination, worker-lifetime lease, signed peer checks and recovery authority. No daemon, brew wrapper, arbitrary CLI destination/lease override, home crawl or security bypass. Final frozen both-runtime suites, whole-branch review, app smoke, manual/Homebrew lifecycle, signed/notarized/stapled DMG and clean-user Gatekeeper with exact URL/SHA cask/tap checks remain open. Source21 retains sole Source/Test ownership; no extra mutation matrix is scheduled.

Started #24 after the qualified operation integration [381442f](https://git.s1q.dev/phg/iodd-tool/commit/381442f79cd5736fceaffa15d5f1edacb1ca8842) was pushed and remote-confirmed. Native operation flags are enabled; the artifact remains a development build, not a notarized final release. Next is the selected minimal shared lifecycle: signed IODDLifecycle install/uninstall over one public NativeAppLifecycle module, shared by manual and standard fully-qualified Homebrew callers. The first public RED→GREEN uses a real independent process holding the lifecycle lease beyond caller lifetime: installation/uninstallation must refuse busy before changing the app, evidence or backups. Cohesive real filesystem/signature/path failure, retained-bundle, bounded export/purge and caller/phase-gap cases follow. Keep the private account-owned destination, worker-lifetime lease, signed peer checks and recovery authority. No daemon, brew wrapper, arbitrary CLI destination/lease override, home crawl or security bypass. Final frozen both-runtime suites, whole-branch review, app smoke, manual/Homebrew lifecycle, signed/notarized/stapled DMG and clean-user Gatekeeper with exact URL/SHA cask/tap checks remain open. Source21 retains sole Source/Test ownership; no extra mutation matrix is scheduled.
Author
Owner

Follow-on prerelease wayfinding

phg confirmed a focused decision-complete plan in the wayfinder conversation on 16 October 2026: reproducible, manually initiated local releases automated through mise, starting with a signed prerelease for limited evaluation. The new canonical planning index is Plan the signed IODD Tool prerelease.

It contains two primary-source research tickets and four HITL release decisions, with dependencies recorded in their bodies. Existing product/recovery/lifecycle contracts and every software, runtime, signing/notarization, lifecycle and final-download gate remain in force. This implementation ticket continues to own the build, actual qualification and release execution; no Source/Test changes, signing or publication are performed by charting the map. The original completed specification map remains historical and authoritative for its accepted contracts.

## Follow-on prerelease wayfinding phg confirmed a focused decision-complete plan in the wayfinder conversation on 16 October 2026: reproducible, manually initiated local releases automated through **mise**, starting with a signed prerelease for limited evaluation. The new canonical planning index is [Plan the signed IODD Tool prerelease](https://git.s1q.dev/phg/iodd-tool/issues/27). It contains two primary-source research tickets and four HITL release decisions, with dependencies recorded in their bodies. Existing product/recovery/lifecycle contracts and every software, runtime, signing/notarization, lifecycle and final-download gate remain in force. This implementation ticket continues to own the build, actual qualification and release execution; no Source/Test changes, signing or publication are performed by charting the map. The original completed specification map remains historical and authoritative for its accepted contracts.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
phg/iodd-tool#24
No description provided.