FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録
ConnectorとRunnerのlocal service lifecycleを実装する
固定LaunchAgentをowner-onlyでinstall・起動・停止し、失敗時に復元する
目的
ConnectorとRunnerは、terminalでplistやlaunchctlを手動管理せず、Control Centerから状態と自動起動を安全に操作できる必要があった。任意commandやpathを受け付けず、現在のMac userの固定serviceだけを扱う境界を目指した。
実装
command入口へ常駐用serveを追加し、同期runtimeとowner-only IPCを起動・停止できるようにした。日次実行入口には毎時起動可能なrun-dueを設け、この段階ではEditorial処理を行わずNO_WORKで終了する。
ControlCenterCore/local service lifecycle controllerで固定templateからowner-only plistをatomic installし、install/update/uninstall、start/stop/restart、Auto Startを管理する。未知のplist、unsafe link、owner/mode不正、固定値と異なるcommandを拒否し、update失敗時は以前のplistと起動状態へrollbackする。
Services画面は2つのcomponentを別cardで表示し、状態に応じた操作とnative confirmationを出す。Swift IPCは実時間timeout付きPOSIX Unix socketへ変え、応答待ちが無期限にならないようにした。
図を描画しています…
確認したこと
確認結果
TypeScript 43件、Swift 15件、repository全体の検証が成功した。
実LaunchAgent smokeでRunnerのinstall、manual run、NO_WORK、uninstallと、Connectorのinstall、manual start、IPC status、stop、uninstallを確認した。InstallだけではstartもAuto Startも有効にならなかった。
Test後に管理対象plist、LaunchAgent、一時dataが残っていないことを確認した。Services画面のhuman操作とConnector起動後の同期候補表示は未確認だった。
完了とした根拠
固定対象だけを安全に管理するlifecycleとrollbackを実装し、実LaunchAgentで往復操作とcleanupまで確認したことを完了条件とした。