# EXP-55: does a teacher's content get through when it demonstrates at every decision, and does upstream's surprise rule (#197) help there?

- Date: 2026-10-14 | Cadence version: PR #197 head `8d99c75` (0.83.0 + opt-in `learning_surprise`, unmerged), pinned worktree `~/_cadence_197` | Program iter: none (teaching track; the content-carrying-channel test EXP-53 and EXP-54 asked for; Noesis-lite cannot price teaching until some channel carries content)
- Script: `exp/EXP-55_every_decision_demonstrations.py` | Evidence: `exp/EXP-55-pilot.*`, `exp/EXP-55-full.json/.jsonl/.out`

## Summary
- Question: EXP-53 found that a teacher who knows the whole chain is worth no more than one labelling at random when labels come only after executed mistakes; EXP-54 found upstream's surprise rule (teach only rows whose answer differs from the label) is a near no-op there, because after a mistake the brain's answer rarely agrees with the right label. Here the teacher demonstrates at EVERY decision in a guided window: the label for the state about to be acted in goes with the call that presents that state. This is where a brain is shown answers it already gives, the case #197 targets.
- Setup: EXP-53's chamber and readings (EXP-48's weather chamber, the default memory brain `Brain.compose(10, 5, modules=(48, 24), arousal=True, memory_choice=True)`, V5's guided windows of 4 in every 12 decisions, lessons of 40, 120 and 240 attempts through `step`, then 20 alone through `live`, per-state greedy accuracy on unseen weather), same student seeds and world draws as EXP-53. Twins per student: know-4 and random-label teachers, each with the rule off (every-row) and on (`learning_surprise=True`), and untaught. Lessons taught and dropped as agreeing are counted per twin.
- RUN GATE: (1) prediction below, written before the pilot. (2) Window: a pilot of 3 students per length at exact run conditions; first reading = the agreed share under the rule (EXP-54's lesson: measure how much the filter can remove before testing it). (3) Variance: the five twins share seed and world draws; differences are paired per student. (4) Metric: content = know-4 minus random accuracy, per rule setting, paired. (5) Chain: demonstration at every guided decision -> the label's content reaches the policy (or not) -> know-4 vs random accuracy; rule on -> agreeing rows dropped -> less readout saturation (the PR's claim) -> content changes.
- Prediction (written before the pilot):
  - (P1, headline) Every-decision demonstrations carry content: with the rule off, content at 240 is >= .10 and more than 2 SEM above zero.
  - (P2, mechanism) The rule now has something to remove: at 240, the agreed share of know-4 labels is at least twice that of random labels.
  - (P3, #197's claim) The rule raises content at long lessons: (content with the rule on) minus (content with it off) at 240 is > 0, paired.
  - (P4) Know-4 demonstrations beat no teacher at every length (rule off).
- Decision rule (written before the pilot): P1 holds -> demonstrations at every decision are a content-carrying channel; Noesis-lite v2 prices teaching through this channel against the form-matched random-label null (EXP-52's design), and P3 says whether #197's rule should be on. P1 fails -> in a continuing life with episodic memory, label content does not reach the policy through `step(teacher=...)` in either schedule; the next test moves off this path (settled `fit()` lessons, or EXP-45's delayed-credit brain), and that is the result to report upstream and to the group.
- Pilot (3 students per length, `exp/EXP-55-pilot.out`), read before the full run: untaught equal to EXP-53 at every student; agreed shares know-4 .22 to .28, random .18 to .22; at 240 random demonstrations above know-4 with the rule off (1.00 vs .65) and the rule lifting know-4 (+.29); one ceiling cell (random at 240). No design change; the full run reuses the pilot rows.
- Result (24 students per length, paired twins; per-state accuracy on unseen weather after 20 attempts alone; `exp/EXP-55-full.*`):

  | lesson | know-4 off | random off | know-4 on | random on | untaught | content off (SEM) | content on (SEM) | rule gain on content (SEM) | dropped as agreeing, know-4 / random |
  |---|---|---|---|---|---|---|---|---|---|
  | 40 | .602 | .674 | .729 | .779 | .453 | -.073 (.081) | -.049 (.060) | +.023 (.101) | .274 / .202 |
  | 120 | .750 | .734 | .740 | .841 | .695 | +.016 (.059) | -.102 (.049) | -.117 (.074) | .354 / .200 |
  | 240 | .724 | .885 | .880 | .849 | .659 | -.161 (.047) | +.031 (.054) | +.193 (.070) | .388 / .203 |

  The untaught twin equals EXP-53's at all 72 students. P1 FAILED, in the opposite direction: at 240, demonstrating the right action at every guided decision leaves the student BELOW one shown random actions (-.161, 3.4 SEM). P2 FAILED narrowly (know-4's agreed share .388 is 1.9 times random's .203, under the 2x bar; it grows with lesson length). P3 HELD (the rule raises content at 240 by +.193, 2.8 SEM, by lifting the know-4 student from .724 to .880). P4 held on the means only (know-4 minus untaught +.148, +.055, +.065; 1.9, 0.8 and 1.0 SEM).
- Side check (`exp/EXP-55_side_answer_vs_behaviour.py`, `exp/EXP-55-side.out`; 4 know-4 students, rule on, 120 attempts, the 16 seen situations read from reset): the answer the rule reads (the cortex settle's argmax, `generic.py` `_choices`) differs from the brain's greedy action (which adds the episodic memory's vote) in 40 of 64 situations; the cortex is right in .34, the behaviour in .97. With `memory_choice=True`, the rule judges agreement against an answer the brain does not act on, which is why it drops so few right labels.
- Verdict: BOUNDARY, 2 of 4 (P3, and P4 only on the means). Every-decision demonstrations do not carry content either; at long lessons they hurt, which is the readout saturation #197 names, and #197's rule removes that harm without making content positive. Decision rule: P1 failed, so through `step(teacher=...)` in a continuing life with episodic memory, label content does not reach the policy in either schedule; the next content test moves off this path.

## Reflection
- What it means: two outside readings for #197 and one answer for Noesis-lite. For #197: (1) its stated mechanism shows up here: repeated lessons on answers the brain already gives make a right-answer teacher worse than a random one at 240 attempts, and the rule removes that (+.19); (2) with `memory_choice=True` the rule reads the cortex's answer, which is right a third of the time while the brain's behaviour, carried by the memory's vote, is right almost always, so the rule keeps teaching rows the brain already handles and gates the memory's demonstration records on the cortex's view. For Noesis-lite: in three schedules now (after mistakes, every decision, every decision with the rule), what a teacher says does not reach the student as content in this brain; the market still has nothing to price through this channel.
- Process: pre-registered, pilot read first, no design change, untaught twin bit-identical to EXP-53 as a free gate; side check written and run during the full run, declared. Limits: one chamber, the default memory brain, an unmerged PR head, 24 students per length; the side check reads from reset, not warm from the stream as the rule does in training (the gap, .34 vs .97, is too wide for that to close, but it is not measured warm).
- Lesson: "the learner's own answer" has to be the answer the learner acts on; when a second system (here the episodic vote) shapes behaviour, a filter keyed on the first system's answer is filtering on the wrong thing.
- Next: settled `fit()`-style lessons, or EXP-45's delayed-credit brain, as the next content channel; the #197 comment draft gets both readings (Will-gated).
