activity-report
activity-report
One project, one window, one declared audience, one event. The pipeline collects
what observably happened (Candystore sessions, git, the ticket board, Hindsight),
an agent writes one plain-text update in the portal grammar, the lint refuses
anything that must not reach that audience, and the result is rendered, emitted as
bloodbank.project.activity.recorded, verified in Candystore, and (when the
project has one) written to the client portal.
Prerequisite: declare the audience
Every command that touches text takes --audience internal|external and none
defaults it. The audience decides who may read the result, what the lint refuses,
whether the portal row is client-visible, and whether the event carries sources
and tickets. If the request does not say who reads it, ask before writing a word.