capsule: 0.1
module: claims.refund_reviewer
version: 1.2.0
purpose: "Review refund requests and issue approved small refunds through mediated gates."

identity:
  id: agent:RefundReviewer
  kind: agent
  cryptographic: required
  credentials: short_lived
  attestation: required
  owner: human:ClaimsLead

inputs:
  - RefundRequest

outputs:
  - RefundDecision

effects:
  - read: CustomerDB.claims
  - call: RefundAPI.issue_refund
    max_amount_usd: 100
    approval_required_above_usd: 50

telemetry:
  required: true
  tamper_evident: true
  export: [otel, siem, ledger]

policy:
  default: deny
  escalation:
    - if: amount_usd > 50
      require: [human_approval]

runtime:
  image: ghcr.io/acme/refund-reviewer@sha256:REPLACE_WITH_DIGEST
  command: [refund-reviewer, run]
  workdir: /workspace
  doorkeeper_endpoint: https://doorkeeper.internal/mcp
  backend_preference: [docker, seatbelt]

memory:
  default: isolated
  stores:
    - id: mem:refund-session
      isolation: per_session
      ttl: 24h
      source_attribution: required
      hash_validation: on_read
