自我验证样本 v1 — workgraph-planning-methodology-trial
对应任务书用户步骤6,套用
SKILL.mdv1(100分定稿版)的决策流程。 两个样本复杂度梯度差异明显:样本1是全公司唯一与 Step4 裁剪例句直接可比的 真实历史案例,样本2是构造场景(非真实历史案例,下文已按要求显式标注)。
样本1:回归案例 C4(p-v1mpcl / T-mt1qx0c4-95bf,真实历史案例)
task-goal 原文(hunt/knowhow_v1.md C4 引用):「读 lemonboss 仓库文档+代码,
产出 apple.com 风格的静态官网,讲清 why/how/what,含核心价值点、功能模块、
独特性说明,至少 3-4 张界面截图/示意图配说明」。
信号取值(复用 digest/complexity_signals_v1.md 自身给出的 C4 校准结果)
| 信号 | 取值 | 判定依据 |
|---|---|---|
| S1 | 1 | 全部内容共享同一个网站、同一套验收标准,单一交付物 |
| S2 | 是 | "至少3-4张界面截图/示意图配说明"是可枚举的具体数值清单 |
| S3 | 否 | 纯展示型静态页面描述,原文无持久化/多模块字样 |
| S4 | 否 | 通篇没有提及需要说服的第二方(投资人/产品经理/安全团队等),单一执行链路 |
| S5 | 否 | 未提及任何历史参照/复用指令 |
代入决策流程
- G2(S3门):S3=否 → 不命中,继续。
- G3(S5门):S5=否 → 不命中,继续(此样本写于 S1-S5 体系引入之前, 也不存在"先例"这个概念本身,即便 S5 被误判为是,也会因为找不到标注过 S1-S4 的先例记录而按 fallback 归为 S5=否)。
- 逐节点判定:
- brd:查表 §2.1,
S4=否, S1=1, S2=是→ 命中第3行 → 裁剪。 - prd:§2.2 恒定 → 保留。
- sdd:§2.3,
S1=1(且已知S3=否) → 内容精简,节点保留。 - benchmark:§2.4 恒定 → 保留。
- validator:§2.5 恒定 → 保留。
- brd:查表 §2.1,
最终结论:裁 brd,保留 prd/sdd(精简)/benchmark/validator。
与任务书给出的预期结论一致("预期:裁brd,因为S1=1/S2=是/S3=否/S4=否")。
应用 §四 连带修正清单,重新验算五项校验
裁剪后节点:prd, sdd, benchmark, validator(4个)。边:
| from | to | condition | 其他 |
|---|---|---|---|
| prd | sdd | success | produces:[prd] |
| sdd | benchmark | success | produces:[sdd], needs:[prd] |
| benchmark | validator | success | produces:[acceptance], needs:[{kind:brd,required:false}, prd, sdd] |
| sdd | prd | fail | edgeKind:backward |
| benchmark | sdd | fail | edgeKind:backward |
| validator | prd | fail | edgeKind:backward, failReason:input_underspecified |
| validator | sdd | fail | edgeKind:backward |
(原 prd --fail--> brd 已按 §四 第2条删除。)
| # | 手工验算法 | 结果 |
|---|---|---|
| 1 | 划掉 backward 边,剩 prd→sdd→benchmark→validator,可排出拓扑序 |
通过 |
| 2 | forward 入度为0的节点:仅 prd |
通过(恰好一个) |
| 3 | 从 prd 沿 forward 边 BFS 覆盖 sdd, benchmark, validator |
通过(4个节点全覆盖) |
| 4 | sdd→prd、benchmark→sdd、validator→prd、validator→sdd 的 to 均排在拓扑序更早处,且都标了 backward |
通过 |
| 5 | 除入口 prd 外:sdd 有 sdd→prd(空failReason)兜底边;benchmark 有 benchmark→sdd(空failReason)兜底边;validator 有 validator→sdd(空failReason)兜底边(另一条 validator→prd 带 failReason,不计入但不冲突) |
通过 |
五项全部通过,prd 作为新入口按约束五例外条款无需额外配兜底边。
合理性检查
结论"裁brd、保留其余四个"符合直觉:这是一个单人产出、无需向第二方解释立项
理由、验收标准已经写清楚的静态网站任务,把"why"并入 PRD 前言段不会丢失信息
(原 C4 真实规划记录选择完整保留是"骨架字面结构对应"式判断,而非信号驱动,
complexity_signals_v1.md S4 段已指出这一点——本表刻意不重复这个失效模式)。
没有出现"简单任务被误判为要保留全部/复杂任务被误判为可裁"的情况。
样本2:构造场景(非真实历史案例,用于压力测试规则的另一端)
task-goal 原文(构造):「多租户 SaaS 后台,含权限体系(多角色 RBAC)与数据 导出功能,需要向产品经理和安全团队分别汇报设计方案」。
信号取值
| 信号 | 取值 | 判定依据 |
|---|---|---|
| S1 | 1 | "权限体系"和"数据导出功能"是同一个后台系统内的两个功能模块,原文没有说 |
它们各自有独立的验收标准或独立受众,按 complexity_signals_v1.md S1 判定法
("两个产出物只有在验收标准不同或受众不同时才分别计数"),算同一个交付物 |
| S2 | 否 | 原文只有"多角色RBAC""数据导出功能"这类定性描述,没有出现具体数字/
可穷举清单(没有说"3种角色""导出为CSV/Excel两种格式"这类可点名的清单) |
| S3 | 是 | "多租户""权限体系(多角色RBAC)""数据导出"均指向需要持久化存储
(租户数据、角色权限、待导出的业务数据)和多模块(权限模块+导出模块),命中
complexity_signals_v1.md S3 判定法里的"账号体系""对接接口/后端"类结构性字样 |
| S4 | 是 | 原文显式提到"需要向产品经理和安全团队分别汇报设计方案"——两类需要
独立说服/汇报的第二方角色,命中 S4 判定法 |
| S5 | 否 | 未提及任何历史参照/复用指令 |
代入决策流程
- G2(S3门):S3=是 → 命中,直接判定全部5节点保留,决策终止, 不再往下走逐节点判定。
(补充核对:即便不走 G2 短路、继续假设走到逐节点判定,§2.1 BRD 表里
S4=是 那一行同样独立给出"保留"结论——S3 和 S4 两个独立信号在这个样本上
互相印证,没有矛盾,这也说明 G2 门的短路不是掩盖了一个本会冲突的判断,
只是提前给出了同一个答案。)
最终结论:全部5节点(brd/prd/sdd/benchmark/validator)保留,不裁剪。
与任务书给出的预期结论一致("预期:全部5节点保留,不裁剪")。
五项校验
因为没有任何节点被裁剪,图与 planner.json 骨架原样一致,五项校验天然
满足(骨架本身已验证合法,不需要重新手工验算)。
合理性检查(矫枉过正压力测试)
这个场景刻意设计了两个会让"裁剪判据"过度敏感的诱饵:
- 如果规则集只看 S1/S2/S4 这类"内容形态"信号而忽略 S3,可能会因为"S4=是" 之外没有仔细检查 S1(单一后台系统,容易被误判成"简单交付物")而错误地 在 benchmark/sdd 上打折扣;
- 如果规则集的裁剪判据里没有把 S3 设成最高优先级的硬门,可能会在"这是一个 后台管理系统,描述听起来不算复杂"这种主观印象下裁掉不该裁的节点。
本表的 G2 门直接堵死了这两种矫枉过正的可能——只要 S3=是,不管 S1/S2/S4
如何组合,都不会进入任何裁剪分支,验证了 §五(benchmark_v1.md D5 矫枉过正
平衡)声称的"地基级约束不受信号组合影响"在这个复杂样本上确实成立,没有
出现"复杂场景被错误裁剪"的情况。