Critical Path Partners forensic scheduling MCP について
Critical Path Partners forensic scheduling MCPは、オープンソースのcpm-engineを基盤に、Primavera P6の工程表をフォレンジック分析するツールを提供します。遅延分析や請求を扱う工程アナリスト向けで、AACEに沿った計算と計算来歴のマニフェストを備えています。
主な機能
- 01CPMの順方向・逆方向計算
- 02AACE準拠のフォレンジック手法
- 03工程健全性とベースラインの比較
- 04複数地域の祝日カレンダー
- 05計算マニフェストとトポロジーハッシュ
活用シーン
- 01クリティカルパスとフロートの分析
- 02請求に向けた遅延分析の準備
- 03DCMA-14による工程健全性の確認
- 04計算来歴の再現と検証
MCP 対応
ホスト型MCPサーバーはmcp.criticalpathpartners.caで稼働し、cpm-engineに基づく工程フォレンジック分析ツールをクライアントに公開します。タグラインは13個のツールに言及していますが、提供された本文では個別の一覧は確認できません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.criticalpathpartners.ca/mcpclaude mcp add --transport http cpp-cpm-engine https://mcp.criticalpathpartners.ca/mcp{"mcpServers":{"cpp-cpm-engine":{"type":"http","url":"https://mcp.criticalpathpartners.ca/mcp"}}}Cursor で開く{"servers":{"cpp-cpm-engine":{"type":"http","url":"https://mcp.criticalpathpartners.ca/mcp"}}}VS Code で開く{"mcpServers":{"cpp-cpm-engine":{"type":"http","url":"https://mcp.criticalpathpartners.ca/mcp"}}}{"mcpServers":{"cpp-cpm-engine":{"serverUrl":"https://mcp.criticalpathpartners.ca/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
13| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| schedules | array | はい | |
| project_name | string | いいえ | |
| baseline_idx | integer | いいえ | |
| entitlement_milestone | string | いいえ | |
| output_dir | string | いいえ |
詳細
cpm-engine
AACEに準拠した手法を採用し、公開済みのDaubert開示を備えたオープンソースのCPMエンジンです。 JSのユニットテストは1,510件です。JSエンジンとPythonリファレンス実装は、列挙された相互検証比較22,189件すべてで一致しており、スキップされた比較はありません。これは同一作者による2つの実装間の整合性チェックであり、P6との照合ではありません。第三者が再現できる検証内容はDAUBERT.md §3.1に記載されています。
法廷向けの利用では、このエンジンを、アナリストのアプリケーション運用規律を記したFORENSIC_USE_SOP.md、検証チェーンを記したVERIFY_RELEASE.md、リリースごとの証跡を収録したrelease-evidence/、フィールド単位のP6比較フレームワークを記したvalidation/p6-comparison/、および保留データによるP6比較を記したvalidation/held-out/と併用してください。法廷向けの報告書でREADMEを引用しないでください。DAUBERT.mdおよびFORENSIC_USE_SOP.md §Required pairingに記載された文書を引用してください。
Critical Path Partners(フォレンジックスケジューリングのコンサルティング会社)が保守しています。
クイックスタート
npmパッケージはこのリポジトリより古い状態です。 npmのlatestは2.9.19で、公開日は2026-05-17です。上のnpmバッジに表示されるのはこのバージョンです。それ以降、npmには何も公開されておらず、後続のリリースはすべてgitタグとしてこのリポジトリで公開されています。したがって、npm install cpp-cpm-engineでは、DAUBERT.md、release-evidence/の証跡パケット、またはこれらのドキュメント内で参照されているいずれのバージョンについても、記載されたエンジンを入手できません。gitタグからインストールしてください。
git clone https://github.com/danafitkowski/cpp-cpm-engine.git
cd cpp-cpm-engine
git checkout v2.10.14
このエンジンには実行時依存関係がないため、リポジトリをクローンするだけで利用できます。これは、VERIFY_RELEASE.mdで反対側の専門家に案内しているインストール方法と同じです。
const E = require('./cpm-engine.js');
const result = E.computeCPM(
[
{ code: 'A', duration_days: 5, early_start: '2026-01-05', clndr_id: 'MF' },
{ code: 'B', duration_days: 3, clndr_id: 'MF' },
{ code: 'C', duration_days: 4, clndr_id: 'MF' },
],
[
{ from_code: 'A', to_code: 'B', type: 'FS', lag_days: 0 },
{ from_code: 'B', to_code: 'C', type: 'FS', lag_days: 0 },
],
{
dataDate: '2026-01-05',
calMap: { MF: { work_days: [1, 2, 3, 4, 5], holidays: [] } },
}
);
console.log('Project finish:', result.projectFinish); // 2026-01-21
console.log('Critical path:', result.criticalCodesArray); // ['A', 'B', 'C']
console.log('Engine version:', result.manifest.engine_version); // 2.10.14
これだけです。順方向パス、逆方向パス、トータルフロート、フリーフロート、カレンダー計算、P6準拠の日付計算、複数管轄区域の祝日処理、すべて完了です。
このエンジンを選ぶ理由
| 機能 | cpm-engine |
|---|---|
| オープンソース | はい |
| AACE 準拠の手法ラベル(29R-03 / 49R-06 / 52R-06) | はい |
Daubert / FRE 702 の開示(DAUBERT.md を組み込み) | はい |
| 列挙された CPM の対象範囲で JS と Python の結果がビット単位で一致 | はい |
| P6 と同様に、各カレンダーの稼働時間帯に基づいて時間と分単位でスケジュールを作成(P6 の時間が指定されている場合) | はい |
| トポロジーのフィンガープリントハッシュ(SHA-256、コピー検出シグナル) | はい |
| 運動学的遅延ダイナミクス(公開前、JS のみ) | はい |
| 階層的プーリングによるベイズ更新(公開前、JS のみ) | はい |
66 種類の既定の休日ルールセット(複数の管轄区域に対応。フレームワーク準拠の既定値であり、法的に認定されたものではありません。詳細は docs/jurisdictions.md を参照) | はい |
| MIT ライセンス | はい |
(v2.9.33 の監査サイクルで、ベンダー比較を削除しました。特定の商用 CPM ツールとの比較は、エンジンのメンテナーが作成するのではなく、独立したレビュー担当者が提示する必要があります。)
エンジンの計算処理は汎用的なものです。フォレンジックなスケジュール分析を支えるのは、ワークフロー、手法の規律、Daubert 開示への対応姿勢であり、フォワードパスそのものではありません。Critical Path Partners はエンジンをオープンソース化することで、学術関係者、個人で活動するフォレンジックスケジューラー、請負業者の社内スケジューラーが、透明性が高く引用可能な基盤の上に構築できるようにしています。
構築できるもの
- フォレンジック遅延分析の基本機能 — AACE 29R-03 MIP 3.3(ウィンドウ分析)、3.6/3.7(将来予測 TIA の単一ベース/複数ベース)、3.8(完成実績からの逆算)に基づく分析をサポートする CPM のフォワードパス/バックワードパスです。エンジンは CPM の計算処理を提供します。手法の完全な実装(期間の選定、フラグネットの統合、完成実績の再構築)は CPP のフォレンジックスキルスイートに含まれます。この OSS エンジンは、その基盤となる計算コアであり、手法全体を実装したものではありません。
- 請求パッケージ — カバーレター、証拠資料、軽減措置ログを含む、発注者への提出用 EOT パッケージ
- Daubert 開示資料 — FRCP 26(a)(2)(B) レポート、FRE 702/707 の 4 要件に関する手法説明
- スケジュールリスクの基本機能 — ベイズ事後推定(
computeBayesianUpdate)、およびこのエンジン上に構築されるモンテカルロラッパーの内部ループとして使用できる、反復ごとの CPM(runCPM)です。モンテカルロ/QRAMM の完全な評価機能は、この基本機能を基盤とする CPP のフォレンジックスキルスイート(schedule-risk-analysis)に含まれます。 - スケジュールの健全性 — DCMA-14 評価、A~F の自動採点、ベースラインと現行スケジュールの差分
- 複数管轄区域のカレンダー — 66 種類の既定の休日ルールセット(CA-FED と 13 の州・準州、US-FED と 50 州および DC)。これらは、一般的な日付計算に十分な、フレームワークに準拠した既定値です。管轄区域ごとの参照表とフォレンジック用途での検証ガイダンスについては、
docs/jurisdictions.mdを参照してください。これらは法的に認定されたカレンダーではありません。フォレンジック用途では、opts.calendarを使ってプロジェクトの契約上のカレンダーで上書きしてください。
AACE への準拠
このエンジンは、以下の AACE 推奨実務指針の計算を実装しています。
| RP | タイトル | 出力される手法ラベル |
|---|---|---|
| 29R-03 | フォレンジック・スケジュール分析 | MIP 3.3 / 3.6 / 3.7 / 3.8 |
| 49R-06 | クリティカルパスの特定 | LPM, TFM, MFP |
| 52R-06 | 将来予測型タイム・インパクト分析 | MIP 3.6 (Single Base) / MIP 3.7 (Multiple Base) |
| 122R-22 | 定量的リスク分析成熟度モデル(QRAMM) | (バッジ表示) |
| PPG #20 (2nd Ed 2024) | フォレンジック・スケジュール分析実務ガイド | (一般的な認知) |
手法ラベルは result.manifest.methodology に出力されます。AACE の査読者や相手方の専門家が期待する文字列と完全に一致します。
検証可能な来歴
すべての計算でマニフェストが出力されます。
result.manifest = {
engine_version: '2.10.14',
method_id: 'computeCPM',
activity_count: 3,
relationship_count: 2,
data_date: '2026-01-05',
calendar_count: 1,
computed_at: '2026-05-10T14:32:01.847Z',
}
さらに、フォレンジックな来歴を記録するため、すべての入力に SHA-256 トポロジーハッシュが付与されます。
const hash = E.computeTopologyHash(activities, relationships);
console.log(hash.topology_hash); // 64-char hex over canonical (code, duration, sorted preds + types + lags)
// Two XERs with identical hashes have IDENTICAL CANONICALIZED TOPOLOGY under the hashed-field
// set (activity codes, durations, predecessor links + types + lags). NOT a forensic-equivalence
// statement — different calendars, resources, WBS, names, or constraints can still produce
// different schedules under the same hash. The hash is a signal, not a schedule-equivalence proof.
これはエンジンのネットワークトポロジーのフィンガープリントです。**入札談合の兆候、遡及的な改ざんの兆候、XER 間のコピー検出は、いずれもこれに依存しています。**また、相手方弁護士が CPP 分析のトポロジーレベルの整合性を事後検証できるようにする基盤でもあります。同じ XER からハッシュを再計算し、提出からレビューまでの間にアクティビティ/関係のネットワークが変更されていないことを確認できます。
JavaScript と Python の同等性
このエンジンには Python 版(_cpp_common/scripts/cpm.py)もあり、すべての CPP フォレンジックスキルで使用されています。相互検証により、2 つの実装はビット単位で同一に保たれています。
npm run crossval
# 233 fixtures, 22189 checks executed, 0 deviations, measured 2026-10-25.
# That is the whole enumerated surface: since v2.10.1 the harness field guards skip nothing.
さらに、282 件のアクティビティを含む実際の XER を用いたストレステストでは、不一致が 0 件と報告されています。この XER は公開されていない単一の参照ファイルで、コミットされていません。また、このリポジトリから実行を独立して再現することはできません(DAUBERT.md §2 を参照)。
つまり、JavaScript(ブラウザー、Node)で実行するフォレンジック分析は、Python(請求準備スキル、MCP サーバー、バッチパイプライン)で実行する分析と同じ数値を生成します。どのインターフェースで生成されたかにかかわらず、すべての CPP 成果物に同じマニフェストが含まれます。
サードパーティによる再現
JS エンジンとその Python リファレンスはどちらもここで保守されているため、両者の一致は独立したテストではありません。サードパーティができるのは、1 コマンドで再現できるハーネスを使って、別のマシンで結果を再現することです。
git clone https://github.com/danafitkowski/cpp-cpm-engine
cd cpp-cpm-engine
git checkout <commit-sha> # the SHA cited in the disclosure
npm run verify # unit, crossval, citation, truncation and version-drift tests
# → attestations/latest.json ← machine-readable witness file
エンジンには npm 依存関係が一切ないため、再現に必要なのは Node 18+ と Python 3.10+ のみです。証跡ファイルには次の情報が含まれます。
- エンジンの SHA-256 + Python リファレンスの SHA-256
- コミット SHA + git ref + ワークフロー URL(CI 内)
- テスト件数:合格/失敗したユニットテスト、クロスバリデーションのフィクスチャ + チェック、引用回帰のステータス
- タイムスタンプ + Node バージョン + プラットフォーム
- 判定(PASS/FAIL)
ローカルで生成した証跡内のエンジンと Python リファレンスの SHA-256、および合格件数を、CI 署名済み証跡の内容と比較してください。CI はプッシュのたびにワークフローのアーティファクトとして証跡を公開し、actions/attest-build-provenance を通じて Sigstore 署名します。各リリースの署名済み証跡は release-evidence/<version>/witness-<version>.json にコミットされ、latest.json としてリリースに添付されます。クリーンなクローンで SHA-256 と合格件数が一致すれば、同じバイト列があなたのマシンでも同じ結果を出すことを示しています(証跡ファイル自体は、それぞれ固有のタイムスタンプを持つため異なります)。これは再現性を確認するものであり、独立性を示すものではありません。テストとリファレンスは、依然として作者が用意したものです。
リリースの CI 署名済み証跡を検証します。npm run verify でローカル生成した証跡は未署名のため、検証しても証明書は見つかりません。署名済み証跡はリポジトリ内に含まれています。
gh attestation verify release-evidence/v2.10.14/witness-v2.10.14.json --owner danafitkowski
Daubert に関する説明の全文は `DAUBERT.md §3.1, Independent Verification を参照してください。ここでの用語は、作者以外の当事者が実行できるチェックを意味します。
本番環境での使用
ホスト型 MCP サーバー(Cline、Cursor、Claude Code、Claude Desktop)のクライアント設定については、llms-install.md を参照してください。エンジンは mcp.criticalpathpartners.ca で稼働しています。ブラウザーでお試しください。同じ cpm-engine.js ファイルがワイヤー経由で配信され、CPP が生成するすべてのレポートにインラインで埋め込まれています。
CPP のフォレンジック・スイート(forensic-delay-analysis、claims-preparation、claim-workbench、time-impact-analysis、schedule-risk-analysis、collapsed-as-built、counter-claim-analysis)は、すべてこのエンジンを使用しています。ブラウザー/MCP 用の JS 移植版と、バッチパイプライン用の Python 版です。
引用
このエンジンを学術研究または専門家証人報告書で使用する場合は、次のように引用してください。
Fitkowski, D. (2026). cpm-engine: AACE 準拠の手法ラベルと公開された Daubert 開示を備えたオープンソースのクリティカルパス法エンジン。 Critical Path Partners. Version 2.10.14. https://github.com/danafitkowski/cpp-cpm-engine
アルゴリズムの引用については、docs/citations.md を参照してください。すべての引用は一次資料と照合済みです。
ライセンス
MIT — LICENSE を参照してください。
このエンジンは、商業的なフォレンジックコンサルティング、学術研究、ご自身のスケジューリング製品、裁判所に提出する専門家報告書に使用できます。著作権表示だけは残してください。サポートは含まれません。保証もありません。エンジンを用いて導き出す結論については、ご自身が責任を負います。 Daubert 開示(DAUBERT.md)が組み込まれています。ご自身の FRCP 26(a)(2)(B) 報告書を作成する際の出発点として利用できます。
リリースノート
v2.9.12 (2026-05-16) — Round 9 エンジン数理修正ウェーブ。 4つのカテゴリにわたって、実質的な数理上の不具合を約30件修正しました。T1 制約処理(MS_Start の後退パス LF クランプ、P6 のフォワードパスの意味論に基づき、ES 側の制約より actual_start を優先、Section D の Monte Carlo における actual_start の固定、INFO タスク破棄アラート、制約未認識/不完全な WARN、CS_MANSTART/CS_MANFINISH エイリアス、Section D の SNLT/FNLT/MS_Start の違反・適用アラート);T2 カレンダー/ラグ計算(拘束リンクにおけるカレンダー対応 Free Float、符号付き _countWorkDaysBetween、負の FF を保持、dateToNum の繰り上がりガード、有限でないラグの拒否、無効なカレンダーがフォールバックする場合の WARN、SUB_DAY_LAG_ROUNDED の方向バイアス開示);T3 進行中タスク+実績(remaining_duration の P6 保持ロジック、進行中タスクの後退パスで LS=ES を固定、Section C の EF>=ES ガード、OoS で全先行タスクを列挙、孤立ハンモックの ALERT、hammock duration_working_days、タスクタイプ未認識の WARN);T4 Python との同等性(R8A-1 のバックポート、ALAP のセカンダリスロット、フォワード ES ゲート)。単体テスト792件/クロスバリデーションチェック416件/verify PASS。CHANGELOG.mdで、T1〜T4 の修正一覧をご覧ください。
v2.9.11 (2026-05-16) — Round 8 R8A エンジン数理修正ウェーブ。 T1 の誤った結果を無言で返す経路を4件修正しました。actual_start がない場合に actual_finish によって ES が EF に潰されることがなくなりました。サブデイ単位の小数ラグで SUB_DAY_LAG_ROUNDED ALERT が出力されるようになりました。FF/SF の Free Float で後続タスクのカレンダーを使用するようになりました。opts.projectStart がない場合、Section D の制約クランプで constraint-skipped WARN が出力されるようになりました。
v2.9.10 (2026-05-16) — Round 7-8 の堅牢化。 独立検証のインフラ(9つの OS × Node の組み合わせで実行するパブリック CI、Sigstore 署名付き witness JSON、npm run verify によるワンコマンドでのローカル再現)がタグ付きリリースとして公開されました。エンジンの数理処理は v2.9.9 とバイト単位で同一です。ドキュメントとインフラのリリースです。DAUBERT.md §3.1および新設の§10 ロードマップをご覧ください。
v2.10.14までの全リリース履歴については、CHANGELOG.mdをご覧ください。
コントリビューション
CONTRIBUTING.mdをご覧ください。すべてのコミットで、1,510件の単体テストとクロスバリデーションハーネスに合格する必要があります。クロスバリデーションハーネスでは、定義済みの比較項目22,189件すべてを実行し、233件のフィクスチャ全体で失敗0件、スキップなしでビット単位の一致を確認します。さらに、引用回帰、切り詰め回帰、バージョン乖離回帰の各ゲートも通過する必要があります。CI ではプッシュのたびにこの5項目を実行し、npm run verifyでも同じ5項目を実行します。すべてのプルリクエストの前に実行するよう CONTRIBUTING で求めているnpm run test:allでは、これらに加えて、クライアント名、SOP、再発行手順、暗号署名の承認、P6 との比較、コーパスフィクスチャの6項目も実行します。新しい引用には WebSearch で検証済みの URL が必要です。事例名を捏造してはいけません。コアエンジンの処理経路で LLM が生成した説明文を使用してはいけません。
関連リポジトリ
関連する2つのリポジトリを公開しています。
- cpp-xer-parser — Primavera P6 XER の標準パーサーです。エンジンは、その解析結果を標準の XER → JS オブジェクト層として使用します。
cpp-xer-parserはこのエンジンに依存しません。 - cpp-critical-path-validator — クリティカルパスの検証と DCMA-14 評価を行います。LPM の相互チェックにこのエンジンを任意で使用し、エンジンがない場合も適切に機能を縮退します。
追加の CPP スキル(forensic-delay-analysis、claims-preparation、claim-workbench、time-impact-analysis、collapsed-as-built、counter-claim-analysis、schedule-risk-analysis)は非公開です。利用をご希望の場合は、Critical Path Partners にお問い合わせください。
戦略的な注記
CPP は、フォレンジック・スケジューリングのコンサルティング会社です。このエンジンは、意図的な姿勢としてオープンソース化されています。CPM の計算は数十年前からある査読済みの汎用技術であり(Kelley & Walker 1959、Kahn 1962、Tarjan 1972)、フォレンジック上の価値はワークフロー、方法論の厳密さ、Daubert 開示に対する姿勢にあります。計算レイヤーをオープンソース化することで、学術研究者、個人のフォレンジック専門家、請負業者の社内スケジューラー、独立したレビュー担当者の誰もが、透明性があり引用可能な基盤を検証、変更、または発展させられます。
このエンジンを使って何かを公開したら、ぜひお知らせください:[email protected]。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。