windlass replay — windlass-echo-demo (demo)

graph
windlass-echo-demo (v1)
run id
demo
status
done
halt reason
none
started at
2026-09-05T11:31:14.256Z
last event recorded at
2026-09-05T11:31:22.649Z
active wall time
1.06 s (1056 ms) (recorded; excludes time paused at a human gate)
total cost
$0
current node
finish
nodes / edges declared
4 / 3
events recorded
34

caps declared in graph: attended=true, max_wall_minutes=5, max_attempts_per_node=2, max_usd_total=1

Nodes (final status)

idkindfinal statusattemptslast exitdurationcost
seedscriptdone20 (pass)142 ms$0
bumpscriptdone20 (pass)135 ms$0
gate1gatedone10 (pass)0 ms$0
finishscriptdone10 (pass)90 ms$0

Edges (verify commands)

fromtoverify commandrecorded attempts
seedbump
node -e "process.exit(require('fs').existsSync('state.json')?0:1)"
#1: exit 0 (pass), 87 ms
#2: exit 0 (pass), 91 ms
bumpgate1
node -e "process.exit(JSON.parse(require('fs').readFileSync('state.json','utf8')).count>=2?0:1)"
#1: exit 1 (fail), 88 ms
#2: exit 0 (pass), 133 ms
gate1finish
node -e "process.exit(JSON.parse(require('fs').readFileSync('gate1-answer.json','utf8')).ok===true?0:1)"
#1: exit 0 (pass), 90 ms

Timeline

seed script attempt 1 0 (pass)2026-09-05T11:31:14.259Z
command
node -e "const fs=require('fs');if(!fs.existsSync('state.json'))fs.writeFileSync('state.json',JSON.stringify({count:0}))"
exit code
0 (pass)
duration
95 ms
cost
$0
artifacts produced (hash only, no body)
pathsha256
state.jsonsha256:618de7d9f46f3f697d827a1b6d84974760d5deda62e4e592adaa3c646602a94c
outgoing edge verify
edgeexitduration
seed->bump0 (pass)87 ms
bump script attempt 1 0 (pass)2026-09-05T11:31:14.443Z
command
node -e "const fs=require('fs');const s=JSON.parse(fs.readFileSync('state.json','utf8'));s.count++;fs.writeFileSync('state.json',JSON.stringify(s))"
exit code
0 (pass)
duration
93 ms
cost
$0
artifacts produced (hash only, no body)
pathsha256
state.jsonsha256:6aea6dfe6561984cdc5c54ead84d47d2cf29e48253ae282aef237404adad4661
outgoing edge verify
edgeexitduration
bump->gate11 (fail)88 ms
seed script attempt 2 0 (pass)2026-09-05T11:31:14.625Z
command
node -e "const fs=require('fs');if(!fs.existsSync('state.json'))fs.writeFileSync('state.json',JSON.stringify({count:0}))"
exit code
0 (pass)
duration
142 ms
cost
$0
artifacts produced (hash only, no body)
pathsha256
state.jsonsha256:6aea6dfe6561984cdc5c54ead84d47d2cf29e48253ae282aef237404adad4661
outgoing edge verify
edgeexitduration
seed->bump0 (pass)91 ms
bump script attempt 2 0 (pass)2026-09-05T11:31:14.860Z
command
node -e "const fs=require('fs');const s=JSON.parse(fs.readFileSync('state.json','utf8'));s.count++;fs.writeFileSync('state.json',JSON.stringify(s))"
exit code
0 (pass)
duration
135 ms
cost
$0
artifacts produced (hash only, no body)
pathsha256
state.jsonsha256:57413ce83ee1d989e384dfd3a82c6e2d9052a23c4204706bd2d7df11aa4c2d7c
outgoing edge verify
edgeexitduration
bump->gate10 (pass)133 ms
gate1 gate attempt 1 paused — waiting on human2026-09-05T11:31:15.130Z
gate question

state.json has count>=2 — confirm to proceed to finish?

answer written to
gate1-answer.json
reads (declared in graph, not read by the viewer)
state.json
answer_schema (declared in graph)
{
  "type": "object",
  "required": [
    "ok"
  ],
  "properties": {
    "ok": {
      "type": "boolean"
    }
  }
}
2026-09-05T11:31:15.132Z — graph paused, halt reason: gate
2026-09-05T11:31:22.127Z — a human answered gate gate1: {"ok":true}
2026-09-05T11:31:22.464Z — resumed at gate gate1
gate1 gate attempt 2 0 (pass)2026-09-05T11:31:22.466Z
gate answered

at 2026-09-05T11:31:22.467Z, written to gate1-answer.json

the answer the human gave
{
  "ok": true
}
exit code
0 (pass)
duration
0 ms
cost
$0
outgoing edge verify
edgeexitduration
gate1->finish0 (pass)90 ms
finish script attempt 1 0 (pass)2026-09-05T11:31:22.559Z
command
node -e "require('fs').writeFileSync('DONE.txt','ARTIFACT'+'-BODY-MARKER-7f3a9c')"
exit code
0 (pass)
duration
90 ms
cost
$0
artifacts produced (hash only, no body)
pathsha256
DONE.txtsha256:20210bf8db992578306c8fb7ec35d34e29c14aae315512141a108366ac4ab0f5
2026-09-05T11:31:22.649Z — graph done, halt reason: none