Skip to main content

Module agent_effects

Module agent_effects 

Source
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§

EffectRow
One merged path through a handler.
EffectWrite
HandlerEffects
One handler’s effects.

Functions§

agent_effects
The effects of every handler of agent. agents names the agents a handler can call (the context’s own, as ContextSequenceInfo::agents lists them).