Skip to content

Add Launcher fail-stop runtime supervision - #63

Merged
tmori merged 2 commits into
mainfrom
codex/issue62-fail-stop
Oct 16, 2026
Merged

tmori merged 2 commits into
mainfrom
codex/issue62-fail-stop

Conversation

@tmori

@tmori tmori commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • run hako-cmd check before startup and periodically while services run
  • stop every managed child and persist failure details when runtime health becomes ABORT
  • continue with warnings on UNKNOWN without automatically recovering shared memory
  • preserve logs and evidence during fail-stop handling
  • add lifecycle, timeout, and report-persistence regression tests

Dependencies

Validation

  • 130 pytest cases passed on macOS

Closes #62

@tmori tmori left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

レビュー結果: 修正後の再レビューを推奨(現時点ではマージ保留)。

良い点: 起動前/監視中の check、ABORT で管理プロセスの停止、UNKNOWN は警告、自動 recover しない、既存の起動時 mmap 自動削除を拒否する方針は良いです。Launcher の 3 OS CI も成功しています。

[P1] 異常な asset exit が TERMINATED で確定します — src/hakoniwa_pdu/apps/launcher/hako_launcher.py:223-229
watch で予期せぬ終了を検出しても self.terminate() を呼び、成功時に state=TERMINATED に上書きされます。Issue #62 の「異常 asset exit は FAILED として保持」に反します。失敗理由・該当 asset 名/終了コードを記録して FAILED のまま全 managed process を stop し、背景 session status に反映してください。

[P1] クリーンアップ失敗・生存者の記録不足 — hako_launcher.py:117-130
_fail_stop() の monitor.abort() が例外を投げた際、stderr に出すだけで failure_report に cleanup_failed / survivors が保存されません。プロセスが残っても session.json だけではわからず、オペレータが recover してよいか判断できません。少なくとも例外と survivor 情報を failure_report に記録し、未停止を明示してください。

[P2] バックグラウンド起動時 ABORT の詳細消失 — hako_launcher.py の _run_background_worker() 例外経路
activate() の startup check が ABORT で failure_report を作っても、catch が service.terminate() した後 _write_failed_session() に汎用メッセージだけを書きます。起動直後の障害も health details/owner/reason を残してください。

[P2] OS 実プロセスの統合検証 — 追加 CI は主に mock の Python テストです。Windows の AssetRunner.kill() は native child の親 PID を kill するだけで、子孫を確実に止めたことを検証できません。少なくとも子プロセスを生成する実プロセス型の ABORT 統合テストと、失敗時の残存プロセス診断をお願いします(改善不能な範囲は明記)。

これらを満たせば、Core CPP #64 → Core PRO #97 → Launcher #63 の依存順で取り込めます。

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.

Launcher: watch hako-cmd check, fail-stop entire session, preserve files for manual recovery

1 participant