# Example only — adapt before production use.
apiVersion: architecture.nishantr.tech/v1
kind: BusinessCapabilityContract
metadata:
  id: invoice.approve
  version: '1.0.0'
  owner: finance-domain-team
  status: example
spec:
  intent: Approve an invoice within delegated authority
  actor:
    identity_required: true
    delegated_authority_required: true
  input_schema:
    invoice_id: string
    expected_version: integer
    reason_code: string
  preconditions:
    - invoice_exists
    - invoice_state_is_pending
    - actor_has_approval_limit
    - invoice_version_matches
  constraints:
    requires_deterministic_policy_validation: true
    idempotency_key_required: true
    human_approval: risk_based
  execution:
    owned_by: invoice-domain-service
    commit_boundary: invoice-aggregate
    replay_protection: idempotency_store
  responses:
    success: {status: approved, event: InvoiceApproved}
    rejection: {status: denied, reason: policy_or_precondition}
  evidence:
    audit_fields: [actor_id, tool_identity, request_id, policy_version, decision, timestamp]
    metrics: [correct_outcome_rate, policy_denial_rate, execution_latency_ms]
