fix(consult): align stream-layout contract with folded audit markup
Independent Staging Quality Gate / validate (push) Successful in 9m6s
Independent Staging Quality Gate / publish (push) Successful in 10m31s

The activity-row assertion still expected a one-line ChatMessageContent call, which cancelled the staging gate.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-19 15:55:26 +08:00
parent 8db716ca36
commit 9efd847d2f
2 changed files with 4 additions and 2 deletions
+1 -1
View File
@@ -4469,7 +4469,7 @@
- 触发条件:有出生分钟的个人盘咨询,模型按旧合同把 `| 技法 | 状态 | 说明 |` 写进 `answer.delta`
- 根因:可见语音要求口语末尾贴完整 Markdown 技法审计表;`.markdown-table` 没有样式;列表项里的段落仍吃正文边距。BUG-011 只禁止内部 `EvidenceAuditPanel`,没有另做用户可读的折叠表。
- 修复:口语不再粘贴审计表。服务端把已交付行放进回执,界面用默认收起的 `本轮技法` 折叠块展示。历史回答若仍带该 Markdown 表,则从正文拆出再折叠。比较表与列表改用对话字号、边距和横向滚动。不恢复内部证据面板、英文状态码或 raw receipt。
- 验证:`frontend/tests/consultation-technique-audit.test.ts``consultation-voice-contract``skill-binding``evidence-audit-panel``chat-bundle-splitting-contract`
- 验证:`frontend/tests/consultation-technique-audit.test.ts``consultation-voice-contract``skill-binding``evidence-audit-panel``chat-bundle-splitting-contract``chat-stream-layout`
- 防复发:聊天消息不得再挂载 `EvidenceAuditPanel`;口语合同不得要求把技法审计表写进正文;折叠块默认不得带 `open`
- 相关记录:BUG-011、BUG-287
- 复发自:BUG-011
+3 -1
View File
@@ -57,7 +57,9 @@ test("shows honest agent activity states before and during streamed text", () =>
assert.match(messageRowSource, /正在处理…/);
assert.match(messageRowSource, /showActivity = message\.state !== "settled"/);
assert.match(messageRowSource, /\{showActivity && \(/);
assert.match(messageRowSource, /message\.text && <ChatMessageContent text=\{message\.text\}/);
assert.match(messageRowSource, /message\.text && \(/);
assert.match(messageRowSource, /<ChatMessageContent[\s\S]*text=\{message\.text\}[\s\S]*auditRows=\{message\.agentExecutionReceipt\?\.techniqueAuditTable\}/);
assert.match(globalStyles, /\.agent-activity-status \+ \.message-answer/);
assert.match(activitySource, /<ThinkingOrb aria-hidden="true" state=\{state\} size=\{20\}/);
assert.match(activitySource, /className="agent-activity-status__text"/);
assert.match(globalStyles, /@keyframes agent-activity-shimmer/);