start-command 0.41.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,449 @@
1
+ {
2
+ "source": "captured from Formal AI 0.355.32 (08ca27d1ee0560fb56450ad798f3a79c684404ed) js agent mode by experiments/issue-258/capture-receipts.cjs",
3
+ "capturedAt": "2026-11-04",
4
+ "fixture": {
5
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
6
+ },
7
+ "receipts": [
8
+ {
9
+ "request": "In snippet.mjs, replace the before label declaration with the after label declaration, preserving all other content.",
10
+ "effects": "workspace-write",
11
+ "offered": ["bash"],
12
+ "responses": [
13
+ {
14
+ "finish_reason": "stop",
15
+ "message": {
16
+ "role": "assistant",
17
+ "content": "{\"complete\":false,\"missingCapabilities\":[\"read\",\"edit\"],\"reason\":\"EditToolUnavailable\",\"schema\":\"workspace-edit-capability-gap/v1\",\"target\":\"snippet.mjs\",\"verified\":false}"
18
+ }
19
+ }
20
+ ],
21
+ "tools": [],
22
+ "outcome": {
23
+ "status": "capability-gap",
24
+ "exitCode": 65,
25
+ "message": "Formal AI reported a capability gap for snippet.mjs (EditToolUnavailable; missing read, edit); nothing was verified as done",
26
+ "remainingObligations": [
27
+ "the requested change to snippet.mjs was not made or not verified"
28
+ ],
29
+ "gap": {
30
+ "schema": "workspace-edit-capability-gap/v1",
31
+ "target": "snippet.mjs",
32
+ "reason": "EditToolUnavailable",
33
+ "missingCapabilities": ["read", "edit"],
34
+ "complete": false,
35
+ "verified": false
36
+ }
37
+ },
38
+ "after": {
39
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
40
+ }
41
+ },
42
+ {
43
+ "request": "In snippet.mjs, replace the before label declaration with the after label declaration, preserving all other content.",
44
+ "effects": "read-only",
45
+ "offered": ["bash", "read"],
46
+ "responses": [
47
+ {
48
+ "finish_reason": "stop",
49
+ "message": {
50
+ "role": "assistant",
51
+ "content": "{\"complete\":false,\"missingCapabilities\":[\"edit\"],\"reason\":\"EditToolUnavailable\",\"schema\":\"workspace-edit-capability-gap/v1\",\"target\":\"snippet.mjs\",\"verified\":false}"
52
+ }
53
+ }
54
+ ],
55
+ "tools": [],
56
+ "outcome": {
57
+ "status": "capability-gap",
58
+ "exitCode": 65,
59
+ "message": "Formal AI reported a capability gap for snippet.mjs (EditToolUnavailable; missing edit); nothing was verified as done",
60
+ "remainingObligations": [
61
+ "the requested change to snippet.mjs was not made or not verified",
62
+ "set START_FORMAL_AI_EFFECTS=workspace-write to offer the edit and write tools"
63
+ ],
64
+ "gap": {
65
+ "schema": "workspace-edit-capability-gap/v1",
66
+ "target": "snippet.mjs",
67
+ "reason": "EditToolUnavailable",
68
+ "missingCapabilities": ["edit"],
69
+ "complete": false,
70
+ "verified": false
71
+ }
72
+ },
73
+ "after": {
74
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
75
+ }
76
+ },
77
+ {
78
+ "request": "In snippet.mjs, replace the before label declaration with the after label declaration, preserving all other content.",
79
+ "effects": "workspace-write",
80
+ "offered": ["bash", "read", "edit", "write"],
81
+ "responses": [
82
+ {
83
+ "finish_reason": "tool_calls",
84
+ "message": {
85
+ "role": "assistant",
86
+ "content": "Let me open snippet.mjs and read what it says.",
87
+ "tool_calls": [
88
+ {
89
+ "id": "call_3a9e6d58f61cf7c6",
90
+ "type": "function",
91
+ "function": {
92
+ "name": "read",
93
+ "arguments": "{\"path\":\"snippet.mjs\"}"
94
+ }
95
+ }
96
+ ]
97
+ }
98
+ },
99
+ {
100
+ "finish_reason": "tool_calls",
101
+ "message": {
102
+ "role": "assistant",
103
+ "content": "Let me update snippet.mjs for you.",
104
+ "tool_calls": [
105
+ {
106
+ "id": "call_21c111ddfe563da7",
107
+ "type": "function",
108
+ "function": {
109
+ "name": "edit",
110
+ "arguments": "{\"new_string\":\"the after label declaration, preserving all other content\",\"old_string\":\"the before label declaration\",\"path\":\"snippet.mjs\"}"
111
+ }
112
+ }
113
+ ]
114
+ }
115
+ },
116
+ {
117
+ "finish_reason": "stop",
118
+ "message": {
119
+ "role": "assistant",
120
+ "content": "The command failed: snippet.mjs: old_string was not found; nothing changed"
121
+ }
122
+ }
123
+ ],
124
+ "tools": [
125
+ {
126
+ "tool": "read",
127
+ "command": "read snippet.mjs",
128
+ "decision": "allowed",
129
+ "exitCode": 0
130
+ },
131
+ {
132
+ "tool": "edit",
133
+ "command": "edit snippet.mjs",
134
+ "decision": "allowed",
135
+ "exitCode": 1
136
+ }
137
+ ],
138
+ "outcome": {
139
+ "status": "incomplete",
140
+ "exitCode": 1,
141
+ "message": "`edit snippet.mjs` failed (snippet.mjs: old_string was not found; nothing changed) and no later call resolved it; no file changed",
142
+ "remainingObligations": [
143
+ "`edit snippet.mjs` failed: snippet.mjs: old_string was not found; nothing changed"
144
+ ],
145
+ "failures": [
146
+ {
147
+ "command": "edit snippet.mjs",
148
+ "tool": "edit",
149
+ "target": "snippet.mjs",
150
+ "exitCode": 1,
151
+ "error": "snippet.mjs: old_string was not found; nothing changed"
152
+ }
153
+ ]
154
+ },
155
+ "after": {
156
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
157
+ }
158
+ },
159
+ {
160
+ "request": "In snippet.mjs, replace «const label = \"before\";» with «const label = \"after\";». Preserve all other content.",
161
+ "effects": "workspace-write",
162
+ "offered": ["bash"],
163
+ "responses": [
164
+ {
165
+ "finish_reason": "stop",
166
+ "message": {
167
+ "role": "assistant",
168
+ "content": "{\"complete\":false,\"missingCapabilities\":[\"read\",\"edit\"],\"reason\":\"EditToolUnavailable\",\"schema\":\"workspace-edit-capability-gap/v1\",\"target\":\"snippet.mjs\",\"verified\":false}"
169
+ }
170
+ }
171
+ ],
172
+ "tools": [],
173
+ "outcome": {
174
+ "status": "capability-gap",
175
+ "exitCode": 65,
176
+ "message": "Formal AI reported a capability gap for snippet.mjs (EditToolUnavailable; missing read, edit); nothing was verified as done",
177
+ "remainingObligations": [
178
+ "the requested change to snippet.mjs was not made or not verified"
179
+ ],
180
+ "gap": {
181
+ "schema": "workspace-edit-capability-gap/v1",
182
+ "target": "snippet.mjs",
183
+ "reason": "EditToolUnavailable",
184
+ "missingCapabilities": ["read", "edit"],
185
+ "complete": false,
186
+ "verified": false
187
+ }
188
+ },
189
+ "after": {
190
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
191
+ }
192
+ },
193
+ {
194
+ "request": "In snippet.mjs, replace «const label = \"before\";» with «const label = \"after\";». Preserve all other content.",
195
+ "effects": "read-only",
196
+ "offered": ["bash", "read"],
197
+ "responses": [
198
+ {
199
+ "finish_reason": "tool_calls",
200
+ "message": {
201
+ "role": "assistant",
202
+ "content": "Let me open snippet.mjs and read what it says.",
203
+ "tool_calls": [
204
+ {
205
+ "id": "call_af1eccb805c65251",
206
+ "type": "function",
207
+ "function": {
208
+ "name": "read",
209
+ "arguments": "{\"path\":\"snippet.mjs\"}"
210
+ }
211
+ }
212
+ ]
213
+ }
214
+ },
215
+ {
216
+ "finish_reason": "stop",
217
+ "message": {
218
+ "role": "assistant",
219
+ "content": "{\"complete\":false,\"missingCapabilities\":[\"edit\"],\"reason\":\"EditToolUnavailable\",\"schema\":\"workspace-edit-capability-gap/v1\",\"target\":\"snippet.mjs\",\"verified\":false}"
220
+ }
221
+ }
222
+ ],
223
+ "tools": [
224
+ {
225
+ "tool": "read",
226
+ "command": "read snippet.mjs",
227
+ "decision": "allowed",
228
+ "exitCode": 0
229
+ }
230
+ ],
231
+ "outcome": {
232
+ "status": "capability-gap",
233
+ "exitCode": 65,
234
+ "message": "Formal AI reported a capability gap for snippet.mjs (EditToolUnavailable; missing edit); nothing was verified as done",
235
+ "remainingObligations": [
236
+ "the requested change to snippet.mjs was not made or not verified",
237
+ "set START_FORMAL_AI_EFFECTS=workspace-write to offer the edit and write tools"
238
+ ],
239
+ "gap": {
240
+ "schema": "workspace-edit-capability-gap/v1",
241
+ "target": "snippet.mjs",
242
+ "reason": "EditToolUnavailable",
243
+ "missingCapabilities": ["edit"],
244
+ "complete": false,
245
+ "verified": false
246
+ }
247
+ },
248
+ "after": {
249
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
250
+ }
251
+ },
252
+ {
253
+ "request": "In snippet.mjs, replace «const label = \"before\";» with «const label = \"after\";». Preserve all other content.",
254
+ "effects": "workspace-write",
255
+ "offered": ["bash", "read", "edit", "write"],
256
+ "responses": [
257
+ {
258
+ "finish_reason": "tool_calls",
259
+ "message": {
260
+ "role": "assistant",
261
+ "content": "Let me open snippet.mjs and read what it says.",
262
+ "tool_calls": [
263
+ {
264
+ "id": "call_af1eccb805c65251",
265
+ "type": "function",
266
+ "function": {
267
+ "name": "read",
268
+ "arguments": "{\"path\":\"snippet.mjs\"}"
269
+ }
270
+ }
271
+ ]
272
+ }
273
+ },
274
+ {
275
+ "finish_reason": "tool_calls",
276
+ "message": {
277
+ "role": "assistant",
278
+ "content": "Let me update snippet.mjs for you.",
279
+ "tool_calls": [
280
+ {
281
+ "id": "call_8867a0cbe9d10d83",
282
+ "type": "function",
283
+ "function": {
284
+ "name": "edit",
285
+ "arguments": "{\"new_string\":\"const label = \\\"after\\\";\",\"old_string\":\"const label = \\\"before\\\";\",\"path\":\"snippet.mjs\"}"
286
+ }
287
+ }
288
+ ]
289
+ }
290
+ },
291
+ {
292
+ "finish_reason": "tool_calls",
293
+ "message": {
294
+ "role": "assistant",
295
+ "content": "Let me run the requested command to get that for you.",
296
+ "tool_calls": [
297
+ {
298
+ "id": "call_410bede5ab85d847",
299
+ "type": "function",
300
+ "function": {
301
+ "name": "bash",
302
+ "arguments": "{\"command\":\"sha256sum -- snippet.mjs\"}"
303
+ }
304
+ }
305
+ ]
306
+ }
307
+ },
308
+ {
309
+ "finish_reason": "stop",
310
+ "message": {
311
+ "role": "assistant",
312
+ "content": "obligation_49c9d049437c0075\n record_type \"obligation_gap\"\n clause \"Preserve all other content.\"\n span_start \"85\"\n span_end \"112\"\n reason \"no_artifact_in_clause\""
313
+ }
314
+ }
315
+ ],
316
+ "tools": [
317
+ {
318
+ "tool": "read",
319
+ "command": "read snippet.mjs",
320
+ "decision": "allowed",
321
+ "exitCode": 0
322
+ },
323
+ {
324
+ "tool": "edit",
325
+ "command": "edit snippet.mjs",
326
+ "decision": "allowed",
327
+ "exitCode": 0
328
+ },
329
+ {
330
+ "command": "sha256sum -- snippet.mjs",
331
+ "decision": "allowed",
332
+ "exitCode": 0
333
+ }
334
+ ],
335
+ "outcome": {
336
+ "status": "incomplete",
337
+ "exitCode": 65,
338
+ "message": "Formal AI reported obligation_gap (no_artifact_in_clause) for the clause \"Preserve all other content.\"; nothing was verified as done by Formal AI; changed snippet.mjs",
339
+ "remainingObligations": [
340
+ "Formal AI did not confirm the requested change"
341
+ ],
342
+ "gapRecord": {
343
+ "schema": "obligation_gap",
344
+ "reason": "no_artifact_in_clause",
345
+ "clause": "Preserve all other content."
346
+ }
347
+ },
348
+ "after": {
349
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"after\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
350
+ }
351
+ },
352
+ {
353
+ "request": "show contents of snippet.mjs",
354
+ "effects": "read-only",
355
+ "offered": ["bash", "read"],
356
+ "responses": [
357
+ {
358
+ "finish_reason": "tool_calls",
359
+ "message": {
360
+ "role": "assistant",
361
+ "content": "Let me open snippet.mjs and read what it says.",
362
+ "tool_calls": [
363
+ {
364
+ "id": "call_83b2d12da8280765",
365
+ "type": "function",
366
+ "function": {
367
+ "name": "read",
368
+ "arguments": "{\"path\":\"snippet.mjs\"}"
369
+ }
370
+ }
371
+ ]
372
+ }
373
+ },
374
+ {
375
+ "finish_reason": "stop",
376
+ "message": {
377
+ "role": "assistant",
378
+ "content": "Contents of `snippet.mjs`:\n\n```text\n// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n```"
379
+ }
380
+ }
381
+ ],
382
+ "tools": [
383
+ {
384
+ "tool": "read",
385
+ "command": "read snippet.mjs",
386
+ "decision": "allowed",
387
+ "exitCode": 0
388
+ }
389
+ ],
390
+ "outcome": {
391
+ "status": "completed",
392
+ "exitCode": 0,
393
+ "message": "finished after 1 tool call(s); no file changed",
394
+ "remainingObligations": []
395
+ },
396
+ "after": {
397
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
398
+ }
399
+ },
400
+ {
401
+ "request": "What is 2 + 2?",
402
+ "effects": "read-only",
403
+ "offered": ["bash", "read"],
404
+ "responses": [
405
+ {
406
+ "finish_reason": "stop",
407
+ "message": {
408
+ "role": "assistant",
409
+ "content": "2 + 2 = 4"
410
+ }
411
+ }
412
+ ],
413
+ "tools": [],
414
+ "outcome": {
415
+ "status": "answered",
416
+ "exitCode": 0,
417
+ "message": "Formal AI answered without tools",
418
+ "remainingObligations": []
419
+ },
420
+ "after": {
421
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
422
+ }
423
+ },
424
+ {
425
+ "request": "What is 2 + 2?",
426
+ "effects": "read-only",
427
+ "offered": ["bash"],
428
+ "responses": [
429
+ {
430
+ "finish_reason": "stop",
431
+ "message": {
432
+ "role": "assistant",
433
+ "content": "2 + 2 = 4"
434
+ }
435
+ }
436
+ ],
437
+ "tools": [],
438
+ "outcome": {
439
+ "status": "answered",
440
+ "exitCode": 0,
441
+ "message": "Formal AI answered without tools",
442
+ "remainingObligations": []
443
+ },
444
+ "after": {
445
+ "snippet.mjs": "// Synthetic snippet for issue #258: keep this comment.\nconst label = \"before\";\n\n\texport function show(name) { \n return `${label}: ${name}`; // trailing comment\n}\n/* label = \"before\" in a comment stays */\n"
446
+ }
447
+ }
448
+ ]
449
+ }