Skip to content

feat(app): streamline local install workflow and activation feedback#86

Draft
gly11 wants to merge 5 commits into
mrmidi:mainfrom
gly11:sbp2/install-workflow
Draft

feat(app): streamline local install workflow and activation feedback#86
gly11 wants to merge 5 commits into
mrmidi:mainfrom
gly11:sbp2/install-workflow

Conversation

@gly11

@gly11 gly11 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a documented install-asfw.sh workflow for build, ad-hoc signing, entitlement verification, recoverable app replacement, and optional Codex MCP skill refresh
  • keep SCSI HBA, fresh dext replacement, and MCP skill installation behind explicit flags
  • never prompt for a password; privileged retries use sudo -n and require the user to run sudo -v first
  • translate OSSystemExtensionErrorDomain failures into copyable, specific activation status text
  • remove the existing Swift 6 concurrent weak-self capture warning in Metrics polling

Relationship to the older fork PR

This carries forward the useful app feedback changes from gly11#10 and combines them with the local reinstall script requested for the current app layout. The script does not hard-code a user home path and keeps the previous app and MCP skill as timestamped backups.

The unrelated stacked controller, bus-reset, and old SBP-2 connector changes from that fork branch are intentionally excluded.

Validation

Static, tests, and build

  • bash -n install-asfw.sh
  • ./install-asfw.sh --help
  • 2 focused error-formatter tests pass
  • complete ASFWTests suite passes
  • unsigned Debug macOS build passes
  • the previous Metrics Swift 6 capture warning is absent after the change
  • git diff --check passes
  • GitHub Build and Test check: passed

ShellCheck was not available in the local environment.

End-to-end installation

The fresh SCSI installation path was exercised on the test Mac:

  • the app and bundled dext were ad-hoc signed with the SCSI entitlements and their embedded entitlements were verified
  • the installer requested the existing app to quit and requested removal of the previous dext before replacement
  • macOS left the previous extension in terminating for upgrade via delegate; killing the driver process and running systemextensionsctl gc did not clear that system-owned transition
  • the installer detected the pending transition, stopped safely, and reported that a reboot was required instead of continuing with a partial replacement
  • after reboot, the transition cleared; the dext became active again and the MCP control plane reached ready state

This confirms both the normal workflow and the expected recovery boundary when macOS cannot finish a DriverKit extension transition without rebooting.

CI organization

Shared CI workflow cleanup is tracked separately in #88. The CI failure-status propagation fix belongs to #88, not this installer PR. After #88 merges, this branch should be rebased onto main so the duplicated CI commits can be dropped cleanly.

@gly11
gly11 force-pushed the sbp2/install-workflow branch from 89654f5 to 99af330 Compare July 26, 2026 09:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant