fix(trace): 白名单放行 session —— 归属标识可读,正文边界不动
主人 2026-10-26 裁定:session 是**业务标识**,不是正文。它是排障时把一条 stderr 日志对回某个会话的唯一线索;而 /admin/flow/graph 本来就按会话返回、连 sessionId 都给了,图里多一个 session 不构成新的暴露。因此把 session 加进共享白名单 (safePropKeys,走 redactValue 的普通清洗),不再被写侧折成 Digest。 「不放宽白名单」仍是原则:本次只放行这一个键,正文的边界一个字没动 —— - trace 侧新增 TestJSONRecorder_KeepsSessionReadableDropsBody,**一条用例同时钉 两件相反的事**:JSONL 里 `"session":"web#lane-2"` 原文可读;同一 span 里的 result / text 哨兵正文仍然搜不到,且只在 omitted 里留下体积与指纹。 - loop 侧真循环用例补一句断言:落盘里 `"session":"sess"` 可读,而工具结果哨兵 同时仍不可见。 - 变异验证:把 session 从白名单摘掉,上述两处都会变红(session 落到 omitted)。 回归:go build ./... + go vet ./... + go test -count=1 ./... 全绿; trace/loop/orchestration 另跑 -race 全绿。
This commit is contained in:
1 parent
003d12a712
commit
6d0df6a825
3 files changed
+52
-2
No files matched your search
@@ -130,6 +130,12 @@ func TestRun_ToolResultNeverEntersSpan(t *testing.T) {
|
||||
if strings.Contains(raw, strings.Repeat("拿到的报表行:", 16)) {
|
||||
t.Fatalf("JSONL 里出现了超出一份摘要的结果原文:%s", raw)
|
||||
}
|
||||
// 归属标识反而必须原文可读(主人 2026-10-26 裁定:session 是业务标识,不是
|
||||
// 正文;排障要把一条 stderr 日志对回某个会话)。它可读与正文不可见并不矛盾,
|
||||
// 这一条与上一条同时成立才是这一片的验收口径。
|
||||
if !strings.Contains(raw, `"session":"sess"`) {
|
||||
t.Fatalf("JSONL 里 session 不可读:%s", raw)
|
||||
}
|
||||
}
|
||||
|
||||
// TestRun_ToolSpanStillTellsOKFromError 是「脱敏不能把 span 变得没用」的验收钉:
|
||||
|
||||
Reference in new issue
Block a user