Skip to content

agmsg/agguild/agguild_pool/codex_monitor_agents 分離と移行の計画 #373

Description

@kappaseijin4codex

依頼内容(ユーザー原文)

agmsg/agguild/agguild_pool/codex_monitor_agents 分離と移行の計画

上記には以下を含めてください。

  • アーキテクチャー
  • 成果物
  • スキルまたはコマンドの詳細と利用具体例
  • 移行への作業(issue)表。左の列は「完了」とし、作業が完了する毎にチェックを付ける。表はいつでも見れるように場所を固定したいのでissue※1の説明に記載してください。

また、すでにopenなissueもissue※1の表に記載してください。
issue※1に関連して新しく作る issue は随時表へ追加してください。

その後の追加指示: 「新たに作成するissueは既存のものをすべて解決したものだという認識です。既存のissueを解決した後に分離できないのならば、解決の優先順位を計画に組み込んでください。」(ただしrecord-only issueは対象外、とユーザー確認済み)

背景

Issue #222(検討: agmsg/agguild/agguild_pool の三分割によるフォーク独自拡張の分離)はPR #372の監査でclose済み(「検討・受入済み分離計画」の完了)。実際の物理分離はこのIssue #373で計画・実行する。

確定済みの制約(ユーザー決定、2026-09-09): 公式agmsg(fujibee/agmsg)へは絶対にPRを提出しない。案・パッチはkappaseijin/agmsg(または新設したkappaseijin/agguild)フォーク内に留める。この制約はagmsgスキル本体のguard(gh-write-owner-guard.sh/git-push-owner-guard.sh、ALLOWED_OWNERS=kappaseijin/kappaseijinjp)により技術的にも強制されている。

当初の設計はPR #374docs/decisions/2026-09-09T205500_issue-373-separation-migration-plan.md、merge commit 5cd527a9ef1df4132c0e597fa1f87c694294e52a)でformal review APPROVED・CI全件PASS済み。この設計はG0ゲート方式(後述)を採っていたが、2026-09-13の方針転換により撤回した。

方針転換(2026-09-13、ユーザー決定)

G0ゲート方式(前提8件が全てCLOSEDになるまで物理分離に着手しない)で進めた結果、G0前提の2番目(Issue #236、manager自己実施防止機能)自体がG1〜G4の4段階・複数の子issueに分岐し、G4統合受入ゲート(Issue #395/#407)の実行だけで3回の再実行を要するなど、時間とトークンの消費が過大で完了時期が見通せない状態になった。

ユーザーからの指摘(原文要旨):

自家版agmsgの分離が停滞していたので、計画をやり直し、素早く一から作るのが
今回の趣旨と目的です。

これを受け、一旦全作業を停止し、現行フロー維持か代替手法かをbreakerに比較判断させた。breaker断定(2026-09-13T08:36:53Z)は「切り替える。ただし修正3点つき」:

  1. G0前提2番目(Issue manager(PM)の実作業自己実施を仕組みで防止する #236)とその子孫(G4連鎖: P2: native launcher・broker adapter・独立collectorを接続する(G4) #385/G4統合受入ゲート: 実native CLIでのfault injection・pilot起動判断 #395/G4統合受入ゲートの再実行(G4-D・harness是正後) #407/gate: N1のtranscript観測が無送信では成立しない(識別用プロンプト送信への設計変更) #434/gate: N1のprocess-command検証がexec前のlauncherコマンドラインを確定failにする(三値化が必要) #448/gate: N1_READY_VERIFIED_CLI_VERSIONSが2.1.270に未対応(インストール済み版と不一致) #450、PR fix(g4): judge N1 argv only after the launcher has exec'ed claude #451/docs: state pty precondition for issue 434 n1 marker design #437)を凍結する(closeせず、完了もさせない)
  2. forkのアンインストールはagguildの日常導線smoke合格後に行う(fork skillは退避してrollback可能に保つ)
  3. formal reviewとverifierは一時的に外すが、CI+breaker自身の負の対照+ユーザーsmokeは残す

ユーザーはこの断定を全て承認し、G0ゲート方式は撤回、breakerが直接agguild/agguild_pool/cutoverを実装する運用(クロスレビュー必須原則への一時例外、期間: agguild構築期間、終了条件: 新環境で1週間運用)へ切り替えた。

この方針転換により、以下「実施結果」節に記載する物理分離の主要作業は、G0の完了を待たずに完了している。 旧・G0ゲート方式の記述は本文末尾に履歴として残す。

アーキテクチャー

三層を別repositoryとして扱う。(実装済み。以下は設計時の記述で、実態と一致している)

  • agmsgkappaseijin/agmsg): 固定した公式providerを利用する通信基盤
  • agguildkappaseijin/agguild、新設済み): 独自運用の共有実行層
  • agguild_poolkappaseijin/agguild_pool、新設済み): personaと管理manifestを保持するデータ層
flowchart LR
  U[利用者又はagent] --> G[agguild CLIとskills]
  G --> M[互換性manifest]
  G --> A[固定provider agmsg]
  G --> P[agguild_pool]
  A --> S[通信と登録のstore]
  P --> D[personaとproject差分]
  G --> O[guard、launcher、broker、collector]
  O --> A
  O --> D
Loading

agguildはmanifestに固定したprovider rootとcommit、公開command、schema、exit statusだけを使う。agguild_poolはagmsg store、runtime claim、共有PATH、共有skillを保持しない。codex_monitor_agentsは移行元だった(人格dir135件は移行・削除済み。作業クローン67件は移していない)。各作業cloneのGit rootとagmsg registrationのprojectpathは移していない(personaをpoolへ配置してもregistration pathが変わらないため、移行前のagent identityを壊していない。実測で確認済み)。

repositoryとディレクトリ

repository 目標root 保持するもの 保持しないもの
kappaseijin/agmsg scripts/docs/、公式互換試験 - 独自運用の共有runtime、persona data、pool data
kappaseijin/agguild bin/agguildskills/lib/manifests/tests/docs/ role運用、launcher、guard、broker、collector、provider compatibility agmsg private storeの外側reader、personaの認可正本
kappaseijin/agguild_pool personas/projects/manifests/ persona、project差分、明示されたpersona固有設定 shared executable、shared PATH、live DB、runtime claim、作業clone

data flow

  1. agentはagguildのskill又はCLIを起点にする
  2. agguildは互換性manifestを読み、provider root、固定commit、要求capabilityを検査する
  3. capabilityが一致したときだけ、agmsgの公開commandを固定argvで呼ぶ
  4. persona固有の設定が必要なときだけ、pool manifestで解決した当該personaのlocal/を読む
  5. provider、manifest、identity、停止点のいずれかが不明なら、agguildは副作用を起こさず停止する

成果物

成果物 状態
agmsg 公式互換のprovider checkout(fujibee/agmsg v1.2.3-31-g3ab9e31)、公開CLI仕様 完了。cutover実施済み(2026-09-13T18:19+09:00、rollback不要と判定)
agguild CLI、skills、compatibility manifest schema、guard/launcher/broker/collector modules 完了
agguild_pool persona manifest schema、persona data(135件) 完了。個人情報・実データ279件の混入を発見しgit履歴ごと除去済み
移行証跡 退避tar、削除前後のvalidate結果、正負の対照記録 完了。Issue本文コメント群に記録

各repositoryのREADMEは実装時に追加・更新済み。

スキルまたはコマンドの詳細と利用具体例

実装済み。 kappaseijin/agguildbin/agguildから利用する。

command 引数 成功時の出力 fail-closed条件
agguild provider check --manifest <file> [--provider-root <path>] fixed commit、capability、schemaの検証結果 root、commit、schema、capabilityのいずれかが不一致又は不明
agguild pool validate --pool <dir> --manifest <pool.json> persona entriesの検証結果(0 pass / 1 fail / 2 unknown) shared executable、secret、必須field欠落、digest不一致
agguild spawn <type> <name> [spawn options] role別overlay(model/effort)を合成し公式agmsgのspawnを実行 provider未検証時は拒否
agguild despawn <team> <from> <name> [--force] herdr pane close込みの解体 -
agguild send <team> <from> <to> <body-file> - 本文ファイル経由の送信 ファイル不在時は拒否

利用例:

AGGUILD=/Users/kappa/Dropbox/data/dev/agguild/bin/agguild
$AGGUILD provider check --manifest manifests/providers/agmsg.json
$AGGUILD pool validate --pool agguild_pool --manifest agguild_pool/manifests/pool.json
$AGGUILD spawn claude-code agmsg_breaker_claude --project <path> --team agmsg [--fresh]

重要: ~/.agents/skills/agmsg/scripts/spawn.shを直接呼ぶとrole別overlay(model/effort)が適用されない(cutoverでこの機能はagguild側に移設されたため)。席の起動・再起動は必ずagguild spawnを使う(Issue #452で恒久対応を追跡)。

実施結果(2026-09-13完了)

作業 結果
kappaseijin/agguild新設・provider manifest 完了
kappaseijin/agguild_pool新設・persona manifest schema 完了
provider check・pool validateの実装(隔離fixture) 完了、正負の対照確認済み
guard(gh/git owner guard)のagguild切り出し 完了
spawn/actas/send/watch/despawn wrapperの実装 完了
fork→公式agmsg切替(cutover) 完了(2026-09-13T18:19+09:00、rollback不要)
codex_monitor_agentsagguild_poolデータ移行 完了(135件、個人情報279件の除去・履歴書き換え込み)
独自拡張(37本のスクリプト改変等)の残存台帳対応付け 完了(moved 42 / kept 250 / dropped 595 / official 8)
起動規約4ファイル・振り返り検査ツールの参照先切替(codex_monitor_agentsagguild_pool 完了(全28チーム分、正負の対照つき)
旧root(人格dir135件)の削除 完了
forkリポジトリ本体・codex_monitor_agents自体の削除 不可・保持継続(kept 250件の唯一の置き場、作業クローン67件が同居)

上記により、「アーキテクチャー」「成果物」節に記載した三層分離は物理的に完了している。

G4連鎖(凍結中、旧G0前提の残骸)

方針転換前に着手していたIssue群。closeせず、完了もさせず凍結。 2026-09-20(移行完了から1週間後)に、新環境で問題が無ければクローズする(ユーザー決定)。ラベルclose-scheduled-2026-09-20を付与済み。

Issue/PR 内容
#236 manager(PM)の実作業自己実施を仕組みで防止する(P0〜P4段階展開)
#385 G4: native launcher・broker adapter・独立collectorを接続する
#395 G4統合受入ゲート
#407 G4統合受入ゲートの再実行
#434 gate: N1のtranscript観測設計
#448 gate: N1のprocess-command検証の三値化
#450 gate: N1_READY_VERIFIED_CLI_VERSIONS不整合
PR #451 fix(g4): N1 argv判定修正
PR #437 docs: PTY前提追記

独自拡張(kept 250件)の扱い

新環境(agguild)に移設されず、forkリポジトリ本体にのみ残る4系統: delivery gate(旧Issue #164のTOCTOU修正含む)、全チームのpair解決、runtime DBの堅牢化、公式未取込みの不具合修正。forkリポジトリ本体は削除しないため保持され続ける。新環境の運用で欠落による問題が顕在化したら、最小パッチproviderとして当てる(manifestのpatches配列に口を用意済み)。

record-only(分離の前提から除外・ユーザー決定)

Issue 内容 扱い
#358 ci: watch ctrl:despawn HERDR_ENV未設定試験がubuntu shardで失敗する record-only、着手しない
#355 ci: windows driver-input(fujibee#817)ジョブがテストPASS後にexit1でcancelledになる record-only、着手しない
#308 独立実装の一致は仕様の正しさを保証しない record-only、着手しない
#304 ci: codex-bridge の websocket 試験が macOS 10 分割で再現的に落ちる record-only、着手しない
#296 docs: #279既知の穴がPR #295で実際に顕在化した記録 record-only、着手しない

受入対照(実施済み)

対象 正の対照 負の対照 結果
provider 固定commitの公開commandがmanifestどおりに応答する commit、schema、capabilityの不一致を成功にしない pass
pool 一つのpersona manifestとlocal例外が解決する shared script、secret、別persona参照を受け入れない pass
identity 作業clone pathで一意にseatを解決する persona path移動をregistration path変更と誤認しない pass(他4チームでサンプル確認)
destination kappaseijin/*内の設計PRが通る fujibee/agmsgへのPR又はpushを拒否する pass
個人情報 pool内のpersonaデータが読める 証跡・実データ(279件)を追跡・履歴に残さない pass(履歴書き換え・fresh clone再検証済み)

受入条件(更新後)

  1. 上記4項目(アーキテクチャー・成果物・スキル/コマンド詳細・移行issue表)がこのIssue本文に記載されている ✅ 達成
  2. 移行issue表が実際の作業進捗を反映する ✅ 本更新で達成(G0ゲート方式は撤回し実施結果を記載)
  3. 公式agmsg(fujibee/agmsg)へのPR提出が一切発生していない ✅ 継続監視、違反なし
  4. G0(前提8件)が全てCLOSED又は明示NOT_PLANNEDになる 撤回(2026-09-13方針転換によりG0ゲート方式自体を廃止。G4連鎖は個別に凍結・2026-09-20判断へ切替)
  5. 実際の物理分離(agguild/agguild_pool新設、codex_monitor_agentsからのデータ移行)が完了する ✅ 達成(本文「実施結果」節参照)

残る作業は、G4連鎖9件の2026-09-20判断のみ。 それが完了(クローズまたは継続判断)した時点で、このIssue #373自体もクローズする。


旧・G0ゲート方式の記述(2026-09-09〜2026-09-13、方針転換前。履歴として保持)

物理移行(repository skeleton、コード切出し、persona/data移行、現役切替)は、以下8件が全てCLOSED又は明示NOT_PLANNEDになるまで着手しない、という設計だった(breaker指定の解決順、2026-09-09T12:02:38Z断定)。

Issue 内容 状態(方針転換時点)
#300 ci: macOS shard test 452ハング CLOSED
#236 manager(PM)自己実施防止 OPEN→G4連鎖として凍結
#341 ci: launcher系テスト断続失敗 CLOSED(PR #375診断・PR #376 revert)
#294 ci: watch consume failure間欠失敗 CLOSED(診断格上げ)
#273 ci: base branch変更でCI起動せず CLOSED(PR #418/#421
#272 test: 変異検査被覆漏れ CLOSED(PR #417
#268 test: bounded watcher対照追加 CLOSED(PR #419
#362 ci: despawn broad watcherハング OPEN(凍結対象外、再現条件待ち、緊急性低)

設計根拠(当初): PR #374docs/decisions/2026-09-09T205500_issue-373-separation-migration-plan.md)。方針転換の根拠: breaker断定2026-09-13T08:36:53Zおよびユーザー承認(本Issueコメント参照)。

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions