mcpField
C
Critical Path Partners forensic scheduling MCP

Critical Path Partners forensic scheduling MCP

远程服务
criticalpathpartners.ca生产力41 天前更新

关于 Critical Path Partners forensic scheduling MCP

Critical Path Partners forensic scheduling MCP 基于开源 cpm-engine,为 Primavera P6 进度计划取证分析提供工具。它面向处理延误分析和索赔的进度分析人员,提供符合 AACE 方法的计算及记录计算溯源的清单。

主要功能

  1. 01CPM 正向与反向计算
  2. 02符合 AACE 的取证方法
  3. 03进度健康检查与基线比较
  4. 04多司法辖区节假日日历
  5. 05计算清单与拓扑哈希

适用场景

  1. 01分析关键路径和进度时差
  2. 02为索赔准备延误分析
  3. 03使用 DCMA-14 检查进度健康状况
  4. 04复现并核验计算溯源

MCP 相关

托管 MCP 服务运行于 mcp.criticalpathpartners.ca,向客户端提供基于 cpm-engine 的进度取证分析工具。简介提到 13 个工具,但提供的文本未逐一列出。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.criticalpathpartners.ca/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

13
参数类型必填说明
schedulesarray是
project_namestring否
baseline_idxinteger否
entitlement_milestonestring否
output_dirstring否

详细介绍

cpm-engine

npm version license: MIT tests: 1510 passing crossval: JS↔Python 22189/22189 coverage: 94% verify Daubert: disclosed AACE: 29R--03 / 49R--06 / 52R--06

一款开源 CPM 引擎,采用符合 AACE 标准的方法,并发布了 Daubert 披露文件。 1,510 个 JS 单元测试。JS 引擎及其 Python 参考实现对全部 22189 项枚举交叉验证比较结果均一致,没有跳过任何一项。这是同一作者编写的两个实现之间的一致性检查,并非与 P6 的对照检查;第三方可复现的内容见 DAUBERT.md §3.1。

面向法庭的用法:将本引擎与 FORENSIC_USE_SOP.md 中的分析人员应用规范、VERIFY_RELEASE.md 中的验证链、release-evidence/ 中各版本的凭证、validation/p6-comparison/ 中逐字段 P6 比较框架,以及 validation/held-out/ 中留出 P6 比较配套使用。面向法庭的报告中不要引用 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 MIPs 3.3(窗口分析)、3.6/3.7(前瞻性 TIA 单基准 / 多基准)和 3.8(压缩竣工实际进度)的 CPM 正向 / 反向计算。引擎提供 CPM 数学计算;完整的方法实现(周期选择、fragnet 集成、竣工实际进度重建)位于 CPP 法证技能套件中——这个 OSS 引擎是它们构建其上的数学核心,而非完整方法。
  • 索赔资料包——包含附函、证据材料和减损日志的业主提交版 EOT 资料包
  • Daubert 披露——FRCP 26(a)(2)(B) 报告、FRE 702/707 四项要件方法声明
  • 进度计划风险基础功能——贝叶斯后验估计(computeBayesianUpdate);逐次迭代 CPM(runCPM),适合作为基于此引擎构建的 Monte Carlo 封装器的内层循环。完整的 Monte Carlo / 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(单一基准)/ MIP 3.7(多个基准)
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 取证技能使用。两个实现通过交叉验证保持逐位一致:

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 参考实现都由本项目维护,因此二者一致并不构成独立测试。第三方可以在另一台机器上通过一键复现工具复现结果:

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
  • Commit SHA + git ref + 工作流 URL(在 CI 中)
  • 测试计数:通过/失败的单元测试、交叉验证样例 + 检查、引文回归状态
  • 时间戳 + Node 版本 + 平台
  • 判定结果(PASS/FAIL)

比较本地生成的见证文件与 CI 签名见证文件中的引擎和 Python 参考实现 SHA-256 值及通过计数。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,独立验证:此处的术语指作者以外的一方可以运行的检查。


生产环境使用

托管 MCP 服务的客户端配置(Cline、Cursor、Claude Code、Claude Desktop)见 llms-install.md。引擎已在 mcp.criticalpathpartners.ca 上线——可在浏览器中试用。CPP 生成的每份报告都会通过网络提供同一个 cpm-engine.js 文件,并将其内嵌其中。

CPP 法证套件(forensic-delay-analysis、claims-preparation、claim-workbench、time-impact-analysis、schedule-risk-analysis、collapsed-as-built、counter-claim-analysis)都使用此引擎——JS 移植版用于浏览器/MCP,Python 版本用于批处理流水线。


引用

如果你在学术研究或专家证人报告中使用此引擎,请引用:

Fitkowski, D. (2026). cpm-engine:采用 AACE 规范方法标签并公开 Daubert 披露的开源关键路径法引擎。 Critical Path Partners. 版本 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) — 第 9 轮引擎数学修复。 在四个类别中修复了约 30 个实质性数学缺陷:T1 约束处理(MS_Start 向后 LF 钳制、根据 P6 前向遍历语义,actual_start 优先于 ES 侧约束、Section D Monte Carlo actual_start 固定、INFO 任务丢弃警报、约束无法识别 / 不完整 WARN、CS_MANSTART/CS_MANFINISH 别名、Section D SNLT/FNLT/MS_Start 违反与应用警报);T2 日历 / 时滞运算(约束链接上的日历感知自由时差、有符号 _countWorkDaysBetween、保留负 FF、dateToNum 溢出保护、拒绝非有限时滞、无效日历回退 WARN、披露 SUB_DAY_LAG_ROUNDED 的方向偏差);T3 进行中任务 + 实际值(保留 P6 的 remaining_duration 逻辑、为进行中任务固定反向 LS=ES、Section C EF>=ES 防护、OoS 枚举每个前置任务、悬挂汇总 ALERT、hammock duration_working_days、无法识别任务类型 WARN);T4 Python 奇偶一致性(回移植 R8A-1、ALAP 次要槽位、前向 ES 门控)。792 项单元测试 / 416 项交叉验证检查 / verify 通过。完整的 T1-T4 修复索引见 CHANGELOG.md。

v2.9.11 (2026-05-16) — 第 8 轮 R8A 引擎数学修复。 修复了四种 T1 静默错误答案路径:没有 actual_start 的 actual_finish 不再导致 ES 折叠为 EF;不足一天的分数时滞会发出 SUB_DAY_LAG_ROUNDED ALERT;FF / SF 自由时差使用后续任务的日历;如果缺少 opts.projectStart,Section D 约束钳制会发出 constraint-skipped WARN。

v2.9.10 (2026-05-16) — 第 7-8 轮强化。 独立验证基础设施(覆盖 9 种 OS × Node 组合的公开 CI、由 Sigstore 签名的见证 JSON、通过 npm run verify 一键在本地复现)作为带标签的版本发布。引擎数学与 v2.9.9 字节级一致;这是一次文档 + 基础设施发布。参见 DAUBERT.md §3.1 和新增的 §10 路线图。

完整发布历史(截至 v2.10.14)见 CHANGELOG.md。


贡献

参见 CONTRIBUTING.md。每次提交都必须通过 1,510 项单元测试和交叉验证测试框架;其中,所有 22189 项已定义比较均须执行,并在 233 个测试样例中实现位级一致、失败数为 0、跳过项为 0,此外还须通过引用回归、截断回归和版本漂移回归门禁:CI 会在每次推送时运行这五项检查,npm run verify 也会运行相同的五项检查。CONTRIBUTING 要求在每次拉取请求前运行的 npm run test:all 会运行这些检查以及另外六项:客户端名称、SOP、重新签发流程、加密签核、P6 比较和语料库测试样例。新增引用必须使用 WebSearch 验证 URL。不得编造案例名称。核心引擎路径中不得使用 LLM 生成的叙述。


配套仓库

两个配套仓库为公开仓库:

  • 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]。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。