Agree the manual and Homebrew lifecycle handoff #31

Open
opened 2026-10-16 09:16:42 +00:00 by phg · 5 comments
Owner

Parent: Plan the signed IODD Tool prerelease
Type: grilling
Mode: HITL
Blocked by: Verify standard Homebrew lifecycle compatibility

Question

Given the official Homebrew findings, which concrete manual and standard-cask lifecycle invocation contract should implementation follow for install, replacement, upgrade, reinstall, uninstall and zap while preserving the accepted shared signed lifecycle architecture?

Specify authority and continuous operation exclusion across callers/phases, what safely refuses or waits, how signed helpers are selected, and the handling of staging/bookkeeping, retained prior bundles and unresolved recovery evidence. Treat the private destination, worker-lifetime lease, signed peer checks, bounded evidence cleanup and preservation guarantees as fixed constraints. Record how the chosen invocation will be independently demonstrated through the existing lifecycle acceptance boundary; do not design a second mutation test matrix.

This ticket selects the integration contract after the facts are known; the research ticket owns the source details. Resolve with phg's actual feedback. If standard Homebrew behavior conflicts with a fixed constraint, identify the exact conflict and ask explicitly before any contract is reopened. Do not implement helper/cask changes or run real lifecycle operations.

Parent: [Plan the signed IODD Tool prerelease](https://git.s1q.dev/phg/iodd-tool/issues/27) Type: grilling Mode: HITL Blocked by: [Verify standard Homebrew lifecycle compatibility](https://git.s1q.dev/phg/iodd-tool/issues/28) ## Question Given the official Homebrew findings, which concrete manual and standard-cask lifecycle invocation contract should implementation follow for install, replacement, upgrade, reinstall, uninstall and zap while preserving the accepted shared signed lifecycle architecture? Specify authority and continuous operation exclusion across callers/phases, what safely refuses or waits, how signed helpers are selected, and the handling of staging/bookkeeping, retained prior bundles and unresolved recovery evidence. Treat the private destination, worker-lifetime lease, signed peer checks, bounded evidence cleanup and preservation guarantees as fixed constraints. Record how the chosen invocation will be independently demonstrated through the existing lifecycle acceptance boundary; do not design a second mutation test matrix. This ticket selects the integration contract after the facts are known; the research ticket owns the source details. Resolve with phg's actual feedback. If standard Homebrew behavior conflicts with a fixed constraint, identify the exact conflict and ask explicitly before any contract is reopened. Do not implement helper/cask changes or run real lifecycle operations.
Author
Owner

Research context now available

The resolution and committed report on Verify standard Homebrew lifecycle compatibility identify the concrete bookkeeping and cleanup/phase conflicts this existing human decision must address. The source details and local artifact/commit/delegation pointers remain in that research ticket; no additional decision ticket is needed for the same questions.

Establish mise-driven local prerelease mechanics is also resolved and indexed on Plan the signed IODD Tool prerelease. Both reports are committed locally; their research branches could not be published because SSH authentication returned Permission denied (publickey). This delivery limitation does not establish a compatible lifecycle route or prevent local review.

This remains an open, unclaimed HITL decision. No route is accepted here, no contract is reopened, and documentation/source research provides no runtime qualification.

## Research context now available The resolution and committed report on [Verify standard Homebrew lifecycle compatibility](https://git.s1q.dev/phg/iodd-tool/issues/28) identify the concrete bookkeeping and cleanup/phase conflicts this existing human decision must address. The source details and local artifact/commit/delegation pointers remain in that research ticket; no additional decision ticket is needed for the same questions. [Establish mise-driven local prerelease mechanics](https://git.s1q.dev/phg/iodd-tool/issues/29) is also resolved and indexed on [Plan the signed IODD Tool prerelease](https://git.s1q.dev/phg/iodd-tool/issues/27). Both reports are committed locally; their research branches could not be published because SSH authentication returned `Permission denied (publickey)`. This delivery limitation does not establish a compatible lifecycle route or prevent local review. This remains an open, unclaimed HITL decision. No route is accepted here, no contract is reopened, and documentation/source research provides no runtime qualification.
phg self-assigned this 2026-10-16 10:01:03 +00:00
Author
Owner

Interview checkpoint — preservation conflict remains open

Claimed by phg for the live wayfinder discussion on 16 October 2026. This is a factual checkpoint for Agree the manual and Homebrew lifecycle handoff, not a resolution or an accepted invocation contract.

The existing resolution/report on Verify standard Homebrew lifecycle compatibility remains the source-detail owner. A bounded read-only follow-up confirmed the following:

  • Local HEAD is b8334e758a8fb11d61b7af8d3ed6f0f632a4216b; the inspected lifecycle, worker, signing, inventory and export files are byte-identical to the research's 44b4247d83811ce4232b1f04f65021adf590116d. These observations do not select the ongoing implementation's release candidate.
  • Nonblocking worker-lifetime exclusion exists, but signed peer checks currently do not bar operations launched from DMG/Caskroom source copies. Enforced installed/private-retained origin admission would be required before treating those copies as disposable through Homebrew phase gaps.
  • A mandatory uninstall preflight would need to perform the complete signed removal transaction, rather than checking availability/idle and exiting. An ordinary uninstall script can be missing-skipped by Homebrew's internally forced reinstall. Idempotent repeated signed transactions remain only a candidate, with each call reacquiring the lease and truthful reconciliation after partial failure.
  • The central conflict extends before the vendor hook: Homebrew's own staging failure can purge versioned files; an artifact/helper refusal also reaches unconditional attempted versioned purge. See pinned stage rescue and artifact cleanup.

Consequently, no route has been established that preserves arbitrary pre-existing recovery evidence inside Homebrew's purgeable tree under all these failure paths. Registration/export exclusion and source-only launch admission could prevent future supported evidence placement there, but do not protect unknown legacy contents already present. A helper refusing or attempting a best-effort copy is insufficient for unreadable, aliased, over-budget or pre-hook failures. Narrow bookkeeping admission alone does not solve this.

The live interview asks phg to decide immediate busy refusal versus waiting, enforceable private operation launch locations, and whether to retain preservation with Homebrew compatibility blocked or explicitly reopen a conflicting requirement. These are questions awaiting actual feedback; no proposed answer is adopted, no fixed constraint is reopened, and the child remains open and assigned to phg. Other lifecycle/helper-selection/retention/reconciliation details remain for subsequent interview rounds if a route becomes viable.

Fact-check context: native delegated subagent /root/lifecycle_facts, read-only, completed. No source edits, real lifecycle operations, signing, publication or runtime qualification were performed. The map index is unchanged because no decision has been resolved.

## Interview checkpoint — preservation conflict remains open Claimed by phg for the live wayfinder discussion on 16 October 2026. This is a factual checkpoint for [Agree the manual and Homebrew lifecycle handoff](https://git.s1q.dev/phg/iodd-tool/issues/31), not a resolution or an accepted invocation contract. The existing resolution/report on [Verify standard Homebrew lifecycle compatibility](https://git.s1q.dev/phg/iodd-tool/issues/28) remains the source-detail owner. A bounded read-only follow-up confirmed the following: - Local HEAD is `b8334e758a8fb11d61b7af8d3ed6f0f632a4216b`; the inspected lifecycle, worker, signing, inventory and export files are byte-identical to the research's `44b4247d83811ce4232b1f04f65021adf590116d`. These observations do not select the ongoing implementation's release candidate. - Nonblocking worker-lifetime exclusion exists, but signed peer checks currently do not bar operations launched from DMG/Caskroom source copies. Enforced installed/private-retained origin admission would be required before treating those copies as disposable through Homebrew phase gaps. - A mandatory uninstall preflight would need to perform the complete signed removal transaction, rather than checking availability/idle and exiting. An ordinary uninstall script can be missing-skipped by Homebrew's internally forced reinstall. Idempotent repeated signed transactions remain only a candidate, with each call reacquiring the lease and truthful reconciliation after partial failure. - The central conflict extends before the vendor hook: Homebrew's own staging failure can purge versioned files; an artifact/helper refusal also reaches unconditional attempted versioned purge. See [pinned stage rescue](https://github.com/Homebrew/brew/blob/cdc1ca503231b9a96da64526774915d913c3ec9f/Library/Homebrew/cask/installer.rb#L146-L166) and [artifact cleanup](https://github.com/Homebrew/brew/blob/cdc1ca503231b9a96da64526774915d913c3ec9f/Library/Homebrew/cask/installer.rb#L310-L362). Consequently, no route has been established that preserves arbitrary pre-existing recovery evidence inside Homebrew's purgeable tree under all these failure paths. Registration/export exclusion and source-only launch admission could prevent future supported evidence placement there, but do not protect unknown legacy contents already present. A helper refusing or attempting a best-effort copy is insufficient for unreadable, aliased, over-budget or pre-hook failures. Narrow bookkeeping admission alone does not solve this. The live interview asks phg to decide immediate busy refusal versus waiting, enforceable private operation launch locations, and whether to retain preservation with Homebrew compatibility blocked or explicitly reopen a conflicting requirement. These are questions awaiting actual feedback; no proposed answer is adopted, no fixed constraint is reopened, and the child remains open and assigned to phg. Other lifecycle/helper-selection/retention/reconciliation details remain for subsequent interview rounds if a route becomes viable. Fact-check context: native delegated subagent `/root/lifecycle_facts`, read-only, completed. No source edits, real lifecycle operations, signing, publication or runtime qualification were performed. The map index is unchanged because no decision has been resolved.
Author
Owner

Interview checkpoint — busy refusal, private launch authority and preservation selected

phg answered the first interview round on 16 October 2026 for Agree the manual and Homebrew lifecycle handoff:

  1. Busy behavior: immediately refuse manual installation/removal and Homebrew lifecycle operations with a retry message when the worker holds the lifecycle lease. Do not wait, stop the worker or treat UI exit as completion. The worker retains its lease through process lifetime.
  2. Operation launch authority: enforce ordinary volume-operation launch only from the private installed app or an explicitly selected private retained recovery bundle, using path and signature checks. DMG and Homebrew staging copies are installation sources and cannot start volume operations. This selects required behavior; the inspected implementation does not yet enforce it.
  3. Preservation conflict: keep the evidence-preservation guarantee and leave Homebrew compatibility blocked. phg did not narrow preservation inside Caskroom or reopen the integration constraints. The required standard-cask release path is not removed from the destination or waived as a release gate.

These are actual human selections, superseding the prior checkpoint's statement that all three answers were pending. They do not approve a complete manual/cask invocation contract. Manual invocation, signed helper selection after partial failure, complete retained-bundle policy and reconciliation/evidence handoff still need to be settled. Homebrew-specific route choices remain dependent on resolving the documented preservation conflict; no compatible route or runtime qualification is claimed.

The issue remains open and assigned to phg. No production code, lifecycle operation or release publication was performed. The map's Decisions so far is unchanged until this child has a complete resolution.

## Interview checkpoint — busy refusal, private launch authority and preservation selected phg answered the first interview round on 16 October 2026 for [Agree the manual and Homebrew lifecycle handoff](https://git.s1q.dev/phg/iodd-tool/issues/31): 1. **Busy behavior:** immediately refuse manual installation/removal and Homebrew lifecycle operations with a retry message when the worker holds the lifecycle lease. Do not wait, stop the worker or treat UI exit as completion. The worker retains its lease through process lifetime. 2. **Operation launch authority:** enforce ordinary volume-operation launch only from the private installed app or an explicitly selected private retained recovery bundle, using path and signature checks. DMG and Homebrew staging copies are installation sources and cannot start volume operations. This selects required behavior; the inspected implementation does not yet enforce it. 3. **Preservation conflict:** keep the evidence-preservation guarantee and leave Homebrew compatibility blocked. phg did not narrow preservation inside Caskroom or reopen the integration constraints. The required standard-cask release path is not removed from the destination or waived as a release gate. These are actual human selections, superseding the prior checkpoint's statement that all three answers were pending. They do not approve a complete manual/cask invocation contract. Manual invocation, signed helper selection after partial failure, complete retained-bundle policy and reconciliation/evidence handoff still need to be settled. Homebrew-specific route choices remain dependent on resolving the documented preservation conflict; no compatible route or runtime qualification is claimed. The issue remains open and assigned to phg. No production code, lifecycle operation or release publication was performed. The map's Decisions so far is unchanged until this child has a complete resolution.
Author
Owner

Interview checkpoint — manual invocation, helper selection and retention selected

phg answered “Q4 - Q6 agree” in the live wayfinder discussion on 16 October 2026. For Agree the manual and Homebrew lifecycle handoff, this selects:

  • Manual interface: a documented invocation of the bundled signed lifecycle helper for the prerelease, rather than adding an install-only GUI. Installation/replacement uses the shared signed lifecycle transaction at the fixed private account-owned destination.
  • Missing-helper selection: require explicit selection of a compatible complete signed retained bundle or a freshly downloaded signed DMG when the installed helper is unavailable. Verify signatures and compatibility; refuse ambiguous choices rather than automatically selecting the apparently newest bundle. A DMG remains an installation source, not an ordinary volume-operation launch location.
  • Retention and cleanup: keep every complete prior app bundle and omit optional preference/cache cleanup in the prerelease. Removal unpublishes the app into private retention. Authoritative journals, recovery registry and exported bundles remain preserved. No automatic retained-bundle pruning is selected.

The earlier accepted immediate busy refusal, enforced private operation launch locations and unchanged preservation guarantee remain in force. Homebrew compatibility and the associated release gate remain blocked.

Manual contract prepared for the final shared-understanding check

The install entrypoint receives the explicitly selected complete signed source app; removal targets only the internally derived supported live-app path. Production destination and lease paths are derived internally, without caller overrides. Both entrypoints run the shared transaction while holding the product lease continuously; a competing worker makes the command refuse before changing the installed app, retained bundles or recovery evidence. UI exit does not release worker authority.

Install verifies the complete source and required signed components, publishes privately and retains the complete prior app. Removal retains the complete live bundle rather than deleting recovery authority. Missing/untrusted/incompatible helpers and ambiguous state refuse; a missing live app does not establish Homebrew deregistration or purge completion. A failed transaction reports independently observed live/staged/retained state and whether reconciliation is required; it must not claim success or successful restoration merely because an attempted move or rollback returned.

The one remaining manual policy question is whether lifecycle operations may proceed while idle but unresolved recovery evidence exists, provided evidence and compatible retained recovery authority remain intact. Proposed answer: allow idle installation/replacement/removal under those conditions; keep the affected volume recovery-required and reject incompatible journal replay. This proposed answer is awaiting phg's feedback and is not adopted by this checkpoint.

Independent implementation evidence belongs to the existing Set validation gates and the implementation handoff and Qualify and package the native app lifecycle boundary: real independent lease-holder processes surviving caller/UI exit, filesystem/signature/path refusal and partial-failure observations, complete retained authority and byte/hash evidence preservation, plus final signed manual lifecycle commands on baseline/current-stable macOS. Use the shared public NativeAppLifecycle boundary and the existing acceptance work; no second filesystem-mutation matrix is introduced. This checkpoint supplies no runtime proof.

The complete child remains open and assigned to phg. Homebrew's staging/bookkeeping/purge/phase-gap and registration-reconciliation contract has not been approved, and accepting the manual path will not resolve those missing cask choices or remove them from the release destination. No source changes or lifecycle execution occurred.

## Interview checkpoint — manual invocation, helper selection and retention selected phg answered “Q4 - Q6 agree” in the live wayfinder discussion on 16 October 2026. For [Agree the manual and Homebrew lifecycle handoff](https://git.s1q.dev/phg/iodd-tool/issues/31), this selects: - **Manual interface:** a documented invocation of the bundled signed lifecycle helper for the prerelease, rather than adding an install-only GUI. Installation/replacement uses the shared signed lifecycle transaction at the fixed private account-owned destination. - **Missing-helper selection:** require explicit selection of a compatible complete signed retained bundle or a freshly downloaded signed DMG when the installed helper is unavailable. Verify signatures and compatibility; refuse ambiguous choices rather than automatically selecting the apparently newest bundle. A DMG remains an installation source, not an ordinary volume-operation launch location. - **Retention and cleanup:** keep every complete prior app bundle and omit optional preference/cache cleanup in the prerelease. Removal unpublishes the app into private retention. Authoritative journals, recovery registry and exported bundles remain preserved. No automatic retained-bundle pruning is selected. The earlier accepted immediate busy refusal, enforced private operation launch locations and unchanged preservation guarantee remain in force. Homebrew compatibility and the associated release gate remain blocked. ### Manual contract prepared for the final shared-understanding check The install entrypoint receives the explicitly selected complete signed source app; removal targets only the internally derived supported live-app path. Production destination and lease paths are derived internally, without caller overrides. Both entrypoints run the shared transaction while holding the product lease continuously; a competing worker makes the command refuse before changing the installed app, retained bundles or recovery evidence. UI exit does not release worker authority. Install verifies the complete source and required signed components, publishes privately and retains the complete prior app. Removal retains the complete live bundle rather than deleting recovery authority. Missing/untrusted/incompatible helpers and ambiguous state refuse; a missing live app does not establish Homebrew deregistration or purge completion. A failed transaction reports independently observed live/staged/retained state and whether reconciliation is required; it must not claim success or successful restoration merely because an attempted move or rollback returned. The one remaining manual policy question is whether lifecycle operations may proceed while **idle but unresolved recovery evidence exists**, provided evidence and compatible retained recovery authority remain intact. Proposed answer: allow idle installation/replacement/removal under those conditions; keep the affected volume recovery-required and reject incompatible journal replay. This proposed answer is awaiting phg's feedback and is not adopted by this checkpoint. Independent implementation evidence belongs to the existing [Set validation gates and the implementation handoff](https://git.s1q.dev/phg/iodd-tool/issues/6) and [Qualify and package the native app](https://git.s1q.dev/phg/iodd-tool/issues/24) lifecycle boundary: real independent lease-holder processes surviving caller/UI exit, filesystem/signature/path refusal and partial-failure observations, complete retained authority and byte/hash evidence preservation, plus final signed manual lifecycle commands on baseline/current-stable macOS. Use the shared public NativeAppLifecycle boundary and the existing acceptance work; no second filesystem-mutation matrix is introduced. This checkpoint supplies no runtime proof. The complete child remains open and assigned to phg. Homebrew's staging/bookkeeping/purge/phase-gap and registration-reconciliation contract has not been approved, and accepting the manual path will not resolve those missing cask choices or remove them from the release destination. No source changes or lifecycle execution occurred.
Author
Owner

Agreed manual-path policy — Homebrew contract remains unresolved

phg answered “Q7 agree” on 16 October 2026, completing the manual-path policy choices in this discussion. The selections below consolidate Q1–Q7 for Agree the manual and Homebrew lifecycle handoff. This is a partial policy record, not resolution of the complete manual/Homebrew integration question.

Agreed behavior

  1. Busy refusal: manual install/replacement/removal immediately refuses with a retry message while a worker holds the shared lifecycle lease. The worker keeps its lease through process lifetime, including after UI exit. Do not wait or forcibly stop it. Each lifecycle transaction holds the same exclusion continuously across its own changes; an earlier idle check is insufficient.
  2. Operation launch authority: ordinary volume operations may start only from the private installed app or an explicitly selected private retained recovery bundle, with enforced path and signature checks. DMG and Homebrew staging apps are installation sources, not volume-operation launch locations. This is required behavior for later implementation, not an assertion that the inspected code enforces it.
  3. Preservation remains fixed: preserve authoritative journals, the recovery registry, exported recovery bundles and complete retained recovery authority. phg explicitly chose to keep these guarantees and leave Homebrew compatibility blocked. No integration constraint, distribution-path release gate or preservation scope was waived.
  4. Manual invocation: document the bundled signed IODDLifecycle install/replacement and removal commands for this prerelease; no install-only GUI is selected. The install entrypoint receives the explicitly selected complete signed source app. Removal targets the internally derived supported live-app path. Production installation, retention and lease paths are derived internally, without arbitrary caller overrides. Both use the shared NativeAppLifecycle transaction and signed-component checks.
  5. Missing-helper selection: if the installed helper is unavailable, require an explicit choice of a compatible complete signed retained bundle or freshly downloaded signed DMG. Verify signatures and compatibility and refuse ambiguous/untrusted/incompatible choices. Do not automatically choose an apparently newest bundle. A freshly downloaded DMG can provide installation authority; it does not become an ordinary operation location or override journal compatibility rules.
  6. Retention and cleanup: installation/replacement retains the complete prior app; removal unpublishes the complete live app into private retained storage. Keep every complete prior bundle in this prerelease. Omit automatic retained-bundle pruning and optional preference/cache cleanup. Recovery evidence is never generic cleanup material.
  7. Idle unresolved recovery: installation/replacement/removal may proceed while recovery evidence remains unresolved only if no worker is active and all evidence plus compatible retained recovery authority remain intact. Missing or incompatible recovery authority causes refusal. The affected host volume remains recovery-required and ineligible for further mutation until recovery establishes a consistent result. Reject incompatible journal replay rather than interpreting or overwriting it.

Failure reporting and existing evidence boundary

The shared transaction must report independently observed live/staged/retained state and whether reconciliation is required after a partial failure. An attempted rollback does not establish that the old app was restored. A missing live app does not establish Homebrew deregistration or purge completion. Preserve remaining bundles and evidence whenever the result is uncertain; do not turn helper success into a claim that a surrounding package-manager operation completed.

Independent proof remains part of Set validation gates and the implementation handoff and Qualify and package the native app: the public NativeAppLifecycle boundary, real independent worker/lease-holder processes surviving caller/UI exit, signature/path/refusal and partial-failure observations, retained compatible authority and independently checked evidence bytes/hashes, and final signed manual invocation on baseline/current-stable macOS. Keep the existing lifecycle acceptance work; do not add a second filesystem-mutation matrix. Planning selections do not establish any runtime result.

Remaining blocker and ticket status

Homebrew can purge staging on pre-hook failure and after helper refusal. No compatible standard-cask route preserving the fixed evidence guarantee has been established. The accepted private launch boundary does not protect unknown recovery evidence already inside a purgeable staging tree. The source details stay with Verify standard Homebrew lifecycle compatibility.

The staging/bookkeeping admission, purge/phase-gap behavior, old/new/retained helper invocation and package-manager registration-reconciliation contract remain unresolved for Homebrew. Candidate hook/preflight ideas from the factual checkpoint were not approved by these answers. This issue remains open, assigned to phg, and continues to block Define the mise release stages and signing handoff. The destination still includes the qualified standard Homebrew path. No duplicate research/decision child is created for the same existing blocker, and the map will not index this open child as a completed decision.

Only tracker records were updated. No source changes, lifecycle operations, tests, signing or release publication occurred.

## Agreed manual-path policy — Homebrew contract remains unresolved phg answered “Q7 agree” on 16 October 2026, completing the manual-path policy choices in this discussion. The selections below consolidate Q1–Q7 for [Agree the manual and Homebrew lifecycle handoff](https://git.s1q.dev/phg/iodd-tool/issues/31). This is a partial policy record, not resolution of the complete manual/Homebrew integration question. ### Agreed behavior 1. **Busy refusal:** manual install/replacement/removal immediately refuses with a retry message while a worker holds the shared lifecycle lease. The worker keeps its lease through process lifetime, including after UI exit. Do not wait or forcibly stop it. Each lifecycle transaction holds the same exclusion continuously across its own changes; an earlier idle check is insufficient. 2. **Operation launch authority:** ordinary volume operations may start only from the private installed app or an explicitly selected private retained recovery bundle, with enforced path and signature checks. DMG and Homebrew staging apps are installation sources, not volume-operation launch locations. This is required behavior for later implementation, not an assertion that the inspected code enforces it. 3. **Preservation remains fixed:** preserve authoritative journals, the recovery registry, exported recovery bundles and complete retained recovery authority. phg explicitly chose to keep these guarantees and leave Homebrew compatibility blocked. No integration constraint, distribution-path release gate or preservation scope was waived. 4. **Manual invocation:** document the bundled signed IODDLifecycle install/replacement and removal commands for this prerelease; no install-only GUI is selected. The install entrypoint receives the explicitly selected complete signed source app. Removal targets the internally derived supported live-app path. Production installation, retention and lease paths are derived internally, without arbitrary caller overrides. Both use the shared NativeAppLifecycle transaction and signed-component checks. 5. **Missing-helper selection:** if the installed helper is unavailable, require an explicit choice of a compatible complete signed retained bundle or freshly downloaded signed DMG. Verify signatures and compatibility and refuse ambiguous/untrusted/incompatible choices. Do not automatically choose an apparently newest bundle. A freshly downloaded DMG can provide installation authority; it does not become an ordinary operation location or override journal compatibility rules. 6. **Retention and cleanup:** installation/replacement retains the complete prior app; removal unpublishes the complete live app into private retained storage. Keep every complete prior bundle in this prerelease. Omit automatic retained-bundle pruning and optional preference/cache cleanup. Recovery evidence is never generic cleanup material. 7. **Idle unresolved recovery:** installation/replacement/removal may proceed while recovery evidence remains unresolved only if no worker is active and all evidence plus compatible retained recovery authority remain intact. Missing or incompatible recovery authority causes refusal. The affected host volume remains recovery-required and ineligible for further mutation until recovery establishes a consistent result. Reject incompatible journal replay rather than interpreting or overwriting it. ### Failure reporting and existing evidence boundary The shared transaction must report independently observed live/staged/retained state and whether reconciliation is required after a partial failure. An attempted rollback does not establish that the old app was restored. A missing live app does not establish Homebrew deregistration or purge completion. Preserve remaining bundles and evidence whenever the result is uncertain; do not turn helper success into a claim that a surrounding package-manager operation completed. Independent proof remains part of [Set validation gates and the implementation handoff](https://git.s1q.dev/phg/iodd-tool/issues/6) and [Qualify and package the native app](https://git.s1q.dev/phg/iodd-tool/issues/24): the public NativeAppLifecycle boundary, real independent worker/lease-holder processes surviving caller/UI exit, signature/path/refusal and partial-failure observations, retained compatible authority and independently checked evidence bytes/hashes, and final signed manual invocation on baseline/current-stable macOS. Keep the existing lifecycle acceptance work; do not add a second filesystem-mutation matrix. Planning selections do not establish any runtime result. ### Remaining blocker and ticket status Homebrew can purge staging on pre-hook failure and after helper refusal. No compatible standard-cask route preserving the fixed evidence guarantee has been established. The accepted private launch boundary does not protect unknown recovery evidence already inside a purgeable staging tree. The source details stay with [Verify standard Homebrew lifecycle compatibility](https://git.s1q.dev/phg/iodd-tool/issues/28). The staging/bookkeeping admission, purge/phase-gap behavior, old/new/retained helper invocation and package-manager registration-reconciliation contract remain unresolved for Homebrew. Candidate hook/preflight ideas from the factual checkpoint were not approved by these answers. This issue remains **open**, assigned to phg, and continues to block [Define the mise release stages and signing handoff](https://git.s1q.dev/phg/iodd-tool/issues/32). The destination still includes the qualified standard Homebrew path. No duplicate research/decision child is created for the same existing blocker, and the map will not index this open child as a completed decision. Only tracker records were updated. No source changes, lifecycle operations, tests, signing or release publication occurred.
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#31
No description provided.