test(acp-snapshot): cover the child-omission branches synthetically

The childToolOmissions comparison arms ran only through the examples
snapshot suites, which the unit coverage gate does not count. Add an
authored child-omission scenario to the synthetic replay suite: one
scripted child omits the declared tool (header pin minus the omission,
prompt pin skipped), one keeps the full set (pin and prompt compared
verbatim), restoring 100% branch coverage on suite.ts.
This commit is contained in:
Yichen Jiang
2026-07-19 17:34:10 +08:00
parent cb74477d42
commit d231f30024
8 changed files with 134 additions and 0 deletions
@@ -0,0 +1,116 @@
{
"prompt": "respond",
"echoWorkspace": true,
"logs": [
{
"file": "b/parent.jsonl",
"lines": [
{
"type": "session",
"id": "{{SID}}",
"createdAt": 200,
"cwd": "{{CWD}}"
},
{
"type": "request/header",
"seq": 0,
"time": 5,
"data": {
"header": {
"config": {
"model": "fake"
},
"system": "SYS PROMPT",
"tools": [
{
"name": "t1",
"description": "D1",
"parameters": {
"type": "object"
}
}
]
},
"reason": "initial"
}
},
{
"type": "assistant/chunk",
"seq": 1,
"time": 5,
"data": {
"turn": 1,
"step": 1,
"chunk": {
"type": "text-delta",
"index": 0,
"text": "hi"
}
}
}
]
},
{
"file": "b/child1.jsonl",
"lines": [
{
"type": "session",
"id": "eeeeeeee-1111-4222-8333-444444444444",
"createdAt": 300,
"cwd": "{{CWD}}",
"parentSession": "{{SID}}"
},
{
"type": "request/header",
"seq": 0,
"time": 6,
"data": {
"header": {
"config": {
"model": "fake"
},
"system": "SYS PROMPT",
"tools": []
},
"reason": "initial"
}
}
]
},
{
"file": "b/child2.jsonl",
"lines": [
{
"type": "session",
"id": "ffffffff-2222-4333-8444-555555555555",
"createdAt": 400,
"cwd": "{{CWD}}",
"parentSession": "{{SID}}"
},
{
"type": "request/header",
"seq": 0,
"time": 6,
"data": {
"header": {
"config": {
"model": "fake"
},
"system": "SYS PROMPT",
"tools": [
{
"name": "t1",
"description": "D1",
"parameters": {
"type": "object"
}
}
]
},
"reason": "initial"
}
}
]
}
]
}
@@ -0,0 +1 @@
{ "steps": [{ "op": "initialize" }, { "op": "newSession" }, { "op": "prompt", "text": "plain" }] }
@@ -0,0 +1,2 @@
{"type":"session","id":"eeeeeeee-1111-4222-8333-444444444444","createdAt":12,"cwd":"/rec/plain-cwd","parentSession":"56565656-7878-4989-8a9a-9b9b9b9b9b9b"}
{"type":"request/header","seq":0,"time":12,"data":{"header":{"config":{"model":"fake"},"system":"{{system}}","tools":"{{tools}}"},"reason":"initial"}}
@@ -0,0 +1,2 @@
{"type":"session","id":"ffffffff-2222-4333-8444-555555555555","createdAt":13,"cwd":"/rec/plain-cwd","parentSession":"56565656-7878-4989-8a9a-9b9b9b9b9b9b"}
{"type":"request/header","seq":0,"time":12,"data":{"header":{"config":{"model":"fake"},"system":"{{system}}","tools":"{{tools}}"},"reason":"initial"}}
@@ -0,0 +1,3 @@
{"type":"session","id":"56565656-7878-4989-8a9a-9b9b9b9b9b9b","createdAt":11,"cwd":"/rec/plain-cwd"}
{"type":"request/header","seq":0,"time":11,"data":{"header":{"config":{"model":"fake"},"system":"{{system}}","tools":"{{tools}}"},"reason":"initial"}}
{"type":"assistant/chunk","seq":1,"time":11,"data":{"turn":1,"step":1,"chunk":{"type":"text-delta","index":0,"text":"hi"}}}
@@ -0,0 +1,5 @@
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":1,"agentCapabilities":{"loadSession":false}}}
{"jsonrpc":"2.0","id":2,"result":{"sessionId":"{{sessionId}}"}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"{{sessionId}}","update":{"sessionUpdate":"agent_message_chunk","content":{"type":"text","text":"thinking about it"}}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"{{sessionId}}","update":{"sessionUpdate":"agent_message_chunk","content":{"type":"text","text":"workspace:seed.txt"}}}}
{"jsonrpc":"2.0","id":3,"result":{"stopReason":"end_turn"}}
@@ -0,0 +1 @@
seeded