03 Attribution
Crediting the lessons that actually bore on the work.
The question that drives everything downstream: which served lessons actually bore on the work?
Serving is a retrieval decision; using is an outcome. Conflating them breaks two things at once — an irrelevant lesson that happened to be injected accrues a record of usefulness it never earned, and the selector is never told that what it chose went unread.
Two sources, best first:
- The in-session reflector. The fork holds the real conversation,
so it can see a principle being applied and not merely a command being
run. It reports with
rose used --session <id> --used <ids> --unused <ids>. - The digest judge.
assessis shown the served lessons and the session digest. Weaker: influence on reasoning is nearly invisible in a digest of commands, so it under-credits principles. The digest now includes the agent's own reasoning for exactly this reason.
Either way the prompt is strict and defaults to false: being on-topic is not being used; being read and found irrelevant is not being used; having been served a lesson and then done the opposite means it was not used.
A lesson served but unused is scored neither success nor failure. It has three possible causes and only the first is a retrieval problem:
| Cause | Meaning |
|---|---|
| irrelevant | recall over-served |
| redundant | the agent knew it anyway |
| relevant and ignored | the lesson isn't landing — a salience failure |
rose status reports precision (used ÷ served).
And whether the reflector is catching anything at all#
A reflector capturing a lesson is the system working. The live session
capturing one means the evidence was sitting there and the reflector walked
past it, so a person had to notice. ROSE_CHILD is set in every
spawned reflector, so this is observed rather than inferred: captures record
by=reflector or by=session, and
rose status reports the miss rate.