windlass replay — windlass-echo-demo (demo)
caps declared in graph: attended=true, max_wall_minutes=5, max_attempts_per_node=2, max_usd_total=1
Nodes (final status)
| id | kind | final status | attempts | last exit | duration | cost |
|---|---|---|---|---|---|---|
seed | script | done | 2 | 0 (pass) | 142 ms | $0 |
bump | script | done | 2 | 0 (pass) | 135 ms | $0 |
gate1 | gate | done | 1 | 0 (pass) | 0 ms | $0 |
finish | script | done | 1 | 0 (pass) | 90 ms | $0 |
Edges (verify commands)
| from | to | verify command | recorded attempts |
|---|---|---|---|
seed | bump | | #1: exit 0 (pass), 87 ms #2: exit 0 (pass), 91 ms |
bump | gate1 | | #1: exit 1 (fail), 88 ms #2: exit 0 (pass), 133 ms |
gate1 | finish | | #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 mscost
$0artifacts produced (hash only, no body)
| path | sha256 |
|---|---|
state.json | sha256:618de7d9f46f3f697d827a1b6d84974760d5deda62e4e592adaa3c646602a94c |
outgoing edge verify
| edge | exit | duration |
|---|---|---|
seed->bump | 0 (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 mscost
$0artifacts produced (hash only, no body)
| path | sha256 |
|---|---|
state.json | sha256:6aea6dfe6561984cdc5c54ead84d47d2cf29e48253ae282aef237404adad4661 |
outgoing edge verify
| edge | exit | duration |
|---|---|---|
bump->gate1 | 1 (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 mscost
$0artifacts produced (hash only, no body)
| path | sha256 |
|---|---|
state.json | sha256:6aea6dfe6561984cdc5c54ead84d47d2cf29e48253ae282aef237404adad4661 |
outgoing edge verify
| edge | exit | duration |
|---|---|---|
seed->bump | 0 (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 mscost
$0artifacts produced (hash only, no body)
| path | sha256 |
|---|---|
state.json | sha256:57413ce83ee1d989e384dfd3a82c6e2d9052a23c4204706bd2d7df11aa4c2d7c |
outgoing edge verify
| edge | exit | duration |
|---|---|---|
bump->gate1 | 0 (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.jsonreads (declared in graph, not read by the viewer)
state.jsonanswer_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
gate1gate1 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 mscost
$0outgoing edge verify
| edge | exit | duration |
|---|---|---|
gate1->finish | 0 (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 mscost
$0artifacts produced (hash only, no body)
| path | sha256 |
|---|---|
DONE.txt | sha256:20210bf8db992578306c8fb7ec35d34e29c14aae315512141a108366ac4ab0f5 |
2026-09-05T11:31:22.649Z — graph done, halt reason: none