Policy

Reason codes and context

A reject is credible only when it names the failure and shows the numbers. ReserveGrid OS emits stable codes plus policy context.

Reason codes

Stable names, stable meaning

Code Category Description
AverageFeeTooLow fees Average fee rate is below the effective minimum for the selected fee tier.
TotalFeesTooLow fees Total fees implied by the template are below the policy minimum.
CoinbaseZero template coinbasevalue is missing or resolves to zero, so the template’s payout economics are invalid.
TooManyTransactions limits Template exceeds a configured transaction-count or size or weight limit.
PrevHashWrongLen template previousblockhash is missing or malformed, so the template cannot be anchored to a chain tip.
UnsupportedVersion policy Policy schema or protocol version is not supported by this verifier build.
EmptyTemplate template Template is missing required fields or contains no evaluable content.

Sample policy.toml

Readable and diffable

# Example only. Match your repo schema.

protocol_version = 1

[limits]
max_weight = 4000000
max_sigops = 8000

[fees]
mode = "dynamic_tiers"

[fees.tiers.low]
min_avg_fee_sat_vb = 2.0

[fees.tiers.mid]
min_avg_fee_sat_vb = 8.0

[fees.tiers.high]
min_avg_fee_sat_vb = 20.0
Tier input
mempool size, congestion, staleness
Tier output
low | mid | high

Traceable reject contract

What integrations can rely on

{
  "verdict": "REJECT",
  "reason_code": "MIN_AVG_FEE_TOO_LOW",
  "policy_context": {
    "fee_tier": "mid",
    "threshold_used": 8.0,
    "measured_value": 4.2
  }
}