# M0 能力真源、样例与来源归因证明

- 结论：**Complete**
- 验证日期：2026-07-13
- 对应范围：`docs/product-market-audit.md` M0
- 决策前提：D1–D5 已确认

## 交付结果

1. 应用、sandbox 与营销站从同一 capability/sample registry 读取能力状态。
2. `implemented` 必须同时具备测试标记、证据文件和最近验证日期；demo-only 单独标识。
3. landing、sample、template、tool 意图在本浏览器会话保存，注册/登录后仍能回到原入口。
4. 项目保存唯一、字段受限的 acquisition context；首个来源保存 ingest channel 和项目归因。
5. 后续复核、分享等审计事件通过 `project_id` 回溯同一个项目归因，不复制个人画像。
6. 项目创建成功后清除会话归因，避免下一项目误继承旧入口。

## 五条强证明

| 要求 | 证明 | 结果 |
|---|---|---|
| 两个不同入口意图 | 方法入口与 transcript cleaner 免费工具入口分别运行真实 Chrome 流程 | Pass |
| 注册/登录到首个来源 | 两条流程都完成注册、邮箱验证、密码登录、项目创建与文本来源导入 | Pass |
| 复核/分享仍可归因 | API 集成测试实际确认一个建议、创建分享，再联接审计事件与项目归因 | Pass |
| demo-only 不冒充 implemented | shared registry 测试、UI 状态标签与营销站 capability 页面共同校验 | Pass |
| 未知/无证据能力阻断构建 | 营销站 registry contract 的两个负例均抛错，`prebuild` 使用同一校验器 | Pass |

## 浏览器证据

方法入口：

- 输入：`entry=method`、`cluster=method.thematic-analysis`、
  `sample=automation-adoption-q3`、`template=thematic`；
- 登录和注册链接都保留完整 redirect；
- 邮箱验证返回 200，登录后返回原 setup URL；
- 项目与首个来源保存同一 acquisition context；
- 来源返回 201，`ingestChannel=workspace-upload`；
- 项目创建后 session acquisition 已清除。

证据文件：

- `docs/assets/m0-acquisition-method-auth.json`
- `docs/assets/m0-acquisition-method-auth.png`

免费工具入口：

- 输入：`entry=free-tool`、`cluster=tool.transcript-cleaner`、
  `tool=transcript-cleaner`；
- 其余注册、验证、登录、项目和来源断言与方法入口相同；
- 持久化结果额外保留 `toolId=transcript-cleaner`。

证据文件：

- `docs/assets/m0-acquisition-tool-auth.json`
- `docs/assets/m0-acquisition-tool-auth.png`

浏览器脚本：`apps/web/scripts/m0-acquisition-browser-proof.mjs`。脚本使用独立 Chrome
profile、真实 DOM 交互、真实 API 与 PostgreSQL，不使用 mock。

## 数据与审计证据

`apps/server/test/project-acquisition.test.ts` 每次从空 schema 应用全部 migration，然后：

1. 创建带 acquisition context 的项目；
2. 导入首个 multipart 文本来源；
3. 检查项目、来源和 `project_created`/`source_uploaded` 的持久化内容；
4. 创建有原文锚点的建议并调用真实裁决 API；
5. 调用真实分享 API；
6. 联接 `project_created`、`source_uploaded`、`instance_confirmed`、`share_created`
   与项目表，确认四个事件都解析为同一个 acquisition context；
7. 拒绝未知字段和未知 sample，防止任意画像数据混入归因对象。

## Registry 与站点证据

- canonical registry：`packages/shared/src/capabilities.json`、`samples.json`；
- 应用运行时校验：`packages/shared/src/capabilities.ts`、`samples.ts`；
- 营销站构建同步：`openverbatim-site/scripts/sync-product-registry.mjs`；
- 负面契约：`openverbatim-site/scripts/product-registry-contract.test.mjs`；
- 用户可见状态页：`openverbatim-site/src/pages/capabilities.astro`；
- 页面截图：`openverbatim-site/docs/assets/m0-capability-status.png`。

## 验证结果

- web：11 files、62 tests passed；
- server：17 files、97 tests passed；M0 强化测试单独 2/2 passed；
- db：2 files、18 tests passed；
- shared：3 files、13 tests passed；
- sandbox：3 files、39 tests passed；
- review-kit：10 files、42 tests passed；
- 主仓 `pnpm -r build`：6 个 workspace package passed；
- 营销站 registry contract：3/3 passed；
- 营销站 `astro check`：0 errors、0 warnings、0 hints；
- 营销站静态构建：30 pages passed，包含 `/capabilities/`。

## 未被 M0 提前声明完成的能力

M0 只完成能力事实、公开样例和来源链基础设施。多格式导入、校订、完整码本、案例查询、
AI 治理、独立编码、报告迁移、跨项目资料库、企业治理、采集端和全部 SEO 产品工具仍按
M1–M10 实施；registry 中对应条目继续保持 `planned` 或 `partial`。
