{
  "generated": "2026-10-18",
  "source_commit": "3cc171efb5c69c66c0cc02c8cb5ba6f5a8cd7ae1",
  "method": "scripts/run_reviewer_demo.py; local rule provider; selected synthetic fixtures",
  "claim_boundary": "Software-path examples only; not remote LLM performance, independent user testing or musical quality evidence.",
  "score_provenance": "Project-generated synthetic fixture score_001; CC0-1.0; benchmark/SOURCE_ATTRIBUTION.md",
  "screenshot_provenance": "Unmodified author-supplied demonstration screenshots dated 2026-10-03, separate from the 2026-10-18 example run. No new licence is granted for screenshots.",
  "cases": [
    {
      "task_id": "pitch_001",
      "instruction_en": "Transpose measure 1 of staff 1 up by a major second while preserving rhythm.",
      "instruction_zh": "将第1小节第一谱表升高大二度，并保持节奏不变。",
      "status": "generated",
      "provider": "local_rule",
      "target_scope": {
        "measures": [
          1
        ],
        "staffs": [
          1
        ]
      },
      "protected_scope": {
        "staffs": [
          2
        ]
      },
      "checks": {
        "task_success": true,
        "complete_preservation": true,
        "correct_refusal": false
      },
      "changes": [
        {
          "event_id": "m1_rh_1",
          "fields": [
            "pitch"
          ],
          "before": {
            "pitch": "C4"
          },
          "after": {
            "pitch": "D4"
          }
        },
        {
          "event_id": "m1_rh_2",
          "fields": [
            "pitch"
          ],
          "before": {
            "pitch": "D4"
          },
          "after": {
            "pitch": "E4"
          }
        },
        {
          "event_id": "m1_rh_3",
          "fields": [
            "pitch"
          ],
          "before": {
            "pitch": "E4"
          },
          "after": {
            "pitch": "F#4"
          }
        },
        {
          "event_id": "m1_rh_4",
          "fields": [
            "pitch"
          ],
          "before": {
            "pitch": "G4"
          },
          "after": {
            "pitch": "A4"
          }
        }
      ],
      "original": "original.musicxml",
      "revision": "pitch_001.musicxml",
      "evidence": "pitch_001.json"
    },
    {
      "task_id": "dynamics_001",
      "instruction_en": "Change only the third note in measure 1 to forte, preserving pitch and duration.",
      "instruction_zh": "只将第1小节第三个音改为强奏，并保持音高与时值。",
      "status": "generated",
      "provider": "local_rule",
      "target_scope": {
        "measures": [
          1
        ],
        "staffs": [
          1
        ],
        "event_ids": [
          "m1_rh_3"
        ]
      },
      "protected_scope": {
        "staffs": [
          2
        ]
      },
      "checks": {
        "task_success": true,
        "complete_preservation": true,
        "correct_refusal": false
      },
      "changes": [
        {
          "event_id": "m1_rh_3",
          "fields": [
            "dynamic"
          ],
          "before": {
            "dynamic": "mf"
          },
          "after": {
            "dynamic": "f"
          }
        }
      ],
      "original": "original.musicxml",
      "revision": "dynamics_001.musicxml",
      "evidence": "dynamics_001.json"
    },
    {
      "task_id": "conflict_001",
      "instruction_en": "Change measure 1 to 5/8 while preserving every note duration and leaving no rests.",
      "instruction_zh": "把第1小节改成5/8拍，同时保持所有音符时值且不允许休止符。",
      "status": "refused",
      "provider": "local_rule",
      "target_scope": {
        "measures": [
          1
        ],
        "staffs": [
          1
        ]
      },
      "protected_scope": {
        "staffs": [
          2
        ]
      },
      "checks": {
        "task_success": true,
        "complete_preservation": true,
        "correct_refusal": true
      },
      "changes": [],
      "original": "original.musicxml",
      "reason": "Changing meter while requiring all durations to remain unchanged is outside the safe local rule subset.",
      "evidence": "conflict_001.json"
    }
  ],
  "sha256": {
    "conflict_001.json": "07e7eeb29bbff663198758c8024ef6e5e300236cf70410f8a99e483f8979c659",
    "dynamics_001.json": "9959d607e3e4f9bb145a01912a259770d62f7c08630caf073bf711a293e64c01",
    "dynamics_001.musicxml": "a6ac3b2407889f2511973da797285420647c06e0977ddd8d3fe9ddd065b7b0be",
    "original.musicxml": "21dfaf9f755bfb3eb25f4359f178f27c34967c2efa128a5a63295b1739fa7ed6",
    "pitch_001.json": "3a1d19d360197cfb919b0f5f6dabc0e461b84c95de04746c3c9fec7b2d6bbc5c",
    "pitch_001.musicxml": "056f37c31c71034dddd16f4add36e6e915a38bafaace2d3ac779a40e0f461be9",
    "proposal.png": "569e28f806ca2d74f07692decbfc2faa55e77d62226e76c604507354eb19d3e8",
    "revision.png": "dd08fefea61e340202e29753e57c72260faab449f6f752857625649bcdd665af",
    "SCORE-LICENSE.txt": "93a599f286829f49cd8c8b124b2a8880b73e0c3ffa2c5fe52d8552ba01de05d5"
  }
}
