{
  "example_id": "property-management--cleaning-service-marketplace",
  "ledger_model": "marketplace",
  "entry_parameter_rules": {
    "cleaning_service_marketplace_fund": {
      "positive_integer_parameters": ["amount"]
    },
    "cleaning_service_marketplace_reserve": {
      "positive_integer_parameters": ["amount"]
    },
    "cleaning_service_marketplace_release": {
      "positive_integer_parameters": ["amount"]
    },
    "cleaning_service_marketplace_complete": {
      "positive_integer_parameters": ["amount"],
      "nonnegative_integer_parameters": ["fee"],
      "ordered_parameters": [["fee", "amount"]]
    },
    "cleaning_service_marketplace_credit_service": {
      "positive_integer_parameters": [],
      "nonnegative_integer_parameters": ["payee_credit", "fee_credit"],
      "positive_sum_parameters": ["payee_credit", "fee_credit"]
    },
    "cleaning_service_marketplace_reserve_refund": {
      "positive_integer_parameters": ["amount"]
    },
    "cleaning_service_marketplace_refund_settled": {
      "positive_integer_parameters": ["amount"]
    },
    "cleaning_service_marketplace_refund_failed": {
      "positive_integer_parameters": ["amount"]
    },
    "cleaning_service_marketplace_reserve_payout": {
      "positive_integer_parameters": ["amount"]
    },
    "cleaning_service_marketplace_payout_settled": {
      "positive_integer_parameters": ["amount"]
    },
    "cleaning_service_marketplace_payout_failed": {
      "positive_integer_parameters": ["amount"]
    }
  },
  "application_obligations": [
    "Authenticate and authorize every source, case and payee; bind them to one confirmed tenant and test ledger.",
    "Use opaque identifiers; never put patient, claimant or other sensitive details in account paths.",
    "Enforce positive/nonnegative integer rules before posting; the schema alone does not reject every negative parameter.",
    "Keep one immutable command record and deterministic idempotency key per business operation; reject key reuse with changed payload.",
    "Match callbacks to the exact case, source, payee, reservation and provider sub-operation; a balance condition is not identity authorization.",
    "Validate accepted service, compensation, refund and fee amounts against domain records; terminal outcomes must not be reopened.",
    "For partial outcomes, store each exact confirmed external sub-operation and ensure its amount is consumed at most once.",
    "Persist intent/outbox before effects; unknown provider outcome stays reserved until reconciled. Never release funds merely because a request timed out.",
    "Use only confirmed incoming cash for fund; record outgoing cash only after confirmed settlement.",
    "Reconcile the manually modeled cash account to external payment records. These schemas have no linked-account reconciliation integration."
  ],
  "domain_trigger": "A manager accepts a cleaning job booked across suppliers",
  "domain_boundary": "Service quality approval and worker classification are external"
}
