{
  "version": 1,
  "language": "en",
  "title": "Two reports before one patch",
  "description": "Two read-only sessions inspect a stable snapshot in parallel. One writer waits for both reports to be checked, writes the patch and regression, then checks the final workspace.",
  "caption": "Figure 1. Two read-only research sessions may inspect a snapshot in parallel. One writer waits for both checked reports, writes the patch and regression, then tests the final workspace. Missing research blocks writing. Author-created example. Illustrative playback; animation time is not measured runtime.",
  "alt": "Flow diagram: two read-only subagents inspect snapshot r0; one writer waits for both reports before editing and testing.",
  "stateLabels": {
    "source": "Source",
    "key": "Cache-key research",
    "tests": "Test research",
    "join": "Both reports",
    "workspace": "Patch",
    "verification": "Final tests"
  },
  "targets": {
    "snapshot": {
      "id": "hwo-snapshot",
      "kind": "node",
      "label": "Snapshot r0"
    },
    "key": {
      "id": "hwo-key",
      "kind": "node",
      "label": "Trace key"
    },
    "tests": {
      "id": "hwo-tests",
      "kind": "node",
      "label": "Inspect tests"
    },
    "join": {
      "id": "hwo-join",
      "kind": "node",
      "label": "Join reports"
    },
    "write": {
      "id": "hwo-write",
      "kind": "node",
      "label": "Write patch"
    },
    "verify": {
      "id": "hwo-verify",
      "kind": "node",
      "label": "Verify r1"
    },
    "toKey": {
      "id": "hwo-to-key",
      "kind": "edge",
      "label": "Start key research"
    },
    "toTests": {
      "id": "hwo-to-tests",
      "kind": "edge",
      "label": "Start test research"
    },
    "keyReturn": {
      "id": "hwo-key-return",
      "kind": "edge",
      "label": "Return key report"
    },
    "testReturn": {
      "id": "hwo-test-return",
      "kind": "edge",
      "label": "Return test report"
    },
    "toWrite": {
      "id": "hwo-to-write",
      "kind": "edge",
      "label": "Start patch"
    },
    "toVerify": {
      "id": "hwo-to-verify",
      "kind": "edge",
      "label": "Check final workspace"
    }
  },
  "scenarios": [
    {
      "id": "both-findings",
      "title": "Both findings return",
      "description": "Parallel research, two checked reports, one writer, final tests.",
      "initial": {
        "source": "Stable snapshot r0; no implementation edits are active.",
        "key": "Not started.",
        "tests": "Not started.",
        "join": "No findings received; writing blocked.",
        "workspace": "Unchanged r0; one designated writer.",
        "verification": "No new patch exists."
      },
      "unselected": [],
      "steps": [
        {
          "title": "Set the research snapshot",
          "description": "Both research sessions receive snapshot r0 and read-only access. Separate sessions can still share files.",
          "duration": 3000,
          "active": [
            "snapshot"
          ],
          "paths": [],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Not started.",
            "tests": "Not started.",
            "join": "No findings received; writing blocked.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        },
        {
          "title": "Start both research sessions",
          "description": "Both paths start together: one worker traces the cache key, while the other inspects regression tests. This diagram makes no runtime speed claim.",
          "duration": 3000,
          "active": [
            "key",
            "tests"
          ],
          "paths": [
            "toKey",
            "toTests"
          ],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Inspecting lookup/store keys and the effective locale at r0.",
            "tests": "Inspecting cache lifetime and locale assertions at r0.",
            "join": "No findings received; writing blocked.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        },
        {
          "title": "Inspect different code in parallel",
          "description": "Both workers are active. Neither edits the implementation workspace.",
          "duration": 3000,
          "active": [
            "key",
            "tests"
          ],
          "paths": [],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Found that the key omits the effective rendering locale.",
            "tests": "Found the fixture recreates the cache and hides cross-locale reuse.",
            "join": "No findings received; writing blocked.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        },
        {
          "title": "Return both reports",
          "description": "Both return paths move simultaneously. The join is still blocked until both findings have arrived.",
          "duration": 3000,
          "active": [
            "join"
          ],
          "paths": [
            "keyReturn",
            "testReturn"
          ],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Cache-key report returned, explicitly tied to r0.",
            "tests": "Test report returned, explicitly tied to r0.",
            "join": "Both reports arrived; check their source and results.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        },
        {
          "title": "Check both findings before writing",
          "description": "The writer checks both reports against their source. Agreement alone does not verify the patch.",
          "duration": 3000,
          "active": [
            "join"
          ],
          "paths": [],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Cache-key report returned, explicitly tied to r0.",
            "tests": "Test report returned, explicitly tied to r0.",
            "join": "Both reports checked against r0; writing may begin.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        },
        {
          "title": "Give one writer the patch",
          "description": "Only the writer changes the locale-bearing key and regression. Reports guide this decision; they are not patches to merge automatically.",
          "duration": 3000,
          "active": [
            "write"
          ],
          "paths": [
            "toWrite"
          ],
          "state": {
            "source": "Research findings remain tied to preserved snapshot r0.",
            "key": "Cache-key report returned, explicitly tied to r0.",
            "tests": "Test report returned, explicitly tied to r0.",
            "join": "Both reports checked against r0; writing may begin.",
            "workspace": "One writer makes the effective-locale key and shared-cache regression, producing constructed revision r1.",
            "verification": "Pending against the final r1 workspace."
          }
        },
        {
          "title": "Verify the final workspace",
          "description": "Verification examines the integrated r1 result, not either researcher's earlier source snapshot. The passing outcome is a teaching assumption.",
          "duration": 3000,
          "active": [
            "verify"
          ],
          "paths": [
            "toVerify"
          ],
          "state": {
            "source": "Research findings remain tied to preserved snapshot r0.",
            "key": "Cache-key report returned, explicitly tied to r0.",
            "tests": "Test report returned, explicitly tied to r0.",
            "join": "Both reports checked against r0; writing may begin.",
            "workspace": "One writer makes the effective-locale key and shared-cache regression, producing constructed revision r1.",
            "verification": "Constructed successful check: cross-locale isolation and same-locale reuse pass at r1."
          }
        }
      ]
    },
    {
      "id": "missing-finding",
      "title": "One finding is unresolved",
      "description": "Writing remains blocked when only one usable report returns.",
      "initial": {
        "source": "Stable snapshot r0; no implementation edits are active.",
        "key": "Not started.",
        "tests": "Not started.",
        "join": "No findings received; writing blocked.",
        "workspace": "Unchanged r0; one designated writer.",
        "verification": "No new patch exists."
      },
      "unselected": [
        "write",
        "verify",
        "testReturn",
        "toWrite",
        "toVerify"
      ],
      "steps": [
        {
          "title": "Set the research snapshot",
          "description": "Both research sessions receive snapshot r0 and read-only access. Separate sessions can still share files.",
          "duration": 3000,
          "active": [
            "snapshot"
          ],
          "paths": [],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Not started.",
            "tests": "Not started.",
            "join": "No findings received; writing blocked.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        },
        {
          "title": "Start both research sessions",
          "description": "Both paths start together: one worker traces the cache key, while the other inspects regression tests. This diagram makes no runtime speed claim.",
          "duration": 3000,
          "active": [
            "key",
            "tests"
          ],
          "paths": [
            "toKey",
            "toTests"
          ],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Inspecting lookup/store keys and the effective locale at r0.",
            "tests": "Inspecting cache lifetime and locale assertions at r0.",
            "join": "No findings received; writing blocked.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        },
        {
          "title": "Only the cache-key report returns",
          "description": "The key worker returns, while the test worker has not supplied a usable report. The join still needs both.",
          "duration": 3000,
          "active": [
            "tests",
            "join"
          ],
          "paths": [
            "keyReturn"
          ],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Cache-key report returned, explicitly tied to r0.",
            "tests": "Test research has not returned a usable report.",
            "join": "Waiting for the second report; writing remains blocked.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        },
        {
          "title": "Keep writing blocked",
          "description": "This constructed trace ends with an unresolved finding. No patch or verification is claimed.",
          "duration": 3000,
          "active": [
            "join"
          ],
          "paths": [],
          "state": {
            "source": "Stable snapshot r0; no implementation edits are active.",
            "key": "Cache-key report returned, explicitly tied to r0.",
            "tests": "Test research has not returned a usable report.",
            "join": "Waiting for the second report; writing remains blocked.",
            "workspace": "Unchanged r0; one designated writer.",
            "verification": "No new patch exists."
          }
        }
      ]
    }
  ],
  "sources": [
    {
      "file": "../../post.md",
      "description": "Author-designed cache-repair example and ownership decisions."
    },
    {
      "file": "/Users/jiwenbo/Documents/GitHub/Blog_Illustration_Skill/SKILL.md",
      "description": "Canonical Blog Illustration Skill; native SVG, declarative storyboard, shared generic player."
    }
  ],
  "limitations": [
    "The document-preview repair, source revisions r0/r1, worker messages and test outcomes are constructed teaching material.",
    "Concurrent paths express independent research assignments; their equal playback duration is not a claim that real workers finish together.",
    "The join requires both usable revision-bound reports. An absent report blocks writing in the incomplete scenario.",
    "Separate sessions do not imply filesystem isolation. Read-only authority and one-writer ownership are explicit policies in this example.",
    "No actual task execution, benchmark, speedup or product capability is claimed.",
    "The player uses the unchanged canonical builder. Real-article browser integration is checked separately by the root task."
  ]
}
