Complete the selective V2 checkpoint with its minimal AgentBus, object-storage, replay persistence, and validated-workbench shared dependency closure.
664 lines
42 KiB
Markdown
664 lines
42 KiB
Markdown
# M012 / Fixed-Channel Parsing Agent v1 Runtime Integration Change Request v1
|
||
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| 状态 | **CP5 TEST SUPERAGENT BINDING + LIVE CONTRACT SMOKE COMPLETE — automatic worker / production HOLD** |
|
||
| 日期 | 2026-08-14 |
|
||
| 最近修订 | 2026-08-17(公开Trace传递与安全投影本地完成;未复跑真实Provider) |
|
||
| 目标 | 信息系统消费公共 Parser 输出,调用 Parsing Agent v1.0,并在本地确定性合并 |
|
||
| 渠道 | QBD、LIANTAI;不含 LIANTAI_FIT |
|
||
| Checkpoint | `M012-fixed-channel-parsing-agent-v1-runtime-integration` |
|
||
| 影响范围 | Backend / Layer 3 contracts / SourceMessage / Booking worker / SuperAgent adapter / Booking PostgreSQL / Test / Docs |
|
||
| 发布边界 | 测试平台 Profile/Skill/外部应用已绑定并完成受控真实 Provider 冒烟;自动 worker、production、PMS/Opera 仍关闭 |
|
||
|
||
## 1. 背景与当前运行事实
|
||
|
||
固定渠道公共 Parser 已按 ADR-008 完成,QBD/LianTai 默认 `parse()` 均返回
|
||
`ParserResult(meta,status,facts[],agent_materials[])`。真实样本批准基线为:
|
||
|
||
- QBD:114 facts / 4 WAITING materials;
|
||
- LianTai:70 facts / 6 materials;
|
||
- 扩大 Parser 专项及真实样本:0 failures/errors。
|
||
|
||
Parsing Agent v1.0 已按 ADR-009 完成 Skill/schema/reference/fixture/validator/package 和独立中文 Main
|
||
Prompt,输出为中立 `structured_mentions[]`,不再输出 Trace、部门或最终业务分类。当前 Agent 专项 22/22、
|
||
Python 全套 50/50、15成员 source/archive/manifest 严格校验均通过。2026-08-14 已将对应 Prompt 与 Skill
|
||
绑定到测试 SuperAgent Profile,并完成真实契约冒烟;源发布包仍保持 `HOLD/INTERNAL_ONLY`,不代表生产发布。
|
||
|
||
CP4 已在默认关闭的 v1 分支中接通上述公共契约;默认开关仍保留 legacy 链:
|
||
|
||
```text
|
||
Current message + current attachment bytes
|
||
→ BookingPostgresMessageOrchestrator
|
||
→ BookingContractAssembler.parseLegacy()
|
||
→ optional old Field Recovery(默认/生产关闭)
|
||
→ legacy ParsedFactSet
|
||
→ Context / Layer 5
|
||
```
|
||
|
||
v1 分支现已具备 request/evidence builder、provider-neutral port、SuperAgent adapter、response validator、
|
||
local merger、Layer 3 effective result、pre-Context durable execution/worker、双入口 SourceMessage、Parser FAILED
|
||
受控fallback,以及latest Layer3ResultV2 direct handoff/同run current Layer4/5/6 continuation。旧compatibility
|
||
projection只保留为CP6前legacy资产。测试平台绑定和真实 adapter 契约冒烟已完成;尚未做的是部署环境 Secret
|
||
注入、自动 worker 启用、完整 AgentBus→PostgreSQL 主链 smoke、业务 required-fact catalog、MySQL V30/运行保障
|
||
Gate和CP6 legacy退出。获批非生产 PostgreSQL V1–V6 migration/restart/lease/concurrency smoke 已于2026-08-12
|
||
通过;运行保障Gate尚缺告警/人工恢复运行手册。
|
||
|
||
## 2. 权威基线
|
||
|
||
实施必须同时遵守:
|
||
|
||
1. ADR-008 与 `M012-qbd-liantai-parser-output-contract-v1.md`;
|
||
2. ADR-009 与 `M012-fixed-channel-parsing-agent-v1-contract.md`;
|
||
3. ADR-005 的 per-agent external app/token;
|
||
4. SourceMessage 先落库、AgentBus callback 不等待外部 Agent;
|
||
5. Layer 3 中立结构、Layer 4 Context/RateRoom、Layer 5 业务判断、Layer 6 Validator 的既有边界。
|
||
|
||
如旧 Recovery、C03-v2、`Layer3ContractsV2`、旧 contribution service 或历史 CR 与上述基线冲突,
|
||
只能作为迁移证据,不得扩展成新 v1 行为。
|
||
|
||
## 3. 目标与非目标
|
||
|
||
### 3.1 目标
|
||
|
||
1. 两个入口都以持久 SourceMessage 作为 Current/History 唯一来源。
|
||
2. 主链调用公共 `parse()` 并保存 ParserResult,不在 v1 分支调用 `parseLegacy()`。
|
||
3. 信息系统确定性组装完整 v1 request 和 evidence registry。
|
||
4. 通过 provider-neutral Port 调用 Parsing Agent,使用 fake/mock 完成常规验收。
|
||
5. 信息系统严格校验 Agent 返回,并在本地确定性合并。
|
||
6. 输出权威 `effective_facts[]`、中立 `structured_mentions[]` 和 `review_items[]`,并承接其余合法中立结构。
|
||
7. 持久化执行状态、幂等、重试、审计与 failure codes,进程重启后可恢复。
|
||
8. 将最终八数组Layer3无业务解释地投影latest Layer3ResultV2,并以同run续接当前Layer4/5/6;V2无槽位审计放sidecar。
|
||
9. 以独立checkpoint退役compatibility/legacy,不在本次删除历史资产。
|
||
|
||
### 3.2 非目标
|
||
|
||
- 不修改已验收的 Parser 十类事实、QBD/LianTai Profile 规则或真实样本口径。
|
||
- 不让 Agent 覆盖 Parser facts、创建 TaskCard、写数据库业务状态或调用 PMS/Opera。
|
||
- 不让 Layer 3 决定 business type、Trace、linked action、部门、Rate Code 或 canonical Room。
|
||
- 不把 Main Prompt 放进 Skill 包,也不在本 CR 中修改 Prompt 内容。
|
||
- 不新增 Controller、MCP、浏览器或第三方入站接口。
|
||
- 不在首个 runtime checkpoint 删除所有旧 Recovery/legacy 资产。
|
||
- 不在代码合并时自动启用 production 或真实 Provider。
|
||
|
||
## 4. 目标数据流
|
||
|
||
```text
|
||
Manual EML / AgentBus
|
||
→ capture or bind Current SourceMessage
|
||
→ resolve QBD/LIANTAI Profile
|
||
→ run public deterministic Parser on current attachment
|
||
→ persist immutable ParserResult + controlled fallback snapshot
|
||
→ create/reuse durable Parsing Agent execution
|
||
→ worker reloads Current revision + ordered History revisions
|
||
→ build history_bodies[] + evidence registry + request
|
||
→ request preflight validation
|
||
→ FixedChannelParsingAgentPort
|
||
→ strict result decoding + semantic validation
|
||
→ deterministic local merger + completeness review
|
||
→ persist authoritative FixedChannelLayer3Result
|
||
→ latest Layer3ResultV2 neutral projection + controlled audit sidecar
|
||
→ same-run current Layer 4 / Layer 5 / Layer 6
|
||
```
|
||
|
||
入口在 execution 入队后结束;Provider 等待只能发生在 worker。Worker 不依赖入口内存里的附件 bytes,
|
||
因为公共 ParserResult 和 fallback snapshot 已持久化。
|
||
|
||
## 5. 输入快照与调用规则
|
||
|
||
### 5.1 Current
|
||
|
||
- 读取确切 `source_message_id + revision` 的完整 subject/body。
|
||
- Current attachment 只在同步 Parser 阶段使用;Agent 只接收 ParserResult 和登记后的文本 evidence。
|
||
- 当前正文不得由旧 `BookingAgentInputMaterialPolicy` 裁剪或截断。
|
||
|
||
### 5.2 History
|
||
|
||
- 由内部 SourceMessage repository/query 按 conversation identity 和稳定 sequence 读取。
|
||
- 正文完整传递、不截断;每项固定 source id、revision、sequence、content hash。
|
||
- 不传 History 附件、附件文件名、附件 URL、附件 evidence 或附件 bytes。
|
||
- 后台 builder 不调用会产生“员工读取原文”审计副作用的 UI original-read service。
|
||
|
||
### 5.3 Parser Results
|
||
|
||
- v1 分支只消费公共 `FixedChannelParserContracts.ParserResult`。
|
||
- 当前首版维持一个消息中恰好一个匹配固定渠道 workbook 的既有不变量,是否扩展需审批。
|
||
- Parser `FAILED` 必须 `facts=[]` 且 `agent_materials=[]`;只能由外层受控 fallback/review 处理。
|
||
- material 的 `target_ref` 按 Parser 契约可为 `null`,不得为满足 Agent schema 伪造 target。
|
||
|
||
### 5.4 调用矩阵(已实现)
|
||
|
||
建议每个通过入口、酒店、SourceMessage 和版本校验的 Current message 至多创建一个逻辑 request:
|
||
|
||
| Current/Parser 条件 | 建议行为 | 状态 |
|
||
|---|---|---|
|
||
| Parser SUCCESS,有 facts/materials | 同一逻辑execution调用一次;fallback为空 | Implemented |
|
||
| Parser SUCCESS,只有 facts | 仍调用,以解析完整 Current/History | Implemented |
|
||
| Parser SUCCESS,只有 materials | 调用一次 | Implemented |
|
||
| Parser SUCCESS,facts/materials 均空 | body-only同样调用一次;不以正文关键词决定渠道/跳过 | Implemented |
|
||
| Parser FAILED,有系统授权 Current-only fallback | 同一逻辑execution调用;只使用持久化有界fallback | Implemented |
|
||
| Parser FAILED,无 fallback | 仍处理完整邮件主题/正文;附件生成稳定blocker | Implemented |
|
||
| 渠道/Profile/版本未验证 | 不外呼;入口或 request preflight 失败 | Implemented |
|
||
|
||
无论采用哪一矩阵,都必须以稳定 call/no-call reason code 和唯一 request hash 审计。
|
||
|
||
## 6. Evidence Registry 提案
|
||
|
||
### 6.1 Evidence 类型
|
||
|
||
- Current subject;
|
||
- Current body;
|
||
- ordered History body;
|
||
- Parser facts/materials 的准确来源引用;
|
||
- 信息系统显式授权的 Current-only fallback。
|
||
|
||
History attachment 永远不属于 registry。
|
||
|
||
### 6.2 稳定身份
|
||
|
||
建议 ID 输入至少包含:
|
||
|
||
```text
|
||
evidence_schema_version
|
||
source_message_id
|
||
source_revision
|
||
scope/current_or_history
|
||
section/subject_or_body_or_parser_or_fallback
|
||
unicode_code_point_start
|
||
unicode_code_point_end
|
||
sha256(exact_source_text)
|
||
```
|
||
|
||
相同快照重复组装必须得到相同 ID。span 以 Unicode code point 计数,不使用 UTF-16 code unit;
|
||
`source_text` 必须是保存 revision 的准确子串,不做 trim、翻译或换行归一化后再定位。
|
||
|
||
### 6.3 分段建议(待审批)
|
||
|
||
为兼顾准确引用和可复核性,建议登记:
|
||
|
||
1. 完整 subject/body block;
|
||
2. 非空行 block;
|
||
3. 按受控标点形成的 clause block;
|
||
4. Parser material 与 fallback 的精确 block;
|
||
5. 对相同 source/revision/span/hash 去重。
|
||
|
||
分段只建立文本索引,不预判语义。若完整 request 超过 Provider 明确上限,preflight 失败;禁止删除 History、
|
||
缩短正文或通过摘要替代原文。
|
||
|
||
## 7. Request Builder 与 Preflight Validator
|
||
|
||
Request Builder 只接收已验证的内部 snapshot,不直接下载附件或查询 Provider。输出必须精确匹配
|
||
`fixed-channel-parsing-agent-input-v1.0.schema.json` 及配套 semantic rules。
|
||
|
||
Preflight 至少验证:
|
||
|
||
- channel/profile 精确配对和所有 contract/schema/profile/rule versions;
|
||
- Current/History source identity、revision、sequence、hash;
|
||
- ParserResult identity、status、facts/materials 和 attachment hash;
|
||
- evidence spans、exact text 与 ID 稳定性;
|
||
- fallback 只来自 Current 且在系统允许范围;
|
||
- target/fact/material/evidence 引用闭合;
|
||
- unknown fields、重复 IDs、超限和禁止数据;
|
||
- material optional target 的版本兼容策略。
|
||
|
||
Preflight 失败不得调用 Provider。
|
||
|
||
## 8. Provider-neutral Port 与 SuperAgent Adapter
|
||
|
||
建议 workflow Port:
|
||
|
||
```text
|
||
FixedChannelParsingAgentPort
|
||
invoke(ValidatedParsingAgentRequest, InvocationContext)
|
||
-> ParsingAgentInvocationResult
|
||
```
|
||
|
||
Port 不暴露 SuperAgent session/SSE DTO、token 或 HTTP exception。`InvocationContext` 仅包含稳定幂等键、
|
||
deadline、获准版本和安全审计关联。
|
||
|
||
SuperAgent adapter:
|
||
|
||
- 使用 `booking.parsing-agent.open-api.*` 独立配置;
|
||
- 复用 `SuperAgentOpenApiClientFactory` 和通用 session/SSE/run-status/recovery transport;
|
||
- 使用专属 external app/token,不回退到旧 Recovery/Booking Business/global key;
|
||
- 将 request 序列化为单一 canonical JSON payload;
|
||
- 限制响应大小与 deadline,只接受完整 final/end + successful run;
|
||
- 返回 resolved Profile ID供本地强校验,并把actual published version写入运行审计;
|
||
- 不把 raw provider answer 写入普通日志或业务 artifact。
|
||
|
||
常规 CI 只用 fake/mock adapter;真实连接属于单独 release gate。
|
||
|
||
## 9. Response Validator
|
||
|
||
Server 不把 Python validator 作为运行时依赖。建议采用严格 Java DTO(unknown property fail)加显式语义
|
||
validator,并用同一 canonical fixture 与 Python offline oracle 做 parity。
|
||
|
||
### 2026-08-17 ADR-018 修订
|
||
|
||
严格 DTO decode 继续作为整份结构门槛;跨请求语义 Validator 改为逐项验收。整份返回只在
|
||
request/message/version/Parser refs/fallback refs 身份不一致时拒绝。身份正确后,只按项目检查引用身份、来源
|
||
和 Parser 权威;失败项目及其依赖项目被移除,其他结果继续进入 Merger。以下早期“任一失败拒绝整份”和
|
||
“每个 material 必须由 response Validator 恰好闭合”的口径不再适用。
|
||
|
||
当前必须验证:
|
||
|
||
1. 顶层八组数组存在且无额外字段;
|
||
2. 所有 result IDs 全局唯一;
|
||
3. target、fact、material、evidence 引用均存在且类型正确;
|
||
4. `source_text/source_label` 可由 evidence registry 还原;单片段精确匹配或多片段共同覆盖Current原文均可,
|
||
`sequence`只承担展示顺序;
|
||
5. History 不能单独支持本次 candidate fact/relationship/mention/display;
|
||
6. candidate fact 不覆盖 Parser 异值;有明确 conflict review 时只保留为复核材料,Merger仍保留Parser值;
|
||
7. structured mention scope/target/quantity/source-room/evidence 合法;
|
||
8. forbidden business/Trace/department/TaskCard/RateRoom/PMS 字段在任何层级都不存在;
|
||
9. 已返回的 material disposition 引用身份与来源合法;缺少某项 disposition 不升级为整份失败;
|
||
10. Agent 声明的 conflict/review 与 Parser facts/materials 一致;未知引用只拒绝受影响项目。
|
||
|
||
candidate 业务值类型与完整性不再由本层作为整份门槛,继续由 Layer 5/6按已识别业务处理。严格 DTO 自身
|
||
结构失败仍整份拒绝;逐项恢复不覆盖无法反序列化的 Provider JSON。
|
||
|
||
## 10. Deterministic Local Merger
|
||
|
||
Merger 输入仅为 immutable ParserResult、validated Agent result 和冻结的 completeness policy。
|
||
|
||
规则:
|
||
|
||
- Parser facts 原样进入 `effective_facts[]`,保留来源与 rule ref;
|
||
- Agent candidate 与同 fact key Parser fact 同值时按批准规则合并 provenance,不替换 Parser 值;
|
||
- 异值只保留 Parser fact并生成 conflict review;
|
||
- 没有 Parser fact时,只有 Current/Parser material/fallback evidence 合法且 target 唯一的候选可成为有效事实;
|
||
- History-only、非法 target、非法 role 或引用不足的候选不得进入 effective view;
|
||
- 已通过验收的 material disposition保持审计引用;缺少处置不再由本层把整份Agent结果判失败;
|
||
- required fact 完全缺失时由 merger/completeness policy 生成 review;
|
||
- 合法 `structured_mentions[]`、display、binding、relationship 保持中立,不转成 Trace、部门或业务类型;
|
||
- 标准化排序、ID 和 review code 必须在重放中稳定。
|
||
|
||
### 10.1 最终结果拓扑(已实现)
|
||
|
||
权威八数组结果经本地merge后,确定性投影为latest Layer3ResultV2;以下中立内容均保留:
|
||
|
||
```json
|
||
{
|
||
"effective_facts": [],
|
||
"structured_mentions": [],
|
||
"display_information": [],
|
||
"target_bindings": [],
|
||
"relationships": [],
|
||
"review_items": []
|
||
}
|
||
```
|
||
|
||
V2没有直接业务槽位的Agent target、fact authority、exact v1 target/material/review引用保存在
|
||
`FIXED_CHANNEL_LAYER3_V2_AUDIT` sidecar。不得把 mention 塞入十类 Parser fact,也不得丢弃合法
|
||
display/binding/relationship;不得在投影器生成business type、Trace、部门、TaskCard、Room或Rate。
|
||
|
||
## 11. Orchestration 与持久化
|
||
|
||
### 11.1 入口
|
||
|
||
- AgentBus:维持先 capture SourceMessage,再触发 Booking;Parser 后只 enqueue execution。
|
||
- 手工 EML:PostgreSQL 分支补齐 capture/bind Current SourceMessage,再进入同一 Parser/execution 路径。
|
||
- 两条入口不得因来源不同生成不同 request/evidence/merge 规则。
|
||
|
||
### 11.2 Execution/outbox
|
||
|
||
实施时以 `server/src/main/resources/db/booking-postgresql/migration/` 的下一可用 Flyway 版本新增表,不能在
|
||
本 CR 预占固定编号。建议字段:
|
||
|
||
- execution id、hotel id、processing run id;
|
||
- source message id/revision、parser result artifact key;
|
||
- request hash、idempotency key、contract/profile versions;
|
||
- status、attempt、next attempt;
|
||
- lease owner/token、locked until、fencing version;
|
||
- provider session/run/resolved profile/version;
|
||
- response hash、safe failure code;
|
||
- created/updated/started/completed UTC timestamps。
|
||
|
||
领取、续租、完成、失败与重试使用 CAS/fencing 或等价单所有者语义。重复 SourceMessage/callback/replay
|
||
只能复用同一逻辑 execution,不产生双权威 artifact。
|
||
|
||
### 11.3 Artifact 与审计
|
||
|
||
- SourceMessage original store 继续唯一保存完整邮件正文和附件。
|
||
- Booking artifact 保存 public ParserResult、controlled fallback snapshot、normalized validated Agent result、
|
||
authoritative Layer 3 result。
|
||
- invocation audit 保存 refs/hashes/versions/status/failure code/provider metadata;不默认复制完整 request body
|
||
或 raw answer。
|
||
- 所有记录绑定 hotel + processing run + SourceMessage,沿用 processing-run retention 和访问边界。
|
||
|
||
## 12. Failure Policy 提案(待审批)
|
||
|
||
| Failure | 建议系统行为 | Parser facts | 自动业务处理 |
|
||
|---|---|---|---|
|
||
| Request internal invariant 失败 | run FAILED,记录安全 system code | 保留 artifact | 禁止 |
|
||
| Payload 超 Provider 限额 | 不调用;生成 blocker review/受控失败 | 保留 | 禁止 |
|
||
| Provider timeout/unavailable | 按稳定幂等键重试;耗尽后 blocker review | 保留 | 禁止 clean task |
|
||
| Invalid JSON/schema/forbidden field | 拒绝整份 result;blocker review | 保留 | 禁止 |
|
||
| Resolved profile/version mismatch | 契约失败,不 merge | 保留 | 禁止 |
|
||
| Parser FAILED,无 fallback | system failure/blocker review | 无 partial | 禁止 |
|
||
| Agent candidate 与 Parser 冲突 | Parser 值保留;生成 conflict review | 不变 | 仅人工风险路径 |
|
||
| material 未闭合/required fact 缺失 | 生成稳定 review item | 已确认 facts 保留 | 由 Layer 6 fail closed |
|
||
|
||
是否同时把 provider/contract failure 标记为 processing-run `FAILED`,或保留 run 并以 `BLOCKER review` 继续到
|
||
人工页面,需要在 CP0 确认。
|
||
|
||
## 13. Legacy 迁移与回滚
|
||
|
||
### 13.1 切换原则
|
||
|
||
- 新 v1 feature 默认 false,production 显式 false。
|
||
- v1 false:维持 `parseLegacy()` 与当前旧链。
|
||
- v1 true:使用公共 `parse()` + v1 execution/Agent/merger;旧 Field Recovery 强制 false。
|
||
- 不提供 legacy/v1 双写模式,不进行双外部 Agent 调用。
|
||
- 新固定渠道 Layer 3 result 直接投影latest `Layer3ResultV2`并进入同run当前Layer4/5/6。compatibility
|
||
projector只保留feature关闭/CP6前legacy代码,不再作为新路径权威下游。
|
||
|
||
### 13.2 回滚
|
||
|
||
关闭 v1 feature 即恢复 legacy 分支;不删除 execution、artifacts、audit 或历史 migration。未完成 execution
|
||
进入获准的 held/cancelled 状态,不能在关闭后继续外呼。具体状态名在 failure policy 审批后冻结。
|
||
|
||
### 13.3 独立退役
|
||
|
||
运行观察和 rollback 演练通过后,另开 checkpoint:先移除 runtime 调用,再逐步删除 `parseLegacy()`、
|
||
旧 Field Recovery、`Layer3ContractsV2`、`FixedChannelParsingAgentContributionService` 及专属测试。历史 migration
|
||
和审计数据永不因代码清理删除。
|
||
|
||
## 14. 安全与数据边界
|
||
|
||
- INTERNAL_ONLY,不新增外部入口或权限面。
|
||
- 所有查询、artifact、execution 和审计都绑定 hotel 与 processing run。
|
||
- Secret 只由部署 Secret 注入;仓库、测试、日志、异常、文档中无真实 key。
|
||
- 不外发 History attachments、附件 URL、数据库标识、PMS/Opera 数据或用户未授权上下文。
|
||
- 不保存隐藏推理;raw provider answer 默认不持久化。
|
||
- 日志使用稳定 ID/hash/failure code,不输出完整正文或 material raw content。
|
||
- Provider output 不能直接写 TaskCard、订单、PMS/Opera 或最终业务状态。
|
||
|
||
## 15. 实施 Checkpoints
|
||
|
||
1. **CP0 Contract Gate**:技术架构、版本策略和失败矩阵已批准;business completeness catalog 与 release evidence 仍为放行Gate。
|
||
2. **CP1 Local Core**:v1 DTO、History/evidence/request builder、validators、merger、fake Port 与 parity tests。
|
||
3. **CP2 Durable Execution**:Booking PostgreSQL execution/outbox、claim/fencing/retry/audit 与 fake worker。
|
||
4. **CP3 SuperAgent Adapter**:专属 config/wrapper/adapter,仅用 mocked transport 验收。
|
||
5. **CP4 Runtime Wiring**:双入口 SourceMessage、公共 ParserResult、FAILED fallback、worker、merge、direct V2 projection和same-run continuation。
|
||
6. **CP5 Controlled Release**:平台 Prompt/Skill/Profile/app 绑定证据和无 PII smoke;production 另行批准。
|
||
7. **CP6 Legacy Exit**:观察期后独立删除旧 runtime 调用与契约。
|
||
|
||
每个 checkpoint 独立完成 focused tests、全量相关回归、security review 与 project-doc post-task gate。
|
||
|
||
## 16. 测试与验收
|
||
|
||
最低新增测试:
|
||
|
||
- Java DTO/schema canonical round-trip 和 unknown-field negatives;
|
||
- Python/Java fixture parity;
|
||
- 完整 History、无 History attachment、Unicode spans、稳定 IDs、超限不截断;
|
||
- request identity/version/fallback/ref preflight;
|
||
- response forbidden keys、exact source、History-only、Parser conflict、material closure;
|
||
- merger immutability、same/different value、deterministic replay、completeness、neutral structures;
|
||
- fake Port 与 mocked SuperAgent success/failure/recovery/profile mismatch;
|
||
- durable enqueue/claim/fencing/retry/restart/duplicate callback;
|
||
- Manual EML 与 AgentBus 同契约集成;
|
||
- legacy/v1 互斥与 rollback;
|
||
- Secret/PII/raw answer/attachment 不落日志和审计。
|
||
|
||
回归基线不得下降:QBD 114/4、LianTai 70/6、Parser 扩大样本 0 failures/errors、Agent 22/22、Python
|
||
50/50,以及后端 focused/full suite。
|
||
|
||
## 17. 预计文件归属
|
||
|
||
| 范围 | 预计归属 |
|
||
|---|---|
|
||
| v1 runtime DTO | `workflows/reservation/common/dto/booking/layer3/v1` |
|
||
| Builder/Validator/Merger | `workflows/reservation/booking/service` 与 `service.impl` |
|
||
| Provider-neutral Port | `workflows/reservation/booking/service` |
|
||
| SourceMessage History query | `platform/message` 内部 repository/service |
|
||
| Execution persistence | `workflows/reservation/booking/repository` + Booking PostgreSQL migration |
|
||
| SuperAgent adapter | `integrations/ai/superagent/adapter` + 专属 properties/wrapper |
|
||
| Orchestration anchors | `ReservationBookingEmailIntakeServiceImpl`、`AgentBusFrameProcessor`、`BookingContractAssembler`、`BookingPostgresMessageOrchestrator` |
|
||
| Config | `application*.yml` 的 `booking.parsing-agent.*`;默认/production false |
|
||
| Tests | 对应 server unit/integration、canonical fixtures 与 Python package regression |
|
||
|
||
共享热点文件只有在对应 checkpoint 开始前重新检查 ownership/diff 后才修改。
|
||
|
||
## 18. CP0 Approval Checklist
|
||
|
||
- [x] 接受带审计闭环的八数组 `FixedChannelLayer3Result` topology。
|
||
- [x] optional material `target_ref` 采用“字段必有、值可空”的v1.0 pre-release schema纠正。
|
||
- [x] 冻结 exact Agent call/no-call matrix。
|
||
- [x] 冻结完整文本+行/句片段+附件材料的 evidence segmentation 与超限不截断行为。
|
||
- [x] 冻结 History conversation/revision/order sidecar 规则。
|
||
- [x] 冻结 failure → Parser-only blocker review / internal execution failed 映射。
|
||
- [ ] QBD/LianTai required-fact completeness catalog;通过本地policy注入,未配置时阻塞自动业务放行。
|
||
- [x] 首版维持0个body-only或恰好1个匹配workbook,多匹配fail closed。
|
||
- [ ] CP5 前提供专属 Main Prompt/Skill/Profile/app/token 绑定证据。
|
||
|
||
上述技术项已经用户授权由Codex决定,CP1–CP4可以在默认关闭、fake/mock、无真实客资的条件下推进。
|
||
required-fact业务目录与CP5平台证据未关闭前,不得启用真实Provider或自动业务放行。
|
||
|
||
## 19. 当前隔离实现状态(2026-08-12)
|
||
|
||
已完成一个不依赖上述 open gates、且完全未接线的结果接收切片:
|
||
|
||
- `FixedChannelParsingAgentResultContracts` 镜像冻结 v1 result envelope,并实施纯结果内部不变量;
|
||
- `FixedChannelParsingAgentResultDecoder` 使用严格 Jackson 反序列化,拒绝未知字段、尾随内容、重复 JSON key、
|
||
缺失必填字段及非法版本/引用形状;
|
||
- canonical QBD/LianTai expected result 可严格 round-trip,负向测试覆盖禁止业务字段、重复 output/material
|
||
disposition、scope/target、fallback ref 与 incomplete mention/review 闭环。
|
||
|
||
该切片没有 Spring 注册、workflow Port、Provider Adapter、request/evidence builder、跨输入 response validator、
|
||
Merger、配置、DDL 或编排接线,因此不改变现有 `parseLegacy`/旧 Recovery 运行行为,也不解除
|
||
`HOLD/INTERNAL_ONLY`。验证结果为专项 Java 10/10、相关 Java focused 34/34、Agent 21/21、Python 49/49。
|
||
后端全量 `mvn test` 共运行 693 tests,0 failures、6 errors、8 skipped;6 个 error 全部来自旧 v0.2
|
||
测试引用已删除的 Trace/schema/fixtures,作为兼容迁移项保留,未恢复过时资产。
|
||
|
||
## 20. CP0技术授权与nullable material target纠正(2026-08-12)
|
||
|
||
用户已明确委托Codex决定并推进技术方案;ADR-010技术Gate因此关闭,离线CP1–CP4获准在默认关闭、
|
||
fake/mock、无真实客资条件下实施。business required-fact catalog和CP5平台绑定仍是自动业务/真实Provider
|
||
放行Gate。
|
||
|
||
Parser material `target_ref`按已冻结业务/Java契约纠正为required-but-nullable;Parser fact target继续必须为
|
||
对象。该修正属于从未发布且持续HOLD的v1.0 schema表达纠错,不创建v1.1双轨,不修改Main Prompt。
|
||
Agent专项22/22、Python全套50/50通过;15成员包确定性重建和`--check`通过,当前SHA-256为
|
||
`3ee9bbb90107078710958df15901c87cbea7be219ab6cb29540ab348e3f02ff2`。本次hash更新来自canonical
|
||
evidence span发布前纠正;Main Prompt SHA、成员数量和HOLD状态不变。
|
||
|
||
## 21. CP1纯本地核心完成状态(2026-08-12)
|
||
|
||
默认关闭、无Spring/Provider/数据库接线的CP1核心已完成:
|
||
|
||
- v1 request/result/final Layer3强类型DTO与严格result decoder;
|
||
- 完整Current/History、Unicode code-point、稳定ID/hash的evidence registry和request builder;
|
||
- Provider调用前request preflight与返回后的跨输入semantic validator;
|
||
- 八数组`FixedChannelLayer3Result`、Parser不可覆盖的deterministic merger和Parser-only failure结果;
|
||
- required-fact policy端口;未配置时明确BLOCKER,禁止猜测酒店业务目录;
|
||
- provider-neutral Port、test-only fake和无运行态接线的local pipeline。
|
||
|
||
Java联合focused 59/59、Agent专项22/22、Python全套50/50通过。Profile平台ID/version白名单、持久execution、
|
||
真实SuperAgent adapter、主链接线与legacy迁移仍分别属于CP2–CP5;当前没有真实外部调用,发布继续
|
||
`HOLD/INTERNAL_ONLY`。
|
||
|
||
## 22. CP2持久Execution与Worker完成状态(2026-08-12)
|
||
|
||
默认不注册worker、不调用真实Provider的CP2离线核心已完成:
|
||
|
||
- Booking PostgreSQL V5定义durable execution、四类normalized artifact、lease、fencing、retry与终态约束;
|
||
- repository实施精确run/source/revision入队、幂等冲突核对、`SKIP LOCKED`领取、过期接管、续租和CAS;
|
||
- artifact必须为JSON object且hash匹配,同type只能幂等重放,不得用新payload覆盖旧快照;
|
||
- 终态前必须已有Parser和同hash Layer3 artifact;`SUCCEEDED`额外要求validated Agent artifact;
|
||
- 无Spring接线durable worker支持heartbeat、指数backoff、重试耗尽Parser-only review与崩溃后更高fence恢复;
|
||
- local handler从内部loader重建v1 request,重新核对identity/hash/bytes/History revisions/version,只保存
|
||
Parser/fallback、validated Agent result和authoritative Layer3,不保存raw answer。
|
||
|
||
timeout/unavailable进入持久重试;invalid JSON/schema/profile等可预期契约失败直接形成Parser-only
|
||
blocker;内部request/persistence invariant不发布权威Layer3。CP1+CP2 Java联合focused 83/83、Agent
|
||
22/22、Python 50/50通过。本checkpoint未连接真实PostgreSQL,未注册scheduler/SourceMessage
|
||
loader,未调用SuperAgent/AgentBus/PMS/Opera;runtime继续`HOLD/INTERNAL_ONLY`。
|
||
|
||
## 23. CP3专属SuperAgent Adapter完成状态(2026-08-12)
|
||
|
||
默认/production关闭、仅mocked transport验收的CP3已完成:
|
||
|
||
- 新增`booking.parsing-agent.*`专属properties、独立API key与expected Profile ID栅栏;不回退旧
|
||
Recovery、Booking Business、Debug EML、AgentBus或global key;
|
||
- 专属wrapper只复用`SuperAgentOpenApiClientFactory`及既有session/SSE/run-status/recovery transport;
|
||
- provider-neutral adapter发送完整AgentRequest JSON,使用hash subject与稳定request/idempotency identity,
|
||
有界限制request/message/response UTF-8 bytes并在独立executor中执行整体deadline;
|
||
- Trace被配置门禁强制关闭;实际resolved Profile ID必须与部署值精确一致,published version只作运行审计;
|
||
- payload oversize、invalid response和profile mismatch立即形成Parser-only终态review;timeout/unavailable由CP2
|
||
durable worker重试;executor拒绝fail fast,不回退入口/worker线程执行;
|
||
- Provider已返回但被本地栅栏拒绝时,只把response hash及安全session/run/Profile/model/token metadata交给
|
||
execution审计,不保存raw answer或完整request。
|
||
|
||
CP1–CP3与共享SuperAgent transport联合focused 119/119、Agent 22/22、Python 50/50通过。该历史checkpoint未
|
||
调用真实SuperAgent/AgentBus/PostgreSQL/PMS/Opera,未填写真实Profile/token,未注册scheduler、
|
||
SourceMessage loader、pipeline/worker bean或主链;`booking.parsing-agent.enabled`默认false且production
|
||
显式false。后续 CP4 已完成运行接线;business required-fact catalog和CP5平台绑定证据仍未完成,runtime继续
|
||
`HOLD/INTERNAL_ONLY`。
|
||
|
||
## 24. CP4内部运行链接线与验收状态(2026-08-12 历史checkpoint;下游边界已由第26节取代)
|
||
|
||
CP4 已完成并在 fake/mock、无真实外部调用边界内验收:
|
||
|
||
- 手工 EML 与 AgentBus 都先持久化/复用 SourceMessage,再以 `source-message-inbox:<id>` 进入 Booking;
|
||
同一 SourceMessage 的重复 frame 使用相同 Booking 幂等键,changed duplicate 保留首份来源事实且不重放下游;
|
||
- v1 固定渠道分支对恰好一个完整 Current workbook 调公共 `parse()`;body-only 建零 ParserResult request;
|
||
不完整或多 workbook 调用前失败。该分支不调用 `parseLegacy()`、旧 Recovery 或 `Layer3ContractsV2`;
|
||
- Source snapshot loader 读取 exact Current subject/body 与完整有序 History body,History 附件、URL、bytes 均不
|
||
进入 request/evidence;revision、Unicode span、hash 与机器读取审计闭合;
|
||
- public Parser artifact、execution enqueue 和 run Parser 状态同一 Booking PostgreSQL 事务;worker 的 normalized
|
||
artifacts、execution completion、权威 Layer3、compatibility projection 与 Context 同一事务。内部失败同事务
|
||
标记 execution/run failed,不发布半成品;
|
||
- 权威 `FIXED_CHANNEL_LAYER3_RESULT` 持久保留八数组,包括 `effective_facts[]`、中立
|
||
`structured_mentions[]` 和 `review_items[]`;`EFFECTIVE_PARSED_FACT_SET` 仅供现有 Context 兼容。BEFORE 和
|
||
中立结构只形成版本化 neutral hint,不能变成 Trace、部门、Rate Code、TaskCard 或 PMS 决定;
|
||
- Booking PostgreSQL V6 扩展 runtime artifact allowlist;MySQL V30 保存 exact original subject。既有 V5 migration
|
||
未改写。v1/旧 Field Recovery 启动互斥;默认与 production 的 enabled/provider/worker 均为 false;
|
||
- 该历史CP4 checkpoint当时不调用 Layer 5 Business Agent:required-fact policy 未配置、有 review 或需要 Agent
|
||
的路径都停在 Context。第26节的direct V2 handoff已以同run continuation取代该下游边界。
|
||
|
||
验证:CP4 定向 Java 233 tests,0 failures/errors、7 skipped;排除两组明确属于 CP6 的旧 v0.2 测试后,
|
||
其余主流程 Java 782 tests,0 failures/errors、8 skipped。原始全量 789 tests 仍有 6 个 FileNotFound errors,
|
||
全部来自 `FixedChannelParsingAgentContributionServiceTest` 与 `FixedChannelParsingAgentV02ContractTest` 读取已删除
|
||
v0.2 schema/fixtures,CP4 新 failure 为 0。Agent 22/22、Python 50/50、Skill source/archive/manifest 严格校验通过。
|
||
|
||
CP4 不等于生产启用:真实 Provider/scheduler 未注册,未调用 AgentBus WebSocket、PMS 或 Opera。CP4 收口后,
|
||
用户另行批准的非生产 PostgreSQL Gate 已完成V1–V6 migration、幂等启动、restart/lease/fencing/concurrency
|
||
smoke;没有调用Provider,测试数据已清理。CP5 前仍须补齐专属 Main Prompt/Skill/Profile/app/token/API
|
||
exposure 绑定证据、无 PII 合成 smoke、MySQL V30真实migration smoke、required-fact 业务目录,以及 v1
|
||
terminal failure 的人工重放/告警runbook。CP6 之前不得删除
|
||
`parseLegacy()`、旧 Recovery、`Layer3ContractsV2` 或旧 contribution service。
|
||
|
||
## 25. CP4后PostgreSQL基础设施Gate(2026-08-12)
|
||
|
||
- 目标测试库经只读门禁确认为PostgreSQL 15.14 writable primary、非superuser角色和预期数据库/schema owner;
|
||
- 旧`schema_migration`与仓库V001完全一致,八张旧业务表均为空;Flyway以version 0记录旧模型共存,不删除、
|
||
重命名或回填旧对象,随后成功应用V1–V6;
|
||
- 两个独立Spring上下文验证进程重启后的过期lease接管:新owner由attempt/fence 1推进到2,旧owner续租和终态
|
||
写入均被拒绝;两个独立连接池并发claim同一execution时只有一个成功;
|
||
- 真实PgJDBC暴露`Instant`无法直接绑定`TIMESTAMPTZ`的问题,repository统一以`Timestamp`写入,领域契约不变;
|
||
- 正式opt-in PostgreSQL smoke 1/1、repository focused 7/7、当前主流程Java(排除两组CP6历史类)789项均
|
||
0 failures/errors(9 skipped);合成数据归零、旧业务表仍为空、无跨schema外键;
|
||
- 该Gate未授权或启动CP5 Provider/scheduler、CP6删除、MySQL、PMS或Opera。MySQL V30和告警/人工恢复runbook
|
||
仍是自动运行发布前置条件,但不阻塞第27节的受控测试平台绑定与合成契约冒烟。
|
||
|
||
## 26. CP4 V2 direct handoff 与 Parser FAILED fallback(2026-08-13)
|
||
|
||
在不改变ADR-010核心决策、冻结Agent Schema/Main Prompt/Skill或Parser契约的前提下,CP4主链补齐如下:
|
||
|
||
- 当前`@Primary BookingMessageOrchestratorV2Impl`对已验证QBD/LianTai执行公共Parser,持久化ParserResult与
|
||
fallback snapshot,原子enqueue并把同一run标记`AWAITING_PARSING_AGENT`;入口随即返回,不执行Layer4–7;
|
||
- worker本地严格校验/merge后,以`FixedChannelLayer3V2Projector`直接生成latest `Layer3ResultV2`;targets、
|
||
bindings、relationships、neutral mentions、display、reviews、evidence、material dispositions完整保留,V2无槽位
|
||
的authority和exact v1审计保存`FIXED_CHANNEL_LAYER3_V2_AUDIT`;
|
||
- `BookingV2Layer3Continuation`以相同run执行当前Layer4/5/6并保存现有Layer7 confirmation projection边界;
|
||
callback/终态重放不重复Parsing Agent或Layer5,不创建第二run;
|
||
- expected Agent失败生成Parser-only blocker后仍同run fail closed;内部identity/persistence/downstream invariant
|
||
标记execution/run failed,不发布半成品或继续下游;
|
||
- Parser FAILED fallback只授权唯一Current `.xlsx`且严格匹配source/revision/attachment/hash/MIME/size;最多
|
||
2 MiB、4 visible sheets、200 visible rows、800 visible scalar cells、512 code points/cell、20,000 total,任一超限
|
||
整体拒绝且不截断。公式、宏、链接、图片、注释、隐藏内容、URL-like scalar、损坏workbook、History附件、
|
||
bytes/Base64和外部下载全部拒绝;worker只读持久snapshot;
|
||
- FAILED无fallback仍接收完整Current主题/正文并生成`PARSER_FAILED_NO_AUTHORIZED_FALLBACK`;SUCCESS fallback、
|
||
identity不一致、未知evidence、重复/缺失material disposition、越界cell均fail closed;
|
||
- AgentBus收到新固定渠道queued warning时抑制旧realtime dispatch;feature关闭、非固定渠道、未接管路径不变。
|
||
- `SOURCE_ROOM_NAME`的raw值与workbook Evidence继续保留;normalized值必须来自Profile Parser已成功解析的
|
||
`sourceRoomType`,V2 projector不得重新归一。无法确定标准房型时不发布该fact而进入material/review;Layer4
|
||
继续exact-only,不新增fuzzy、contains或空格/连字符等价,也不改Roomtype authority/catalog。
|
||
|
||
补充E2E覆盖QBD与普通LianTai:`ONE BEDROOM SUITE DBL`与直接`ONE-BEDROOM-SUITE-DBL`均在Layer3/V2保留
|
||
标准normalized值并由Layer4解析`RM2`,原文/Evidence可审计,Rate/早餐结果一致;Q10、Garden、Pool及未知label
|
||
回归通过(QBD均为`GRPA1/含早/BUALUANG`,普通LianTai均为`LBLT/不含早`)。最终本地fake/mock focused为
|
||
149 tests(142 executed、7 real-sample skipped、0 failures/errors)。全量后端902
|
||
tests、1 failure、0 errors、9 skipped;唯一failure为范围外并行V4 controller用例
|
||
`ReservationV4CommandControllerTest.shouldResolveRoomInformationReviewWhenDisplayPayloadAlreadyUsesStableModel`
|
||
(expected 200、actual 400),未在本专项修改。未调用真实Provider、AgentBus WebSocket、真实数据库、PMS或Opera。
|
||
默认和production的Parsing Agent/provider/worker仍false;CP5、CP6、frontend与外部写入继续HOLD。
|
||
|
||
## 27. CP5 测试 SuperAgent 绑定与真实契约冒烟(2026-08-14)
|
||
|
||
用户明确授权调用测试环境 AgentBus/SuperAgent、禁止调用 PMS/Opera 后,CP5 在“测试平台绑定+受控合成
|
||
Provider 调用”边界内完成。AgentBus 是入站消息入口,SuperAgent 是异步 Provider;二者不是同一个调用,
|
||
本次没有启动 AgentBus WebSocket 或部署自动 worker。
|
||
|
||
### 27.1 平台绑定证据
|
||
|
||
按 ADR-005 使用两个互不共享 Secret 的 external app,公开 Open Agent API 仍由 token 绑定 Profile:
|
||
|
||
| Agent | Profile ID | 已发布版本 ID | 模型 | 唯一启用 Skill | Main Prompt trimmed SHA-256 |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| Booking Business Agent | `85ab8334-4e1c-4716-8ec0-9c3c099cec9b` | `9fed48c0-1f53-4d5a-8ba0-52865c738d83`(v7) | `deepseek-v4-pro` | `booking-desk-event` | `a54a0c12dc2a815af04f970999101f474913c21aafff72c3d1d8d5ead5cdc47f` |
|
||
| Fixed-channel Parsing Agent | `ea56cb01-72f0-4ef2-9a73-40cfae1abcd4` | `8b30ebe9-180c-433b-89cf-9c59933b618a`(v8) | `deepseek-v4-pro` | `fixed-channel-core-parsing-agent` | `b59891f4cbd043a35c0ed76ba57d5d733a6d6816e6a2455b899514c568279e2` |
|
||
|
||
两份平台 Prompt 与仓库独立 Main Prompt 在去除平台归一化的尾部空白后逐字一致;Main Prompt 仍未打入
|
||
`.skill` 包。两个 Profile 均通过平台发布检查 11/11,API 与 stream 开启,MCP、memory、Profile calls 和
|
||
公开 Trace 均关闭,最大并发为 2。平台 ID 可进入非敏感配置,external app Secret 不写入仓库、文档或日志。
|
||
|
||
### 27.2 真实 Provider 契约结果
|
||
|
||
- Booking:Java opt-in smoke通过1/1,耗时52.782秒;真实返回精确命中上述Profile/v7,经过当前
|
||
`BookingBusinessAgentInputV1`投影、严格CandidateDecisionV2 decoder和Layer6 validator,
|
||
`canonical-new-payment`合成样本包含合法`NEW_BOOKING` target。另一次直接transport smoke以general语义得到
|
||
evidence-closed的`GENERAL_NOTIFICATION`。
|
||
- Parsing:Java opt-in smoke 通过 1/1,耗时 202.146 秒;真实返回精确命中上述 Profile/v8,使用 LianTai
|
||
canonical 合成 fixture,经过当前 adapter、deadline、严格 decoder 与 response validator,完整答案超过
|
||
2,000 字符且契约校验通过。
|
||
- 真实 Parsing 调用暴露平台公共 `message.final` 约 2,000 字符上限:同一 SSE 中较早、
|
||
`finish_reason=stop` 的 assistant message 含完整 JSON,而 `message.final` 是其严格前缀。共享 SSE parser
|
||
已收紧为:只有 core final 是当前完整 stop 内容的严格前缀时才保留完整内容;不同内容的显式 core final
|
||
仍保持权威。Parsing 默认整体等待上限据实由 120 秒提高为 240 秒。
|
||
|
||
### 27.3 本地配置、验证与未放行边界
|
||
|
||
- 默认配置已锁定两个已验证 Profile/version;所有 enabled/provider/worker 开关仍为 `false`,production
|
||
继续硬关闭。部署 Secret 未写入任何配置文件。
|
||
- SuperAgent transport/config/adapter focused:53 tests,0 failures、0 errors、2 个真实测试默认 skip。
|
||
- 后端全量稳定复跑:953 tests,1 failure、0 errors、11 skipped。唯一失败是并行 V4 范围外既有用例
|
||
`ReservationV4CommandControllerTest.shouldResolveRoomInformationReviewWhenDisplayPayloadAlreadyUsesStableModel`
|
||
(expected 200、actual 400),不经过本次 CP5 代码。
|
||
- 本次没有连接 AgentBus WebSocket、没有部署或重启应用 worker、没有执行数据库 migration/lease smoke,
|
||
没有调用 PMS/Opera,也没有开始 CP6 删除。
|
||
|
||
因此,CP5 的测试平台身份、Prompt/Skill/Profile/version 绑定及两条真实 Provider 契约调用已经闭环;要形成
|
||
自动运行发布,仍须在指定非生产部署中注入独立 Secret、重启并启用选定 worker,执行完整
|
||
AgentBus→SourceMessage→PostgreSQL execution→两 Agent→Layer 6 smoke,补齐监控/告警/人工重放手册和所需
|
||
required-fact 业务目录。若部署仍走 MySQL 主路径,还需完成 V30 migration 验证。production、V2→V4
|
||
authoritative writer、PMS/Opera 与 CP6 均需单独批准。
|
||
|
||
## 28. 公开 Trace 主线修订(2026-08-17)
|
||
|
||
M012 Processing Run全生命周期日志已确认要求当前fixed-channel Parsing Agent调用携带
|
||
`include_trace=true`。`booking.parsing-agent.open-api.include-trace`现默认true,显式false由properties校验
|
||
在Provider调用前fail closed;第23节“Trace强制关闭”和第27.1节“测试平台公开Trace关闭”仅保留为当时
|
||
checkpoint/平台状态,不再表示当前信息系统调用契约。legacy Field Recovery的no-Trace兼容边界不变。
|
||
|
||
Trace模式只有公开`run.completed(status=success)`和顶层`end`同时存在才成功;core `message.final`只提供
|
||
进程内最终JSON,不能替代完成证据。安全`public_trace_events`通过既有adapter进入Parsing execution audit/
|
||
回放,可保留`reasoning.summary`等公开摘要;`message.delta`/`message.final`文本不写可持久Trace,URL、Secret、
|
||
Authorization、Cookie与CSRF统一脱敏并限长,raw answer与完整request继续不保存。
|
||
|
||
属性/SSE/安全投影/两条业务主链37项与共享client loopback 4项聚焦测试全部通过。本修订未调用真实SuperAgent、
|
||
数据库、AgentBus WebSocket、PMS/Opera,未开启Parsing Agent/provider/worker或production开关;平台能力启用和
|
||
目标环境live smoke仍是部署门禁。
|