Run a command in reaction — its effect is classified AT CONSTRUCTION
(audit/diff-able). Trailing arguments record facts.
⚠️ run() is for invoking a real TOOL. Using it to write a stamp
(run("date +%s > .claude/.stamp")) was the only way to remember anything
before record() existed; it is now the wrong tool — it spends a subprocess
and a shell on a variable assignment, and it classifies as side-effecting.
Run a command in reaction — its effect is classified AT CONSTRUCTION (audit/diff-able). Trailing arguments record facts.
⚠️
run()is for invoking a real TOOL. Using it to write a stamp (run("date +%s > .claude/.stamp")) was the only way to remember anything beforerecord()existed; it is now the wrong tool — it spends a subprocess and a shell on a variable assignment, and it classifies as side-effecting.