Qualify and package the native app #24
Labels
No labels
needs-info
needs-triage
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
phg/iodd-tool#24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.
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.
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.