{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "schemas/cron_dispatch_guard_result.schema.json",
  "title": "dispatch.cron_dispatch_guard_result.v1",
  "description": "task-2553+44 §3.A — fail-closed verdict of the cron-direct / dispatch.py executor-completion-callback guard. A cron-direct dispatch that bypasses the +32 mandatory contract, or that is missing the normal completion callback clause / a valid 4-tuple, is FAIL. NO-CRON applies to registry/checkpoint cron-ban only; the executor's own normal completion callback stays MANDATORY (9-R.1 Layer A vs Layer B).",
  "type": "object",
  "required": [
    "schema",
    "verdict",
    "entry_path",
    "clause_present",
    "tuple_valid",
    "no_fallback_contract",
    "recorded_to_ledger",
    "reasons"
  ],
  "properties": {
    "schema": { "type": "string", "const": "dispatch.cron_dispatch_guard_result.v1" },
    "verdict": { "type": "string", "enum": ["PASS", "FAIL", "HOLD_FOR_CHAIR"] },
    "entry_path": {
      "type": "string",
      "description": "dispatch.core.main | cokacdir_cron_direct. An unknown/unrecognised entry path is FAIL (cron-direct bypass, regression 6)."
    },
    "clause_present": { "type": "boolean" },
    "tuple_valid": { "type": "boolean" },
    "no_fallback_contract": {
      "type": "boolean",
      "description": "If true, a missing fallback_callback_cron_id is an explicit declared no-fallback contract (regression 4) — it does NOT exempt the MANDATORY normal_collector_cron_id."
    },
    "recorded_to_ledger": {
      "type": "boolean",
      "description": "True iff a PASS verdict appended the durable callback 4-tuple to the append-only ledger. Layer A: append-only record, ZERO cron register/remove."
    },
    "reasons": { "type": "array", "items": { "type": "string" } }
  },
  "additionalProperties": true
}
