Repository navigation
v0.22.0 — Gap 1 validator execution model + shutdown hardening
v0.22.0 — Gap 1 validator execution model + shutdown hardening
Contents
Gap 1 validator execution model (PR #18)
- Backend pass-capability derivation:
local-processis never pass-capable;container-runtimeis pass-capable only when reachable + backed by complete validator image identity;delegated-runhas a vendor-neutral provider contract + null placeholder. /healthextended with validator readiness:executor.selected_pass_capable,validator.configured,validator.pass_capable,validator.reason.- Validator image identity resolution via
GITWIRE_VALIDATOR_IMAGE_REF/GITWIRE_VALIDATOR_IMAGE_DIGEST(digest pinning + digest-match checks). - Execution receipts extended with
executor_kind,executor_pass_capable,validator_image_ref,validator_image_digest,validator_result,validator_result_status.proof_collected_atis a sibling (not inreceipt_content) — preserves write-once dedup. - Pure pass-gate helper
validateGap1ValidatorBindings(checks 3f–3j). getDefaultBackend()reachability-honest for auto-selection (explicit configured selection unchanged).
Shutdown-handler crash-loop fix (PR #19, CT 115 incident 2026-06-21)
- Idempotent + bounded graceful shutdown. Fixes the crash-loop where an
uncaughtExceptionunder memory pressure re-enteredshutdown()and looped forever ondb.end()"Called end on pool more than once".
Safety invariants
local-process never pass-capable
pass evidence requires live pass-capable backend + complete validator image identity
uncaughtException → ONE shutdown attempt → process exits
Version note
Package versions advance from 0.20.1 to 0.22.0. Intermediate tags v0.20.2, v0.20.3, and v0.21.0 shipped operational milestones without package-version bumps; v0.22.0 reconciles the package version with the current release line.
Exclusions
- No database migration.
- No CT 115 ad-hoc changes outside the deployment runbook.