Expand description
#2198: the per-handler effect summary — what each of an agent’s handlers
writes, reads and calls, path by path (agent-state-views track, slice 4;
summary in design/archive/retired-tracks.md, §3.1).
The state model (agent_state) answers “which state does each handler
move the agent to?” for a field of an enum or sum type. Most agents have no
such field — maps, counters, logs — and for them the useful question is
“what does each handler touch, under which conditions?”. For every handler
this returns rows, one per merged path:
- its guards, as source text (
found is Some); - the store fields it writes, and how (
:=,put,append, …); - the fields it only reads (a read of a field after the path writes it is not listed separately);
- the agents it calls (
Counter.bump), classified as the sequence diagram classifies them; - its outcomes.
The walk follows the state model’s conventions (#2198 DECISION A): the same
statement-level scope (ADR 0259), the same store-write recogniser, joins
that merge paths producing the same row (here: the same writes, reads and
calls, with guards combined and outcomes collected), and the same
PATH_BUDGET backstop — a handler past it is one truncated row. It is a
separate, smaller walker: it tracks no state field, so none of the state
model’s narrowing applies.
Structs§
- Effect
Row - One merged path through a handler.
- Effect
Write - Handler
Effects - One handler’s effects.
Functions§
- agent_
effects - The effects of every handler of
agent.agentsnames the agents a handler can call (the context’s own, asContextSequenceInfo::agentslists them).