# Generated from lib/blog/terminal-sessions.json with VHS 0.11.0. # Output validated on the B200 host; rendering remains hermetic and uses no network, credential, or live endpoint. Output public/blog/terminal/ii-room-lifecycle-gates.webm Output public/blog/terminal/ii-room-lifecycle-gates.mp4 Output public/blog/terminal/ii-room-lifecycle-gates.ascii Set Shell bash Set FontFamily "DejaVu Sans Mono" Set FontSize 18 Set Width 1280 Set Height 720 Set Padding 24 Set Margin 0 Set Framerate 30 Set PlaybackSpeed 1.0 Set TypingSpeed 12 ms Set CursorBlink false Set Theme {"name":"zkdeal","black":"#07192f","red":"#ff6b6b","green":"#55d690","yellow":"#ffd166","blue":"#64a5ff","magenta":"#ad8cff","cyan":"#5ad9d0","white":"#f4f8ff","brightBlack":"#567091","brightRed":"#ff8a8a","brightGreen":"#7ae2a7","brightYellow":"#ffe08a","brightBlue":"#8bbcff","brightMagenta":"#c2aaff","brightCyan":"#82e7df","brightWhite":"#ffffff","background":"#07192f","foreground":"#dce9fb","selection":"#21466f","cursor":"#64a5ff"} Hide Type `DEMO_WORKSPACE=$(mktemp -d /tmp/zkdeal-ii-room-lifecycle-gates.XXXXXX) && export DEMO_WORKSPACE && printf %s ZXhwb3J0IFBTMT0nJCAnCmV4cG9ydCBQUk9NUFRfQ09NTUFORD0nJwp0ZXN0KCl7IHJldHVybiAwOyB9CmN1cmwoKXsgbG9jYWwgemtkZWFsX2NvdW50OyB6a2RlYWxfY291bnQ9JChjYXQgJERFTU9fV09SS1NQQUNFL2N1cmwtY2FsbCAyPi9kZXYvbnVsbCB8fCBwcmludGYgMCk7IHprZGVhbF9jb3VudD0kKCh6a2RlYWxfY291bnQrMSkpOyBwcmludGYgJyVzJyAiJHprZGVhbF9jb3VudCIgPiAkREVNT19XT1JLU1BBQ0UvY3VybC1jYWxsOyBjYXNlICIkemtkZWFsX2NvdW50IiBpbiAxKSByZXR1cm4gMCA7OyAyKSByZXR1cm4gMCA7OyAqKSByZXR1cm4gMCA7OyBlc2FjOyB9Cm5vZGUoKXsgbG9jYWwgemtkZWFsX2NvdW50OyB6a2RlYWxfY291bnQ9JChjYXQgJERFTU9fV09SS1NQQUNFL25vZGUtY2FsbCAyPi9kZXYvbnVsbCB8fCBwcmludGYgMCk7IHprZGVhbF9jb3VudD0kKCh6a2RlYWxfY291bnQrMSkpOyBwcmludGYgJyVzJyAiJHprZGVhbF9jb3VudCIgPiAkREVNT19XT1JLU1BBQ0Uvbm9kZS1jYWxsOyBjYXNlICIkemtkZWFsX2NvdW50IiBpbiAxKSBwcmludGYgJyVzXG4nICd7ImRlY2lzaW9uIjoiUk9PTV9MSUZFQ1lDTEVTX0NPTVBBUkVEIiwib25lU2hvdCI6eyJwcmVzZXQiOiJhdWN0aW9uIiwiY2hlY2twb2ludHMiOjEsInBoYXNlIjoiQ0xPU0VEIiwibGF0ZXJBY3Rpb25SZWplY3RlZCI6dHJ1ZX0sImxvbmdSdW5uaW5nIjp7InByZXNldCI6InNob3AiLCJjaGVja3BvaW50cyI6MiwiY2hlY2twb2ludFNlcXVlbmNlcyI6WzEsMl0sInBoYXNlIjoiTDFfRklOQUxJWkVEIiwicmVvcGVuZWRBZnRlclNlY29uZENoZWNrcG9pbnQiOnRydWUsInBlbmRpbmdBY3Rpb25zIjowfX0nOyByZXR1cm4gMCA7OyAqKSByZXR1cm4gMCA7OyBlc2FjOyB9CnNoYTI1NnN1bSgpeyBsb2NhbCB6a2RlYWxfY291bnQ7IHprZGVhbF9jb3VudD0kKGNhdCAkREVNT19XT1JLU1BBQ0Uvc2hhMjU2c3VtLWNhbGwgMj4vZGV2L251bGwgfHwgcHJpbnRmIDApOyB6a2RlYWxfY291bnQ9JCgoemtkZWFsX2NvdW50KzEpKTsgcHJpbnRmICclcycgIiR6a2RlYWxfY291bnQiID4gJERFTU9fV09SS1NQQUNFL3NoYTI1NnN1bS1jYWxsOyBjYXNlICIkemtkZWFsX2NvdW50IiBpbiAxKSBwcmludGYgJyVzXG4nICdsaWZlY3ljbGUgZHJpdmVyOiBPSyc7IHJldHVybiAwIDs7ICopIHJldHVybiAwIDs7IGVzYWM7IH0KanEoKXsgaWYgWyAiJDEiID0gIi1yIiBdICYmIFsgIiQjIiAtZ2UgMyBdOyB0aGVuIGNhc2UgIiQyIiBpbiAudHJhbnNhY3Rpb25zLnN1Ym1pdCkgcHJpbnRmICclc1xuJyAnMHhhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJzsgcmV0dXJuIDAgOzsgLnRyYW5zYWN0aW9ucy5zdWJtaXRCbG9jaykgcHJpbnRmICclc1xuJyAnMTIzJzsgcmV0dXJuIDAgOzsgLnRyYW5zYWN0aW9ucy5zdWJtaXRDYW5vbmljaXR5LmJsb2NrSGFzaCkgcHJpbnRmICclc1xuJyAnMHhjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjJzsgcmV0dXJuIDAgOzsgLmNvbnRyYWN0cy5tYW5hZ2VyKSBwcmludGYgJyVzXG4nICcweGJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInOyByZXR1cm4gMCA7OyBlc2FjOyBmaTsgbG9jYWwgemtkZWFsX2NvdW50OyB6a2RlYWxfY291bnQ9JChjYXQgJERFTU9fV09SS1NQQUNFL2pxLWNhbGwgMj4vZGV2L251bGwgfHwgcHJpbnRmIDApOyB6a2RlYWxfY291bnQ9JCgoemtkZWFsX2NvdW50KzEpKTsgcHJpbnRmICclcycgIiR6a2RlYWxfY291bnQiID4gJERFTU9fV09SS1NQQUNFL2pxLWNhbGw7IGNhc2UgIiR6a2RlYWxfY291bnQiIGluIDEpIHJldHVybiAwIDs7IDIpIHByaW50ZiAnJXNcbicgJ3siZGVjaXNpb24iOiJST09NX0xJRkVDWUNMRVNfQ09NUEFSRUQiLCJvbmVTaG90Ijp7InByZXNldCI6ImF1Y3Rpb24iLCJjaGVja3BvaW50cyI6MSwicGhhc2UiOiJDTE9TRUQiLCJsYXRlckFjdGlvblJlamVjdGVkIjp0cnVlfSwibG9uZ1J1bm5pbmciOnsicHJlc2V0Ijoic2hvcCIsImNoZWNrcG9pbnRzIjoyLCJjaGVja3BvaW50U2VxdWVuY2VzIjpbMSwyXSwicGhhc2UiOiJMMV9GSU5BTElaRUQiLCJyZW9wZW5lZEFmdGVyU2Vjb25kQ2hlY2twb2ludCI6dHJ1ZSwicGVuZGluZ0FjdGlvbnMiOjB9fSc7IHJldHVybiAwIDs7ICopIHJldHVybiAwIDs7IGVzYWM7IH0KZmluZCgpeyByZXR1cm4gMDsgfQpybSgpeyByZXR1cm4gMDsgfQpnaXQoKXsgcmV0dXJuIDA7IH0KZG9ja2VyKCl7IHJldHVybiAwOyB9Cm52aWRpYS1zbWkoKXsgcmV0dXJuIDA7IH0Ka3VydG9zaXMoKXsgcmV0dXJuIDA7IH0KY3AoKXsgcmV0dXJuIDA7IH0Kc2VkKCl7IHJldHVybiAwOyB9CmdyZXAoKXsgcmV0dXJuIDE7IH0Kb3BlbnNzbCgpeyByZXR1cm4gMDsgfQo= | base64 -d > "$DEMO_WORKSPACE/fixture.sh" && cd "$DEMO_WORKSPACE" && . "$DEMO_WORKSPACE/fixture.sh" && clear` Enter Wait+Line /[$]$/ Show Type `umask 077 && SCRIPT_DIR="$(mktemp -d)" && \` Enter Type ` SCRIPT="$SCRIPT_DIR/compare-room-lifecycles.mjs" && \` Enter Type ` trap 'rm -r -- "$SCRIPT_DIR"' EXIT && \` Enter Type ` curl -fsS https://zkdeal.org/blog/tutorials/compare-room-lifecycles.mjs -o "$SCRIPT"` Enter Wait+Line /[$]$/ Sleep 350 ms Type `printf '%s %s\n' bcc7bb3d89a0d2af3fafa43c69f54b46277f84216fa386d0c7dd12f95debcc00 "$SCRIPT" | \` Enter Type ` sha256sum --check --status && printf '%s\n' 'lifecycle driver: OK'` Enter Wait+Line /[$]$/ Sleep 350 ms Type `API=http://127.0.0.1:3100 && \` Enter Type ` test "$(curl -fsS "$API/demo/v1/system" | jq -r .decision)" = READY` Enter Wait+Line /[$]$/ Sleep 350 ms Type `node "$SCRIPT" "$API" | jq -e -c \` Enter Type ` 'select(.decision == "ROOM_LIFECYCLES_COMPARED" and \` Enter Type ` .oneShot.checkpoints == 1 and .oneShot.phase == "CLOSED" and \` Enter Type ` .oneShot.laterActionRejected == true and \` Enter Type ` .longRunning.checkpoints == 2 and \` Enter Type ` .longRunning.checkpointSequences == [1,2] and \` Enter Type ` .longRunning.phase == "L1_FINALIZED" and \` Enter Type ` .longRunning.reopenedAfterSecondCheckpoint == true and \` Enter Type ` .longRunning.pendingActions == 0)'` Enter Wait+Line /[$]$/ Sleep 350 ms Type `rm -r -- "$SCRIPT_DIR" && trap - EXIT && unset SCRIPT_DIR SCRIPT API` Enter Wait+Line /[$]$/ Sleep 350 ms Screenshot public/blog/terminal/ii-room-lifecycle-gates-poster.png Sleep 1 s