A learning module that counts what it is shown, so the runtime can be exercised before evidence matching is ported.
It keeps the same shape an EvidenceGraphLM will: percepts in a buffer, a
vote out, votes in, a top-down output and a goal. When the real module lands,
the coordinator does not change — only this stand-in goes away.
Summary
Types
@type state() :: %{ id: atom() | String.t(), percepts: [Monty.Cmp.Message.t()], votes_received: [term()], output: Monty.Cmp.Message.t() | nil }