Decision Contracts

A Decision Contract declares limits chosen by the user. DeciShift never invents acceptable thresholds.

Existing binary contracts

All v0.2 fields remain supported:

contract:
  max_decision_shift_rate: 0.05
  max_0_to_1_rate: 0.04
  max_1_to_0_rate: 0.03
  attribution:
    require_reproducible_identity: true
    max_score_efficiency_mae: 0.001
  approximate_attribution:
    max_decision_ci_width: 0.10
  cohorts:
    min_size: 100
    max_flip_rate: 0.12

Multi-action flow contracts

DecisionFlow adds transition/action rules without assigning numeric order to categorical actions:

contract:
  max_decision_shift_rate: 0.05
  transitions:
    "monitor->inspect":
      max_rate: 0.04
      max_count: 500
    "inspect->service":
      max_rate: 0.01
  candidate_actions:
    service:
      max_rate: 0.10
  attribution:
    require_reproducible_identity: true
    max_efficiency_mae: 0.001
  cohorts:
    min_size: 100
    max_action_shift_rate: 0.12

Transition/action rules support max_rate and/or max_count. Flow cohorts use max_action_shift_rate; the historical max_flip_rate remains available for binary pipelines and is accepted as a backwards-friendly shift limit when a reused contract is applied to a flow.

Evaluate saved evidence:

decishift gate RUN_ID --contract examples/triage/decision-contract.yaml

Exit codes are unchanged:

Code Meaning
0 contract passed
2 configuration/usage error
10 contract violated
11 insufficient evidence
12 evidence integrity failure

A Decision Contract PASS means only that the user-declared checks passed against the saved DeciShift evidence. It is not proof that a system is safe, fair, compliant, correct, causal, or suitable for deployment.