record_promotion_decision
Record an attributed, insert-only verdict (promote, reject, hold, rollback) on a candidate, citing evidence and rationale for auditable promotion decisions.
Instructions
Record an attributed verdict on a candidate (RSI Phase 0).
verdict: promote | reject | hold | rollback. Decisions are insert-only — reversal is a new decision ('rollback'), never a mutation. evidence_refs may be sent as a JSON-encoded string list. decided_by is required: attribution is first-class.
Enforcement: verdict enum, non-empty rationale/decided_by, candidate (and contract, if given) must exist.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bf_2ln | No | The measured 2 ln BF bound forwarded with computed_rung. Stored for audit. | |
| verdict | Yes | promote | reject | hold | rollback — insert-only; reversal is a new 'rollback' decision. | |
| rationale | Yes | Non-empty justification — accountability is first-class. | |
| decided_by | Yes | Attributable decider (e.g. 'human:<name>' or a protocol/improver id). | |
| contract_id | No | Optional contract the decision was scored under; must exist if given. | |
| candidate_id | Yes | Candidate the verdict applies to; must exist. | |
| claimed_rung | No | Evidence rung this verdict claims (not_worth|positive|strong|very_strong — the Kass–Raftery ladder). Required on 'promote' when the cited contract declares min_evidence_rung. | |
| computed_rung | No | Evidence rung the promotion channel measured (forwarded by zetesis record_promotion_verdict — the rung close computed from the arm data). Stored beside claimed for audit; upstream cannot recompute it. | |
| evidence_refs | Yes | Evidence_ref IDs (from pull_evidence) the decision cites — ≥1 required; may be a JSON-encoded list. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| decision_id | No | ||
| claimed_rung | No | ||
| computed_rung | No | ||
| declared_rung | No | ||
| unverified_refs | No |