From 3807e27176d1ed76f4045f9141db910a2ca19ed8 Mon Sep 17 00:00:00 2001 From: Rogee Date: Sun, 4 Oct 2026 18:08:13 +0800 Subject: [PATCH] document authorized receipt acknowledgment and stopped diagnostic release --- AGENTS.md | 2 +- deploys/test/saas-mock/README.md | 2 +- docs/evidence/nonprod-shuqi-attempts-20261004.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 896ab1a..56abb1f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -80,7 +80,7 @@ - P01–P08 及 K01–K16 已完成**项目内隔离 Mock** 核验;本轮把分散的人类可读契约、文档与第三方对接合为唯一当前规范,不重审已确认规则。若未来另获启动开发/审查子 Agent 授权,必须按使用者指定的 `gpt-5.6-luna`、`max` 思考和 `fast: true` 逐项核验并显式配置,不静默换模型、降档或关闭 fast。 - 唯一现行 SaaS↔Dispatcher 业务规范是 [`docs/thirds/saas-dispatcher.md`](docs/thirds/saas-dispatcher.md);当前项目内 Schema、拓扑、正反例及来源/hash 在 [`contracts/local/`](contracts/local/);内部 Agent RPC 在 [`proto/agent/agent.proto`](proto/agent/agent.proto)。本地验收与外部缺口见 [`docs/evidence/saas-dispatcher-p08-acceptance.md`](docs/evidence/saas-dispatcher-p08-acceptance.md)。Markdown 不代替机器合同或外部签收,也不另外维护一份平行字段定义。 - 已由当前合同来源清单固定哈希的历史提案与计划保留**原字节**于 [`docs/archive/sources/`](docs/archive/sources/README.md),使用者原有未提交的两份旧对接文档也按原字节归档;旧上游 v1 在 [`docs/archive/upstream/`](docs/archive/upstream/README.md) 可离线校验,但不嵌入运行合同。旧 F/W 工作包、旧 MQ-only 合同及归档不作为当前运行入口。固定 MQ `v1`、HTTP `/internal/v1/dispatcher/...` 和业务 revision 是现行通信规则,不是自有实现代次;不得为历史路径新建兼容或回退。 -- 当前业务范围仍仅**单节点、单 Dispatcher、单 Agent、单 Cell、单租户**。根命令只接受显式 `agent`/`dispatcher`;`mixed` 和裸 `real` 仍拒绝;隔离 `mock`、只读 `sip-only` 和需完整非生产证据/正式获批指令的 `nonprod-real` 为彼此独立的入口。新增非生产真实入口尚未在测试机完成全链路核验;2026-10-04 获批的同一数企/号码两次单次试拨操作均未观测到 SIP 包或最终结果,第二次已有 Dispatcher 派发回执而 Agent 错误根因未知。未交付回执保留,Dispatcher/Agent 已停机;不得自动重拨、清理未知执行或以编译/本机 Mock 通过宣称可用。另有严格隔离的 `--mode sip-only`:只允许 Dispatcher 读完整 SIP、持久接纳归属 `sip.config`、经已激活双向 TLS Agent 会话将完整快照应用到原生 Asterisk,并从运行态核对版本;不发现任务、不启动业务呼叫、不开放准入、不处理其他业务控制。测试机已凭使用者批准,将三条历史登记地址以**测试快照显式声明的** UDP/IP 鉴权、无需 REGISTER 配置写入并核对 Asterisk 运行态;供应商尚未确认这些实际线路是否满足上述参数,至今没有观察到真实 SIP 拨号,不证明线路可用或生产签收。没有真实 SaaS、management、真实通话或生产签收;真实百炼 LLM 与 OSS 已各做一次**不拨号、独立的最小连接/写入诊断**(见 [`docs/evidence/real-ai-oss-one-shot-20261003.md`](docs/evidence/real-ai-oss-one-shot-20261003.md)),这不是获批任务的 ASR/LLM/TTS、录音和上传全链路签收。生产发布包仍为 `production_approval=false`。任何本机 Mock 或 SIP-only 核验均不授权真实呼叫。 +- 当前业务范围仍仅**单节点、单 Dispatcher、单 Agent、单 Cell、单租户**。根命令只接受显式 `agent`/`dispatcher`;`mixed` 和裸 `real` 仍拒绝;隔离 `mock`、只读 `sip-only` 和需完整非生产证据/正式获批指令的 `nonprod-real` 为彼此独立的入口。新增非生产真实入口尚未在测试机完成全链路核验;2026-10-04 获批的同一数企/号码两次单次试拨操作均未观测到 SIP 包或最终结果,第二次已有 Dispatcher 派发回执而 Agent 错误根因未知。第二次派发回执经使用者授权后已私密持久化并确认 MQ,最终结果仍缺失;版本 `9b9f9f0` 已安装且通过不拨号抓包预检,SaaS/Dispatcher/Agent 均停机。不得自动重拨、清理未知执行或以编译/本机 Mock 通过宣称真实通话可用。另有严格隔离的 `--mode sip-only`:只允许 Dispatcher 读完整 SIP、持久接纳归属 `sip.config`、经已激活双向 TLS Agent 会话将完整快照应用到原生 Asterisk,并从运行态核对版本;不发现任务、不启动业务呼叫、不开放准入、不处理其他业务控制。测试机已凭使用者批准,将三条历史登记地址以**测试快照显式声明的** UDP/IP 鉴权、无需 REGISTER 配置写入并核对 Asterisk 运行态;供应商尚未确认这些实际线路是否满足上述参数,至今没有观察到真实 SIP 拨号,不证明线路可用或生产签收。没有真实 SaaS、management、真实通话或生产签收;真实百炼 LLM 与 OSS 已各做一次**不拨号、独立的最小连接/写入诊断**(见 [`docs/evidence/real-ai-oss-one-shot-20261003.md`](docs/evidence/real-ai-oss-one-shot-20261003.md)),这不是获批任务的 ASR/LLM/TTS、录音和上传全链路签收。生产发布包仍为 `production_approval=false`。任何本机 Mock 或 SIP-only 核验均不授权真实呼叫。 - 使用者批准独立的测试专用 `deploys/test/saas-mock/` 仅模拟缺失的 SaaS:从 0600 的静态快照提供五类正式 HTTP 配置,在专用 RabbitMQ vhost 中由模拟 SaaS 预建现行拓扑;不在 Dispatcher 内注入快照;默认不发布外呼消息,只有受限脚本已为同一 `event_id`/线路/原始号码启动抓包后,才可显式单次 MQ 投递;不替代 Agent/Asterisk/AI/OSS。测试用正式入口必须同时具备只读配置、专用 MQ、真实 Agent/Asterisk/AI/录音/OSS、逐通确认和拨号前活跃抓包证据,缺一项不得试拨。此模拟不构成真实 SaaS 签收。 - 开发按 TDD 分批,小步提交;不得覆盖使用者现存修改/未跟踪文件,不自动清理、迁移或覆盖任何现存 SQLite、spool、outbox 和 Agent 恢复文件。旧 `.executions` 及恢复根目录中旧 `.uploads`、`.upload-locks`、逐执行 `state.json` 的发现须只读失败关闭,现存未交付事实由使用者确认处置。真实云账号、EIP、线路、拨号、生产部署和共享数据操作分别需要明确授权。 diff --git a/deploys/test/saas-mock/README.md b/deploys/test/saas-mock/README.md index 869028a..95b0c7c 100644 --- a/deploys/test/saas-mock/README.md +++ b/deploys/test/saas-mock/README.md @@ -17,4 +17,4 @@ 测试:`go test ./deploys/test/saas-mock` 验证正式配置客户端;设置指向**单独隔离 vhost** 的 `SAAS_MOCK_TEST_BROKER_URL` 后,`TestSaaSMockProvisionsDispatcherTopology` 还将实际预建 MQ 并用 Dispatcher 被动读回。缺省测试不会连接共享 RabbitMQ。 -正式入口已经具备独立 `nonprod-real` 代码路径,但测试机的正式链路、真实 AI/TTS、录音、OSS 与拨号前抓包仍未完成整体验证。2026-10-04 两次已确认的数企试拨操作均无 SIP 包;第二次产生派发回执但 Agent 失败,原因未查明,也未取得最终结果。此服务通过测试不代表真实 SaaS 或生产签收。 +正式入口已经具备独立 `nonprod-real` 代码路径,但测试机的正式链路、真实 AI/TTS、录音、OSS 与拨号前抓包仍未完成整体验证。2026-10-04 两次已确认的数企试拨操作均无 SIP 包;第二次产生派发回执但 Agent 失败,原因未查明,也未取得最终结果。第二次派发回执已按使用者单独授权私密保存并确认 MQ,队列余量 0;新版已安装但业务服务均未启动,仅完成不拨号抓包预检。此服务通过测试不代表真实 SaaS 或生产签收。 diff --git a/docs/evidence/nonprod-shuqi-attempts-20261004.md b/docs/evidence/nonprod-shuqi-attempts-20261004.md index 6dbd9ca..018513e 100644 --- a/docs/evidence/nonprod-shuqi-attempts-20261004.md +++ b/docs/evidence/nonprod-shuqi-attempts-20261004.md @@ -9,6 +9,6 @@ 第二次抓包文件 SHA-256:`e3f42e2687636327d7f18c9635173252505b4a838fa6829a755bab06c9c69749`(仅 24 字节空 pcap);执行状态文件 SHA-256:`ced1dfa2a7d92313563069504e78156ad106297ccd6676c023a50215d7dceaa9`。Asterisk 日志有 WebSocket Origin/CORS 提示,但后续只读 ARI 连通检查成功,**不能据此认定它是 Agent 失败根因**。 -现状:专用 Dispatcher、Agent 均已停止;Asterisk 无活动通话;SaaS 结果队列 `agent-call.saas.events.v1` 留存 **1 条派发回执**、无消费者。Dispatcher 的 inbox/outbox 和原始抓包均保留,未清理或伪造最终结果。未交付回执及未知执行的处置须经使用者确认,不因服务重启自动释放占用。 +在使用者单独授权后,对第 2 次事件的**唯一派发回执**与 Dispatcher 已确认的 outbox 逐字节核对并验证合同,先持久化至测试机私有 `~/.local/share/go-sip-nonprod-20261004/receipt-evidence/.json`(目录 `0700`、文件 `0600`),才确认 MQ。回执 SHA-256:`d7ffaf93d7f040f660acdf1a7898521d9b3a57978c6b3bc6ce82db93a5085102`;事后与 outbox 逐字节比对一致,共享结果队列 `agent-call.saas.events.v1` 余量 **0**。此操作只确认派发回执,**没有最终通话结果**,亦未清理 Dispatcher 的 inbox/outbox、未知执行或原始证据。 -本地修改尚未部署到测试机:SaaS 等待器会先持久化并确认归属正确的派发回执,继续等待真正最终结果;Agent 对原生呼叫失败记录阶段及 ARI HTTP 状态码,不记录响应正文、凭据或音频。此修改解决**回执误判**并增强下次定位能力,**尚不能解释第二次 Agent 失败的真实原因**。任何新的真实操作必须使用新事件号、新确认、有效快照和拨号前完整抓包门禁,不复用上述任一事件。 +已安装无生产授权的版本 `9b9f9f0`,旧版本目录仍在。SaaS 等待器现会保存并确认归属正确的派发回执,继续等待真正最终结果;Agent 记录原生呼叫失败阶段及 ARI HTTP 状态码,不记录响应正文、凭据或音频。新版仅经过不拨号预检:`preflight_only=1`、`call_exit=0`、`capture_status=0`;非真实通话验收。SaaS、Dispatcher、Agent 现均**停止**,Asterisk 保持 active、无活动通话。新日志尚未经历真实呼叫,因此**第二次 Agent 失败的真实原因仍未知**。任何新的真实操作必须使用新事件号、新确认、有效快照和拨号前完整抓包门禁,不复用上述任一事件,也不得在重启时自动释放未知占用。