Skip to content

fix(monitor): production に scheduled scan の駆動が存在せず autonomous launch が一切発生しない #3505

Description

@akiojin

症状(PM 実地検証 2026-08-10、Board handoff より)

enabled:true + autonomous_mode:true + has_launch_profile:true + queue 先頭 #3492 の状態で 15 分以上 scheduled scan が一度も走らず、launch が発生しないissue.monitor.launch_now は priority 先頭化に成功するが scan_requested:false(daemon 不達で publish 失敗)。『next-scheduled-scan が拾う』前提のフォールバックも発火しない。

根本原因(コード調査で確定)

production の GUI-only トポロジには スケジュールスキャンの駆動が存在しない:

  • スキャンループ(scan tick)は実 daemon(gwtd daemon / crates/gwt/src/cli/daemon/server.rs)内にのみ実装されている(daemon 単一 driver 化の帰結)
  • しかし production で実 daemon を起動する経路がどこにもない(GUI は internal://gwt-front-door の placeholder endpoint を startup-cwd scope に書くのみ。DaemonBootstrapAction::Spawn を実際に spawn する caller は皆無)
  • GUI 側の local drive(IssueMonitorScanPolicy::Scan)は frontend event(Monitor UI 表示等)と control commit 時にしか走らず、周期 tick が無い(main.rs イベントループに monitor interval タイマー不在)

つまり「Monitor ON なら next-scheduled-scan が拾う」という全所の前提が production では恒久的に偽。

修正方針(最小・既存アーキテクチャ整合)

GUI に周期 scan tick を追加し、既存の local drive choke point(fence-aware・remote effect authority 判定込み)を周期起動する:

関連: #3492(endpoint scope 非対称)、#3432(gui_connected)、SPEC #3431 FR-108/T-201・Board handoff(session 1186ba69)

2026-08-10 受け入れ条件の補正(PR #3507 取り込み後の RED)

PR #3507 で周期 tick は追加されたが、Unix GUI の claim proposal / local effect driver は cfg(not(unix)) のままで、queue refresh 後に autonomous launch が進まないことを回帰テストで確認した。単純な cfg 解除は live daemon と二重 driver を作るため、以下を完了条件とする。

  • daemon authority が無い GUI-only topology で、enabled + autonomous + launch profile + launchable candidate の scheduled tick が claim、pending delivery、launch request のいずれかへ進む。
  • live daemon fence がある場合、GUI tick は remote scan / claim / launch effect を生成しない。worker 中に authority が出現しても commit 直前の再確認で fail closed にする。
  • remote GitHub scan / effect I/O は tao event loop 外の project-scoped single-flight worker で実行し、重複 tick が worker backlog や UI freeze を作らない。
  • queue-only、active launch、needs_human の monitor snapshot が quiet PM の periodic wake を再武装する。prefs から空 queue を再構築して standing work を失わない。
  • scheduler / worker spawn failure と remote failure は観測可能である。
  • Unix no-daemon / active-fence / duplicate-tick tests、Windows behavior/compile、full Rust verification を実行する。

Scope: SPEC #3431 FR-108(b) corrective task T-217。#3492 の endpoint scope・real daemon lifecycle、T-202、T-206 は対象外。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions