{
  "kind": "online-softmax-flow",
  "title": "Rescale old statistics when the maximum changes",
  "description": "Two tiles feed running maximum, denominator, and weighted numerator boxes; show correction exp(old_max−new_max) before combining. Final output 30. Caption: one-row CPU arithmetic, not GPU memory allocation or speed.",
  "data": {
    "nodes": [
      {
        "id": "tile1",
        "label": "Scores 1000+log(1),1000+log(2); values 10,20"
      },
      {
        "id": "stats",
        "label": "running m, l, z"
      },
      {
        "id": "tile2",
        "label": "Scores 1000+log(3),1000+log(4); values 30,40"
      },
      {
        "id": "rescale",
        "label": "old statistics × exp(old m−new m)"
      },
      {
        "id": "out",
        "label": "z/l = 30"
      }
    ],
    "edges": [
      [
        "tile1",
        "stats",
        "initialize"
      ],
      [
        "stats",
        "rescale",
        "rescale"
      ],
      [
        "tile2",
        "rescale",
        "new maximum and contributions"
      ],
      [
        "rescale",
        "out",
        "normalize"
      ]
    ],
    "score_entry_counts": {
      "dense_4096_square": 16777216,
      "one_row_64_key_tile": 64
    }
  },
  "evidence": "Original educational calculation; no measured paper or hardware benchmark."
}
