Replay a small response state machine with scalar request and response values.

response state Model a response as scalar state before handing it to a real service boundary.

Response State Panel

route
response_state_panel.lua
Replay: real traced execution (multi-file project)
local route = "status"
local status = ""
local message = ""

if route == "refresh" then
  status = "ok"
  message = "cache refreshed"
elseif route == "archive" then
  status = "queued"
  message = "archive queued"
else
  status = "ok"
  message = "service ready"
end

local payload = status .. ":" .. message

print("route=" .. route)
print("status=" .. status)
print("payload=" .. payload)
local route = "refresh"
local status = ""
local message = ""

if route == "refresh" then
  status = "ok"
  message = "cache refreshed"
elseif route == "archive" then
  status = "queued"
  message = "archive queued"
else
  status = "ok"
  message = "service ready"
end

local payload = status .. ":" .. message

print("route=" .. route)
print("status=" .. status)
print("payload=" .. payload)
local route = "archive"
local status = ""
local message = ""

if route == "refresh" then
  status = "ok"
  message = "cache refreshed"
elseif route == "archive" then
  status = "queued"
  message = "archive queued"
else
  status = "ok"
  message = "service ready"
end

local payload = status .. ":" .. message

print("route=" .. route)
print("status=" .. status)
print("payload=" .. payload)
  1. route ← status, status ← (empty), message ← (empty)

    1local route→ status = "status" --@route="refresh", "archive"2local status→ (empty) = ""3local message→ (empty) = ""
  2. status ← ok, message ← service ready

    10  message = "archive queued"11else12  status→ ok = "ok"13  message→ service ready = "service ready"14end
  3. payload ← ok:service ready

    16local payload→ ok:service ready = statusok .. ":" .. messageservice ready1718print("route=" .. routestatus)19print("status=" .. statusok)20print("payload=" .. payloadok:service ready)
    outputroute=status
    status=ok
    payload=ok:service ready
  1. route ← refresh, status ← (empty), message ← (empty)

    1local route→ refresh = "refresh"2local status→ (empty) = ""3local message→ (empty) = ""
  2. status ← ok, message ← cache refreshed

    5if routerefresh == "refresh" then6  status→ ok = "ok"7  message→ cache refreshed = "cache refreshed"8elseif route == "archive" then
  3. payload ← ok:cache refreshed

    16local payload→ ok:cache refreshed = statusok .. ":" .. messagecache refreshed1718print("route=" .. routerefresh)19print("status=" .. statusok)20print("payload=" .. payloadok:cache refreshed)
    outputroute=refresh
    status=ok
    payload=ok:cache refreshed
  1. route ← archive, status ← (empty), message ← (empty)

    1local route→ archive = "archive"2local status→ (empty) = ""3local message→ (empty) = ""
  2. status ← queued, message ← archive queued

    7  message = "cache refreshed"8elseif routearchive == "archive" then9  status→ queued = "queued"10  message→ archive queued = "archive queued"11else
  3. payload ← queued:archive queued

    16local payload→ queued:archive queued = statusqueued .. ":" .. messagearchive queued1718print("route=" .. routearchive)19print("status=" .. statusqueued)20print("payload=" .. payloadqueued:archive queued)
    outputroute=archive
    status=queued
    payload=queued:archive queued