# 真实试用记录模板（待授权，未执行）

本项目目前没有可公开核实的真实用户或生产部署记录；项目所有人确认暂时没有可授权的接收系统或合作方。以下清单是可执行的受控试点包，**不是**已经完成的试用成果，也不得用 CI 合成数据替代真实效果。

1. 与试用方确认场景和目标：例如订单创建后通知仓库系统。明确 HookLab 的租户、发布方、消费者、事件类型、预计流量、可接受的交付延迟与失败处理人。
2. 只使用试用方拥有或授权测试的目标地址；先用不含个人信息的合成订单跑通契约拒绝、签名、幂等、重试与死信恢复。真实数据需要单独确认保存期、访问人员和脱敏方式。
3. 在受控 TLS/网络边界内运行独立部署，不直接把本仓库的回环 Compose 方案暴露公网。保管好发布令牌、签名密钥、数据库备份和 `HOOKLAB_ENCRYPTION_KEY`。
4. 连续观察至少一个约定的业务周期：记录发布数、最终交付数、死信数、p95 尝试耗时、发生的重复投递和人工恢复次数；遇到故障保留去标识化时间线、CI 版本及复现步骤。
5. 试用结束后与对方核对业务效果、误报/漏报、运维成本及替代方案。只有经对方同意，才把汇总且脱敏的数字和评价公开；未经授权不发布目标 URL、事件正文、令牌或对方名称。

建议验收线由试用方事先确认，而非事后按结果修改。HookLab 的投递语义是 **at least once**，消费者必须按交付 ID 去重；不能以“零重复投递”作为承诺。若试点要求公网多租户生产使用，还须先补齐通用请求/连接限流、TLS 代理、异地恢复、最小权限数据库账户和高可用方案；已有的可选事件/正文总字节/积压额度不能替代这些能力。

## 试点前必须填写的授权卡

| 项目 | 待确认内容 |
|---|---|
| 场景及所有方 | 业务名称、端点所有者、明确授权人、操作联系人 |
| 范围 | 只允许测试的域名/事件类型、持续时间、最大流量与停止条件 |
| 数据 | 是否只用合成事件；若涉及真实数据，保存期、脱敏、访问人及删除方式 |
| 验收线 | 交付率、可接受延迟、失败处理时限及消费者去重责任，均在启动前确定 |
| 公开范围 | 是否允许公开匿名汇总、日志片段、截图、使用方名称或评价 |

任一项未获确认，不接入其真实端点。试点记录应包含：仓库提交或发行标签、环境与网络边界、启动/结束时间、发布/接受/交付/死信数量、重试与重复接收次数、p95 尝试耗时、故障时间线、恢复动作、使用方反馈及双方认可的结论。事件正文、令牌、完整目标 URL 和个人信息必须去标识化；结论应保留失败与限制，不能只展示成功案例。

## 先做的受控合成验收

无需第三方授权时，可复现的**仅是技术预演**：在公开 CI 的 `deployment` 作业里，隔离容器会拒绝错误契约事件，向 CI-only 接收端发送一条有效订单，验证首次 503 后再次 204、接收方 SDK 对两次真实投递的签名核对、同一投递 ID、最终尝试记录与幂等重复抑制，并做隔离数据库恢复及密钥检查。具体断言见 `scripts/compose-smoke.mjs`，MoonBit 与 Node.js 的职责见 [MOONBIT_CORE.md](MOONBIT_CORE.md)。默认本机 Compose 没有启用回环目标测试开关，不能将该 CI 配置暴露公网。

本地受控验收分三层：`npm run test:platform` 验证固定 MoonBit/Node.js 签名向量、拒绝路径、schema 升级和租户级保留策略；指定专用 PostgreSQL 测试库后运行 `node scripts/platform-showcase.mjs` 验证失效接管、接收方验签和合成批量耗时；CI 的 `deployment` 作业验证容器化完整闭环及恢复。验收人记录所用提交、测试环境、测试通过/失败、合成事件数与局限，参考[季度证据页](QUARTERLY_EVIDENCE.md)。这些结果不能填写在上面的“真实试用”栏，也不能据此声称已完成长时间生产压测。

真实试点仍需外部接收系统所有者授权。取得授权后再补：双方确认的验收阈值、端点/网络边界、持久去重实现、按业务周期的记录、备份删除政策和可公开范围。未经授权不进行真实外部投递。
