Guide
Every decision writes a receipt. Nothing is silent, and nothing needs a debugger.
lw watch
CHARACTER RUNG DOING INTENT STATE
hulda intent report → guard theft(player) 4 steps step 1/4
adrianne routine go_station — routine
guard idle watch — calm
RUNG is the ladder: threat, scene, order, intent, routine, idle. Whatever is higher owns the body this tick. --char hulda follows one character; --json gives rows to a tool.
lw why hulda
hulda · 14:02:11 · served by: the plan
believed armed_close 0 · in_my_place 1 · dist_n 0.3
open report → guard · "the newcomer took a purse of 40 septims right off me"
chose report (the plan)
confidence 0.91 — above gate 0.85
plan step 1/4 · report → refuse-service → confront → watch-them
because woke on theft → intention in 41 ms
ranker chose report → … because: first offense
What she believed, what the head proposed, what served, which step of which plan, and the ranker's reason. --tick <t> picks an earlier decision.
✗ a fault: a config or reachability error, fix it. · a refusal: the system working (a rule blocked a step, confidence under the gate). ⚠ starvation: a character who wanted something and never got to do it. That last one is LW4001, and lw watch prints it loudly because it is the failure that looks like nothing.
GET http://localhost:8767/v1/receipts streams every receipt and flywheel record as server-sent events. Wire it to a debug overlay and watch a mind while you play. Fields are in Receipts.
| the brain says | it means | you do |
|---|---|---|
CANNOT execute here: sit at load | your adapter has no body for that verb | bind the engine action |
| ✗ LW2011 plan step unreachable | no verb in her can reaches the movement | add the verb, or request one |
lw escalations growing in a lane | the brain was unsure, repeatedly | lw train <lane> --propose |
Next: Give orders.