01
全履歴の再確認と補足
331コミットで1.94.4〜1.105.1をリリースしました。Add-on契約パッケージ(@openmake/plugin-contracts)の分離、フェンシングトークンによる独立Knowledge Workerプロセス、長期実行タスクチェーン、Discord /task連携、safeFetchリダイレクトのセキュリティ修正を反映しました。
2026-10-17にmain f50ce73aの到達可能な全履歴を再確認しました。KST月曜00:00から日曜23:59:59までのコミット日で集計し、マージ・リリース・並列ブランチの別コミットを含みます。コミット数は機能数ではありません。テストと運用測定は当時のソース記録です。
10月17日09:31 KST確認時点の週終了前スナップショットです。後のコミットは含みません。通常タグは1.94.4〜1.105.1で、Add-on契約パッケージ・独立Knowledge Worker・長期実行チェーン・Discord /task連携を含みます。
02
開発状況
- Add-onの境界を契約パッケージとして明確に分離しました。@openmake/plugin-contractsパッケージを新設し、ライフサイクル契約(AddonRuntimeHandle、start/stop/drain/resume)、アクティブ状態、マニフェスト、貢献DTOをコア(apps/api)から分離しました。管理者が切り替えると、disabledは即座にdrain停止し、enabledはresume処理され、起動に失敗したadd-onはADDON_FAILED(503)として区別してルートやチャットフックでの通過を安全に防ぎます。add-onからBase内部への直接importを防止するlint ratchetと境界規則もCIゲートに接続しました(50fb0654、4e157fce、df8f035a、a34304e5、bbb2b50e、4a6691a2)。
- Knowledge収集ワーカーをAPIサーバーから分離し、専用プロセスとして起動しました。workers/knowledge-workerエントリポイントとPM2 openmake-knowledge-worker設定を用意し、ジョブキューマイグレーション004を適用しました。分散環境やジョブの再選定時のデータ汚染を防ぐため、DB Fencing Token(JobLease、assertLeaseHeld)を導入し、leaseを失った実行者によるチャンク置換・埋め込み挿入・インデックス切り替えの書き込みを拒否します。収集ジョブキャンセルAPI(POST /api/knowledge/jobs/:id/cancel)、ハートビート監視、ロールバック訓練スクリプトも整えました(c67aa2ae、3887b85c、d830a75f、9336e503、c627340b、7166d7b7)。
- エージェントタスクに長期実行チェーンを導入しました。ターン・時間・コンテキスト上限に達した際に失敗終了させる代わりに、引き継ぎターンプロンプトとワークスペーススナップショットを後続セグメントに渡す継続チェーン(マイグレーション188/189)を導入しました。進捗のないテキスト応答をセグメント進行とみなさないチェーン暴走ガードを設け、セグメントの時間上限を残りの総チェーン時間で制限しました。Web UIではチェーンセグメントをルートカードに折りたたみ、継続バッジと累積使用量を表示します(a27523ac、2d2132fc、5f56a510、ba2d063e、513fb88f、334bb1ae)。
- モデルサーバーの障害やデバイス切断に対する回復力を強化しました。モデルサーバーの長期障害や無応答時にタスクを失敗処理せず保留(parking)し、モデルヘルスが回復すると自動的に再開します。再起動によって切断されたローカルデバイスのタスクもデバイス待機として保留し、再接続後に引き継ぎます。繰り返される自動復旧は試行回数上限で停止します。ホストおよび外部ツール呼び出しに共通のタイムアウトを設け、中断シグナルに即座に反応するようにしました(fa304740、bb5c10fc、1db9ff11、9e55a388、5632c44e)。
- Discordボットからエージェントタスクを直接操作できるようにしました。/taskスラッシュコマンドとキャンセルボタンによりチャンネルからタスクの開始・承認・キャンセルを行い、ボットがタスク進行をリアルタイムで追跡します。タスク完了時には生成されたMarkdownアーティファクトとワークスペースファイル(file_ops)をDiscordファイル添付としてチャンネルに配信します。チャンネルにアップロードされた画像やドキュメントをバックエンドに転送して分析でき、Discordで崩れていたMarkdown表を太字の見出しとリストへ自動変換して表示します(61b41ec4、e0359607、8c6d6526、ce3d6663、b4897226、5dd312fe)。
- 意思決定アダプタにシャドウゲート2種を導入しました。検索の必要性を判定するゲートと、回答が実際の出典に根拠づけられているかを文単位で検証する回答根拠ゲートを接続しました。多段階計画が不要な検索クエリはPlannerをスキップして検索判定とともに直行するよう最適化し、オーケストレーターの内部タスク名が回答文に漏洩しないよう遮断しました(eecf8263、e723e99e、19c45eac、6cfe4687、acf909ec)。
- 運用検証とAPI負荷測定の体制を確立しました。scripts/bench/api-load.mjsハーネスとベースライン比較(D6)を構築し、起動ピークメモリがベースラインを汚染しないよう--settle待機(デフォルト90秒)を適用しました。統合検証マトリクスとリリース候補レポートツールを追加し、runbook §11に2026-10-16のステージング・本番デプロイ完了を正式に記録しました(6416051e、40838d74、40b6a1a3、b72f6ecb、fcb59865)。
- セキュリティ脆弱性とインターフェースの欠陥を修正しました。safeFetchがredirect: 'manual'・'error'を尊重するように修正し、MCP SDKのsame-originリダイレクトポリシーが迂回されないよう遮断しました。アップロードファイル名長を200バイトに制限してENAMETOOLONGエラーを防止し、チャット開始画面のクイックスタートカード案内文とUI選択性を改善しました(8fdf0322、df1165ae、1af20e13、2ac39b09)。
根拠資料
根拠
OPENMAKE · MIT OPEN SOURCE
OpenMake