---
name: consumer-validation-engineering
description: 跨仓消费者验证工程 Owner — 当任务涉及独立 consumer/verification repository、SDK/CLI/框架/公共包的跨仓完整验证、源码 link 与 packed artifact 一致性、多分母 100% 声明、跨仓 CI、新鲜度或漂移治理时使用；要求冻结可复现身份链、分别计算适用分母，并以真实安装和跨仓运行证据约束发布。
---

# Consumer Validation Engineering

## 定位

本 Skill 负责“主仓变更是否被真实消费者以可复现方式验证”的完整证据链。它不把 dependency spec、realpath、单次 link smoke、功能清单数量或单一通过率当作跨仓闭环，而是同时管理仓库绑定、源码/制品身份、多分母验证、跨仓 CI、新鲜度和发布阻断。

## 触发条件

| 场景 | 是否触发 |
|---|:---:|
| 为 SDK、CLI、框架、插件或公共包建立独立 consumer/test/verification repository | 必须 |
| 声称“跨仓完整验证”“全场景 100%”“消费者仓已覆盖全部功能” | 必须 |
| 同时存在源码 link、workspace/file dependency、tarball、registry install 或 ignored dist | 必须 |
| 主仓 push/PR/release 需要触发消费者仓 CI，或需要定时漂移检测 | 必须 |
| 仅在同一仓库内执行单元测试且无外部消费者边界 | N/A + skipReason |

## ConsumerValidationEngineeringGate

| 字段 | 要求 |
|---|---|
| repositoryBinding | 主仓、消费者仓、origin、目标 branch、责任人、发布关系和支持矩阵 |
| sourceConsumerIdentity | run 前后冻结两仓 commit、dirty/diff hash、版本、构建与依赖解析身份 |
| artifactFreshness | 源码、dist、tarball、registry artifact 的生成时间、内容 hash 和来源 commit 可追溯 |
| dependencyResolution | dependency spec、realpath、lockfile hash/hygiene 与 CI checkout 目录拓扑一致 |
| packedArtifactIdentity | tarball checksum、pack list、安装路径、公开 API/CLI/Skill/adapter smoke |
| validationDenominators | 功能、场景、adapter/环境、影响变更、性能适用项、发布门禁分别计算 |
| designFitness | 每个适用功能的用户主路径、默认值、配置层级、框架约定、公共面、生命周期、组合、兼容与维护成本 |
| crossRepositoryCI | `CrossRepoCI`：source push/PR/release dispatch、consumer workflow/run、目标 SHA 和结果可关联 |
| freshnessDrift | before/after identity 复核、定时漂移、证据保留、过期阈值和失效处理 |
| evidenceState | `not-started / partial / accepted / rejected / stale`，每个分母独立记录 |
| releaseDecision | 只有全部适用分母 accepted 且身份链新鲜，才允许 complete/100% 或 release-ready 声明 |

## 多分母完整性规则

| denominator | 最低内容 | 禁止替代证据 |
|---|---|---|
| feature | public exports、CLI commands、配置、文档能力与内部能力归类 | README 条目数 |
| scenario | happy/error/retry/timeout/compatibility/upgrade 适用场景 | 单元测试总数 |
| adapterEnvironment | runtime、OS、Node/runtime version、provider/adapter 适用组合 | 默认脚手架成功 |
| changeImpact | 本次 diff 影响的功能、消费者、迁移和回归集合 | 全量套件名称 |
| performance | 每功能适用性与每模块 workload/budget/baseline/candidate/capacity/resource/recovery | 单一 benchmark gate |
| releaseGate | pack/install、public surface、CI、文档、回滚、registry/postcheck | 本地 link smoke |

任何适用分母不是 100% accepted 时，总结只能是 `partial`；N/A 必须有适用性依据，skip/flake 必须进入治理分母，不能从统计中静默删除。

## 可复现身份链

正式 run 至少记录：

1. 两仓 origin、branch、commit、dirty state 与 diff hash。
2. package version、源码 package hash、构建命令、dist hash；dist 被 ignore 时仍必须单独冻结。
3. dependency spec、resolved realpath、lockfile hash，以及无关兄弟仓/绝对路径残留检查。
4. tarball checksum、pack manifest、fresh install 路径和 registry metadata（若命中）。
5. source event、consumer CI event/run、checkout topology、目标 commit 与最终 conclusion。
6. run 结束时重新采集 1~5；任一身份变化而未重跑即标 `stale`。

## 执行流程

1. 冻结 `ConsumerRepositoryBinding`，明确哪个仓是 source of truth、哪个仓提供独立复证。
2. 建立 `SourceConsumerIdentitySnapshot`，先验证工作区/CI 能按依赖声明重建目录拓扑。
3. 生成 `ValidationDenominatorMatrix`，逐项记录 total/applicable/executed/accepted/skipped/failed/stale。
4. 先跑 source link/workspace 验证，再 pack tarball fresh install；两条路线不能互相替代。
5. 运行影响场景、全量回归、适用性能与发布门禁，保存原生命令退出码和制品 hash。
6. 关联跨仓 CI event/run；主仓没有真实触发链时不得宣称持续验证。
7. 执行 before/after drift 复核，更新 evidenceState 和 releaseDecision。
8. 将主仓、消费者仓、报告、CI、制品和 registry 证据写入可追踪矩阵。

## DesignFitnessGate

行为测试通过只能证明“现有契约按定义运行”，不能证明契约设计合理。对 SDK、框架、CLI 或公共包的每个适用功能建立 `DesignFitnessMatrix`，至少覆盖：

`feature / userTask / recommendedPath / defaults / configurationLayering / frameworkConvention / publicSurface / lifecycle / composition / compatibilityAuthority / maintenanceCost / evidence / decision`。

发现重复配置、手动装配、内部 API 泄漏、多 runtime 不一致、与框架约定冲突或维护成本无依据时，该功能不得仅凭行为测试标 accepted。设计取舍需由 DX/API/domain/quality Owner 给出证据，消费者仓不能反向独占定义主仓公共契约。

## ValidationFindingRepairLoop

1. finding 先绑定 source identity、受影响 denominator、严重度和 authority；validation/audit 本身不越权直接修改 source。
2. **FindingObjectLayer（PI-VEXT-20260717-024 / T2）**：每条 finding 必须声明 `objectLayer=source-product | verification-system`。`source-product` 记录被测产品问题与 source patch；`verification-system` 记录验证脚本/证据链/控制面问题。禁止把 verification-system 修复表述为「产品已修复」。探针：`classifyFindingObjectLayerSample` → 缺分层或混报 `layer-fail`。
3. 进入获授权的 dev/fix/self-fix 与双层修复合同，建立 findingToPatchMap。
4. 任一 source mutation 立即使旧 source identity、artifact 和受影响 evidence 标 `stale`。
5. 冻结新 identity，重跑原失败探针、同类边界、关联功能、适用性能和风险要求的全量消费者回归。
6. before/after identity、freshness 与 denominator 均重新 accepted 后才关闭 finding；只重跑原单点不得恢复完整/100% 声明。

## FormalRerunLightClassify（PI-20260724-02 · 条件）

进入 **full formal / 长耗时 release rerun** 前必须先轻量分类（读 issue authority、最近 run decision、issue-snapshot）：

| class | 含义 |
|-------|------|
| `close-with-fresh` | 可用已有 fresh run 关闭 |
| `unmet-fresh` | 已有 fresh run 未满足 |
| `blocked-by-open` | 同批 open blocker 阻断 |
| `shared-rerun` | 同批多项可共享一次 formal |
| `need-full-per-finding` | 仅当分类证明需要且无共享收益时（默认 **禁止** 作为首选） |

除非分类显示可关闭候选或同批共享收益，**不得**按 finding 粒度逐项启动 full formal。探针：`classifyFormalRerunLightSample` — `startingFullFormal && !classified` → `rerun-fail`；`npm run test:executable-absorption-gates`。

## 输出契约

```markdown
## ConsumerValidationEngineeringGate

| 字段 | 内容 |
|---|---|
| repositoryBinding | source/consumer origins, branches, owners |
| sourceConsumerIdentity | commits, dirty/diff hashes, versions |
| artifactFreshness | source/dist/tarball/registry hashes |
| dependencyResolution | spec, realpath, lock hygiene, checkout topology |
| validationDenominators | denominator -> total/applicable/accepted/failed/skipped/stale |
| designFitness | feature -> task/default/config/framework/public/lifecycle/composition/compatibility/maintenance decision |
| validationFindingRepair | finding -> authorized patch -> stale evidence -> new identity -> rerun matrix -> result |
| crossRepositoryCI | source event -> consumer run -> target SHA -> conclusion |
| evidenceFreshness | capturedAt, expiresAt, before/after drift |
| releaseDecision | not-started/partial/accepted/rejected/stale |
| evidenceMatrix | claim -> source -> command/run -> artifact -> consumer |
```

## 生命周期与有效性

本 Skill 初始状态为 `gray`。只有在至少两个独立项目或三个可比较工作单元中证明：身份漂移被提前捕获、多分母假 100% 被阻断、发布后消费者逃逸率下降，且没有通过减少适用分母刷指标，才可进入 active review。晋级、回滚和 sunset 由 `skill-lifecycle-governance` 与 `evolution-governance` 决定。

## 反模式

| 反模式 | 修正 |
|---|---|
| realpath 正确就声称跨仓关联完成 | 补两仓 identity、artifact、lock、CI event/run 和 before/after drift |
| 功能清单 100% 就声称验证 100% | 独立计算功能、场景、组合、影响、性能和发布分母 |
| link 成功替代 packed install | 两条路线都执行，并比较公开表面与制品 hash |
| CI 名称存在就声称持续验证 | 证明 source event 实际触发 consumer run 且目标 SHA 一致 |
| 把 skip/N/A/flake 从分母删除 | 记录适用性、原因、owner、期限与重试/阻断状态 |
| 运行中 source 或 dist 改变仍沿用结果 | 标 stale，冻结新 identity 后重跑 |
| 行为测试全绿就认定设计合理 | 执行 DesignFitnessGate，分别判断契约设计和行为实现 |
| 修源码后只重跑原失败单点 | 执行 ValidationFindingRepairLoop，旧 identity 证据 stale 并按影响矩阵重跑 |
| 验证系统修好却写「产品已修复」 | 强制 `objectLayer`；混报 `layer-fail` |
| 未分类就逐 finding full formal | FormalRerunLightClassify 先分类；`rerun-fail` |

## 与其他 Skill 的关系

- `source-consumer-sync`：维护真相源与当前消费者图；本 Skill 负责外部消费者仓的可执行复证。
- `quality-strategy`：定义风险分层和验收矩阵；本 Skill 物化跨仓分母和 evidenceState。
- `test-router`：选择单元、集成、场景、性能、pack/install 与 CI 路线。
- `performance-engineering`：拥有逐模块性能协议和长期维护基线；本 Skill 只把适用结果纳入跨仓分母。
- `release-verification`：消费 accepted 且新鲜的跨仓证据作为发布门禁，不得自行降级 partial。
- `skill-lifecycle-governance` / `evolution-governance`：管理 gray 生命周期、效果指标、回滚与退役。
