{
  "$schema": "https://www.krafthaus.app/schemas/krafthaus-application-manifest-v1.schema.json",
  "schema_version": "krafthaus_application_manifest_v1",
  "application_id": "customer_operations_credit_gate",
  "version": "2026-07-15",
  "surface": {
    "workflow": "customer_account_credit_before_billing_mutation",
    "purpose": "Gate a customer account credit against cited refund policy and operating controls before a billing connector changes customer state.",
    "owner_role": "support_or_customer_operations_operator",
    "interface_url": "https://www.krafthaus.app/workflow-apps/customer-operations-credit"
  },
  "intake": {
    "contract": "closed",
    "fields": [
      {
        "name": "account_id",
        "type": "string",
        "required": true
      },
      {
        "name": "customer_name",
        "type": "string",
        "required": true
      },
      {
        "name": "case_id",
        "type": "string",
        "required": true
      },
      {
        "name": "operator_id",
        "type": "string",
        "required": true
      },
      {
        "name": "vendor",
        "type": "string",
        "required": true
      },
      {
        "name": "days_since_purchase",
        "type": "number",
        "required": true
      },
      {
        "name": "region",
        "type": "string",
        "required": true
      },
      {
        "name": "plan",
        "type": "string",
        "required": true
      },
      {
        "name": "credit_amount_usd",
        "type": "number",
        "required": true
      },
      {
        "name": "prior_credits_count",
        "type": "number",
        "required": true
      },
      {
        "name": "fraud_signal",
        "type": "boolean",
        "required": true
      },
      {
        "name": "manager_approval",
        "type": "boolean",
        "required": true
      }
    ]
  },
  "decide_runtime": {
    "manifest_version": "rulebook_runtime_manifest_v1",
    "manifest_url": "https://api.decide.fyi/manifests/rulebook-runtime-v1.json",
    "rulebook_contract": {
      "schema_version": "rulebook_v1",
      "schema_url": "https://api.decide.fyi/schemas/rulebook-v1.schema.json",
      "schema_hash": "bbf6d40dc8318e4943c6a3955d1ee10c64b63e8a6fdfd53ce33a498d826dfa5c",
      "evaluator_version": "decide_rulebook_v1"
    },
    "execution_model": {
      "production_core": "hybrid_declarative_rulebook_with_trusted_adapters",
      "binding_verdict_selector": "declarative_rulebook",
      "customer_supplied_code": "rejected",
      "trusted_adapters": "registered_fact_producers",
      "response_only_material_policy": {
        "status": "rejected_on_request",
        "applies_to": [
          "request_body",
          "context.inputs",
          "adapter_facts"
        ],
        "fields": [
          "runtime_binding",
          "trusted_adapter",
          "adapter_facts",
          "rulebook_attestation",
          "rulebook_contract",
          "decision_contract",
          "input_hash",
          "decision_id",
          "record_hash",
          "receipt_hash",
          "verify_url",
          "replay_url",
          "engine",
          "evaluator_version",
          "verdict",
          "application_verdict",
          "action",
          "reason_code",
          "matched_rule_id"
        ],
        "error": "RULEBOOK_OUTPUT_MATERIAL_FORBIDDEN"
      },
      "binding_modes": [
        {
          "mode": "direct_declarative_rulebook",
          "status": "supported",
          "request_material": [
            "rulebook",
            "context.inputs"
          ],
          "fact_source": "caller_supplied_inputs",
          "verdict_authority": "declarative_rulebook",
          "customer_supplied_code": "rejected"
        },
        {
          "mode": "trusted_adapter_facts_then_declarative_rulebook",
          "status": "supported",
          "request_material": [
            "adapter",
            "rulebook"
          ],
          "fact_source": "registered_first_party_adapter",
          "adapter_authority": "facts_only",
          "verdict_authority": "declarative_rulebook",
          "customer_supplied_code": "rejected"
        }
      ],
      "unsupported_modes": [
        {
          "mode": "customer_executable_rulebook",
          "status": "rejected",
          "reason": "Rulebook v1 is closed declarative JSON; executable policy logic requires a future versioned contract."
        }
      ]
    },
    "advisory_response_contract": {
      "schema_version": "decide_decision_contract_v1",
      "authority": "advisory_only",
      "production_verdict": false,
      "production_binding_required": true,
      "binding_verdict_selector": "rulebook_v1",
      "binding_runtime_manifest_url": "https://api.decide.fyi/manifests/rulebook-runtime-v1.json",
      "supported_production_binding_modes": [
        "direct_declarative_rulebook",
        "trusted_adapter_facts_then_declarative_rulebook"
      ],
      "binding_response_material_required": [
        "rulebook_contract",
        "runtime_binding",
        "rulebook_attestation"
      ],
      "customer_executable_rulebooks": "rejected",
      "prohibited_claim": "llm_output_is_binding_production_verdict",
      "applies_to_modes": [
        "single",
        "multi",
        "runtime"
      ]
    },
    "conformance": {
      "index_url": "https://api.decide.fyi/conformance/rulebook-v1/index.json",
      "version": "rulebook_v1_conformance_v1"
    },
    "replay": {
      "index_url": "https://api.decide.fyi/replay/rulebook-v1/index.json",
      "corpus_version": "rulebook_v1_golden_replay_v1",
      "contract": "historical_rulebook_replay_v1"
    },
    "application_binding": {
      "contract_version": "decide_application_binding_v1",
      "applies_to": "krafthaus_workflow_applications",
      "must_bind_before_action": true,
      "accepted_fact_sources": [
        "context.inputs",
        "adapter_facts"
      ],
      "required_decision_material": [
        "rulebook_contract",
        "runtime_binding",
        "verdict",
        "application_verdict",
        "action",
        "reason_code",
        "matched_rule_id",
        "rulebook.hash",
        "input_hash",
        "rulebook_attestation.bundle_hash"
      ],
      "replay_reference": "https://api.decide.fyi/replay/rulebook-v1/index.json",
      "conformance_reference": "https://api.decide.fyi/conformance/rulebook-v1/index.json",
      "prohibited_claims": [
        "llm_output_is_binding_production_verdict",
        "customer_executable_code_runs_as_rulebook_v1",
        "action_executes_before_decision_material_is_captured"
      ]
    }
  },
  "rulebook_binding": {
    "mode": "direct_declarative_rulebook",
    "rulebook_id": "customer_operations_credit_gate",
    "rulebook_version": "2026-07-15",
    "rulebook_hash": "00fd0cf490add960c33b9bef5a9ca87c17997253d14f4f6c7356d37c31db6a17",
    "customer_supplied_code": "rejected"
  },
  "record_contract": {
    "required": true,
    "required_fields": [
      "decision_id",
      "request_id",
      "account_id",
      "case_id",
      "operator_id",
      "policy_evidence_id",
      "policy_evidence_hash",
      "record_hash",
      "receipt_hash",
      "verify_url",
      "replay_url",
      "rulebook",
      "rulebook_contract",
      "runtime_binding",
      "application_verdict",
      "input_hash",
      "rulebook_attestation.bundle_hash"
    ],
    "verification_required": true,
    "replay_required": true
  },
  "action_boundary": {
    "proposed_action": "issue_customer_account_credit",
    "target_system": "billing_connector",
    "mutation": "billing.credit_customer_account",
    "allow_verdicts": [
      "APPROVE_CREDIT"
    ],
    "review_verdicts": [
      "ROUTE_REVIEW"
    ],
    "block_verdicts": [
      "BLOCK_CREDIT"
    ],
    "fail_closed": true
  },
  "handoff": {
    "by_verdict": {
      "APPROVE_CREDIT": "issue_account_credit",
      "ROUTE_REVIEW": "route_to_customer_operations_review",
      "BLOCK_CREDIT": "block_account_credit"
    },
    "decision_record_required": true,
    "execution_receipt_required": true,
    "artifact": "policy_evidence_credit_decision_record_and_billing_handoff"
  },
  "outcome_path": {
    "execution_receipt": "required_before_credit_outcome",
    "outcome_record": "required_after_billing_connector_result",
    "material_change": "new_customer_operations_credit_decision_required"
  }
}
