2 months ago
2c680b9The floor turns a would-be PASS into needs_review when half or more of the rules could not evaluate. That is the right default and it stays the default. It is now a per-repo setting, because there are honest reasons to turn it off: a forge that cannot feed some rules at all, or a repo where a stalled merge costs more than a missed check. Turning it off does NOT hide what happened. The degradation step is recorded either way, carrying enforced:false, and every rule that skipped still names itself and its reason. Turning off a safety net must never turn off the evidence. No migration: response_configs is jsonb validated by the schema, so an absent field reads as the default. Also fixes a misleading skip reason. A custom rule on a forge with no signal surface said 'forge reads unavailable', which reads as an outage that will clear. It never clears. It now names the forge. Verified live on open-git: floor on, a run with 2 of 3 rules skipped goes to review; floor off, the same run passes and still records both skips.
Parent22e1609