# Illustrative implementation starter. This is not a normative ContextOS runtime schema.
schema_version: contextos.ai/examples/agent-accountability-matrix/v1
kind: AgentAccountabilityMatrix

metadata:
  matrix_id: acct_matrix_supplier_payment
  version: "2026-07-20"
  status: draft
  owner_role: accounts_payable_controller
  review_cadence_days: 90

decision_class:
  id: finance.supplier_payment
  purpose: Pay a validated supplier invoice once, to the correct destination, within policy.
  environment: production
  impacted_parties:
    - supplier
    - accounts_payable_team
    - treasury
  potential_effects:
    - transfer_funds
    - change_ledger_state
    - notify_supplier
  maximum_approval_mode: destructive
  residual_risk_owner: chief_financial_officer

roles:
  executive_risk_owner:
    role_ref: role:chief_financial_officer
    owns:
      - risk_appetite
      - unresolved_exceptions
      - high_impact_go_no_go_escalation
    evidence:
      - signed_risk_acceptance
      - escalation_decision

  business_decision_owner:
    role_ref: role:accounts_payable_controller
    owns:
      - outcome_definition
      - decision_policy
      - accepted_residual_risk
      - affected_party_remediation
    evidence:
      - decision_charter
      - threshold_register
      - harm_and_value_scorecard

  agent_product_owner:
    role_ref: role:finance_agent_product_owner
    owns:
      - workflow_design
      - evidence_requirements
      - approval_experience
      - release_performance
    evidence:
      - workflow_version
      - evaluation_report
      - release_record

  harness_owner:
    role_ref: role:agent_platform_owner
    owns:
      - context_compilation
      - policy_enforcement
      - evaluation_and_trace
      - replay_and_runtime_isolation
    evidence:
      - context_pack_version
      - policy_bundle_version
      - replay_result
      - trace_coverage_report

  model_provider_manager:
    role_ref: role:ai_vendor_manager
    owns:
      - approved_model_route
      - provider_due_diligence
      - contractual_controls
      - model_change_response
    does_not_own:
      - enterprise_business_outcome
      - tool_authority
      - deployment_context
    evidence:
      - provider_assessment
      - model_route_version
      - fallback_plan

  data_owner:
    role_ref: role:vendor_master_data_owner
    owns:
      - fitness_and_freshness
      - provenance_and_classification
      - correction_workflow
    evidence:
      - data_contract
      - lineage_reference
      - freshness_slo
      - quality_result

  tool_effect_owner:
    role_ref: role:payments_platform_owner
    owns:
      - capability_contract
      - authorization_and_constraints
      - idempotency_and_receipts
      - reconciliation_and_reversal
    evidence:
      - signed_tool_manifest
      - mutation_receipt
      - rollback_drill

  approver:
    role_ref: role:finance_payment_approver
    owns:
      - judgment_on_frozen_proposal
      - rationale_within_delegated_authority
    does_not_own:
      - hidden_evidence
      - unsafe_approval_design
      - controls_outside_assigned_authority
    required_conditions:
      authority: can_approve_reject_request_evidence_or_escalate
      information: sees_material_evidence_uncertainty_policy_and_effect
      ability: has_competence_time_and_interface_support
    evidence:
      - approver_identity
      - frozen_evidence_hash
      - decision_and_rationale
      - timestamp

  operator:
    role_ref: role:finance_agent_operator
    owns:
      - monitoring
      - runbook_execution
      - escalation
    evidence:
      - alert_receipt
      - action_log
      - handoff_timestamps

  security_risk_compliance:
    role_ref: role:ai_risk_review_board
    owns:
      - independent_challenge
      - control_requirements
      - regulatory_mapping
    evidence:
      - threat_model
      - review_findings
      - exception_register

  incident_commander:
    role_ref: role:finance_incident_commander
    owns:
      - containment_coordination
      - recovery_coordination
      - incident_communications
      - action_owner_assignment
    evidence:
      - incident_timeline
      - containment_proof
      - recovery_decision

accountability_receipt:
  governance_ref: acct_matrix:supplier_payment@2026-07-20
  decision_owner_ref: role:accounts_payable_controller
  control_owner_refs:
    - role:vendor_master_data_owner
    - role:finance_agent_product_owner
    - role:agent_platform_owner
  effect_owner_ref: role:payments_platform_owner
  incident_owner_ref: role:finance_incident_commander
  resolve_from_decision_record:
    - decision_id
    - trace_id
    - agent_subject_and_version
    - delegated_principal
    - evidence_refs_and_snapshot_hash
    - policy_and_evaluator_versions
    - approval_events
    - tool_calls_and_mutation_receipts
    - reversal_status

controls:
  prevent:
    - control: duplicate_invoice_detection
      owner_ref: role:vendor_master_data_owner
      evidence: quality_result_ref
    - control: payment_policy_and_thresholds
      owner_ref: role:accounts_payable_controller
      evidence: policy_bundle_ref
  detect:
    - control: post_payment_reconciliation
      owner_ref: role:payments_platform_owner
      evidence: reconciliation_receipt_ref
    - control: agent_regression_evaluations
      owner_ref: role:finance_agent_product_owner
      evidence: evaluation_report_ref
  contain:
    - control: disable_payment_capability
      owner_ref: role:payments_platform_owner
      target_slo_minutes: 10
    - control: stop_active_agent_runs
      owner_ref: role:agent_platform_owner
      target_slo_minutes: 10
  recover:
    - control: reverse_or_recall_payment
      owner_ref: role:payments_platform_owner
      evidence: reversal_receipt_ref
    - control: compensate_affected_party
      owner_ref: role:accounts_payable_controller
      evidence: remediation_case_ref

hard_stops:
  - no_single_business_decision_owner
  - approver_used_as_liability_sink
  - model_provider_treated_as_business_outcome_owner
  - high_impact_effect_has_no_owner_receipt_or_remediation_path
  - incident_commander_or_containment_authority_is_undefined

incident_review_questions:
  - who_could_have_prevented_the_failure
  - who_could_have_detected_it_earlier
  - who_could_contain_the_effect
  - who_could_reverse_or_compensate
  - who_must_explain_and_improve_the_decision_class

scorecard:
  scoring:
    0: absent_implicit_or_assigned_after_incident
    1: named_but_incomplete_stale_or_unsupported
    2: named_current_evidenced_exercised_and_linked_to_run
  controls:
    - decision_ownership
    - control_ownership
    - data_ownership
    - effect_ownership
    - approval_integrity
    - provider_deployer_boundary
    - run_attribution
    - recovery_ownership
    - incident_command
    - learning_closure
  maximum_score: 20

review:
  last_completed_at: null
  next_due_at: "2026-10-18"
  last_incident_drill_at: null
  last_reversal_drill_at: null
  open_exceptions: []
