{
  "version": 1,
  "language": "en",
  "title": "Chunk finalization before emission",
  "description": "Offline diffusion changes a window. Streaming finalizes and emits a chunk, keeps selected state and starts the next chunk.",
  "caption": "Figure 3. Streaming emits finalized chunks and keeps selected state for subsequent chunks. Offline diffusion can change the full window. The moving frontier is conceptual, not one implementation schedule for all implementations. The author made this diagram to show the relations.",
  "alt": "Emission flow: offline diffusion changes a window. Streaming finalizes and emits a chunk, keeps selected state and starts the next chunk.",
  "sources": [
    {
      "path": "content/blog/2026-06-23_streaming-autoregressive-video-generation/post.md",
      "description": "Article explanation and retained source citations"
    }
  ],
  "limitations": [
    "The playback is an example. Playback time is not measured runtime.",
    "This diagram shows a conceptual chunk boundary. It does not give a diffusion scheduling algorithm for all implementations. Emitted chunks cannot change."
  ],
  "targets": {
    "offline": {
      "id": "mechanism-offline",
      "kind": "node",
      "label": "Fixed window"
    },
    "time0": {
      "id": "mechanism-time0",
      "kind": "node",
      "label": "t − 3"
    },
    "time1": {
      "id": "mechanism-time1",
      "kind": "node",
      "label": "t − 2"
    },
    "time2": {
      "id": "mechanism-time2",
      "kind": "node",
      "label": "t − 1"
    },
    "time3": {
      "id": "mechanism-time3",
      "kind": "node",
      "label": "t"
    },
    "time4": {
      "id": "mechanism-time4",
      "kind": "node",
      "label": "t + 1"
    },
    "time5": {
      "id": "mechanism-time5",
      "kind": "node",
      "label": "t + 2"
    },
    "emit": {
      "id": "mechanism-emit",
      "kind": "node",
      "label": "Finalize and emit"
    },
    "state": {
      "id": "mechanism-state",
      "kind": "node",
      "label": "Keep state"
    },
    "next": {
      "id": "mechanism-next",
      "kind": "node",
      "label": "Next chunk"
    },
    "toEmit": {
      "id": "mechanism-toEmit",
      "kind": "edge",
      "label": "toEmit"
    },
    "retain": {
      "id": "mechanism-retain",
      "kind": "edge",
      "label": "retain"
    },
    "advance": {
      "id": "mechanism-advance",
      "kind": "edge",
      "label": "advance"
    }
  },
  "stateLabels": {
    "history": "Finalized history",
    "frontier": "Current frontier",
    "emitted": "New emitted chunk",
    "memory": "Kept state"
  },
  "scenarios": [
    {
      "id": "streaming",
      "title": "Finalize one chunk. Start the next.",
      "description": "The generator finalizes one chunk and then starts the next chunk.",
      "initial": {
        "history": "Chunks before t are final.",
        "frontier": "t can change.",
        "emitted": "No chunk emitted in this trace",
        "memory": "State selected before this chunk"
      },
      "unselected": [
        "offline"
      ],
      "steps": [
        {
          "title": "Read the fixed history",
          "description": "Read the fixed history.",
          "duration": 3000,
          "active": [
            "time0",
            "time1",
            "time2"
          ],
          "paths": [],
          "state": {
            "history": "t−3, t−2, t−1 cannot change.",
            "frontier": "t can change.",
            "emitted": "No chunk emitted in this trace",
            "memory": "State selected before this chunk"
          }
        },
        {
          "title": "Complete the current chunk",
          "description": "Complete the current chunk.",
          "duration": 3000,
          "active": [
            "time3"
          ],
          "paths": [],
          "state": {
            "history": "t−3, t−2, t−1 cannot change.",
            "frontier": "t finalized",
            "emitted": "No chunk emitted in this trace",
            "memory": "State selected before this chunk"
          }
        },
        {
          "title": "Finalize and emit",
          "description": "Finalize the chunk. Emit the chunk.",
          "duration": 3000,
          "active": [
            "emit"
          ],
          "paths": [
            "toEmit"
          ],
          "state": {
            "history": "Emitted history before t does not change.",
            "frontier": "t finalized",
            "emitted": "t",
            "memory": "State selected before this chunk"
          }
        },
        {
          "title": "Keep the selected state",
          "description": "Keep the selected state.",
          "duration": 3000,
          "active": [
            "state"
          ],
          "paths": [
            "retain"
          ],
          "state": {
            "history": "Emitted history before t does not change.",
            "frontier": "t finalized",
            "emitted": "t",
            "memory": "Selected state from finalized history"
          }
        },
        {
          "title": "Start the next chunk",
          "description": "Start the next chunk.",
          "duration": 3000,
          "active": [
            "next",
            "time4"
          ],
          "paths": [
            "advance"
          ],
          "state": {
            "history": "Emitted history before t does not change.",
            "frontier": "t+1 starts.",
            "emitted": "t",
            "memory": "Selected state from finalized history"
          }
        }
      ]
    }
  ]
}
