VexTrustGate Rollout Guide

This guide describes the phased rollout procedure for VexTrustGate, the Policy Engine gate that enforces VEX signature-verification trust thresholds before a finding’s status is allowed to transition.

Audience: platform operators and policy owners enabling trust-gated VEX enforcement across Dev, Stage, and Prod. Roll out the gate incrementally — warn first, then block — so you can tune thresholds against real traffic before any release is blocked.

Overview

VexTrustGate is a Policy Engine gate that:

  1. Validates VEX signature-verification trust scores.
  2. Enforces per-environment thresholds (production stricter than staging/development).
  3. Blocks or warns on status transitions when trust is insufficient.
  4. Contributes to confidence scoring via VexTrustConfidenceFactorProvider.

Gate Order

VexTrustGate runs at order 250 in the policy gate chain:

OrderGate
100EvidenceCompleteness
200LatticeState
250VexTrust
300UncertaintyTier
400Confidence

Prerequisites

  1. VEX signature-verification pipeline active.
  2. Issuer Directory populated with trusted VEX sources (see Issuer Directory and Trust).
  3. Excititor populating VexTrustStatus in API responses.

Rollout Phases

Phase 1: Feature Flag Deployment

Deploy with gate disabled to establish baseline:

PolicyGates:
  VexTrust:
    Enabled: false  # Gate off initially

Duration: 1-2 days Monitoring: Verify deployment health, no regression in existing gates.

Phase 2: Shadow Mode (Warn Everywhere)

Enable gate in warn-only mode across all environments:

PolicyGates:
  VexTrust:
    Enabled: true
    Thresholds:
      production:
        MinCompositeScore: 0.80
        RequireIssuerVerified: true
        FailureAction: Warn  # Changed from Block
      staging:
        MinCompositeScore: 0.60
        RequireIssuerVerified: true
        FailureAction: Warn
      development:
        MinCompositeScore: 0.40
        RequireIssuerVerified: false
        FailureAction: Warn
    MissingTrustBehavior: Warn

Duration: 1-2 weeks Monitoring:

Phase 3: Threshold Tuning

Based on Phase 2 data, adjust thresholds:

  1. Review decision breakdown by reason:

    • composite_score: May need to lower threshold
    • issuer_verified: Check IssuerDirectory completeness
    • freshness: Consider expanding acceptable states
  2. Tenant-specific adjustments (if needed):

    PolicyGates:
      VexTrust:
        TenantOverrides:
          tenant-with-internal-vex:
            production:
              MinCompositeScore: 0.70  # Lower for self-signed internal VEX
          high-security-tenant:
            production:
              MinCompositeScore: 0.90  # Higher for regulated workloads
    

Duration: 1 week Outcome: Validated threshold configuration

Phase 4: Production Enforcement

Enable blocking in production only:

PolicyGates:
  VexTrust:
    Enabled: true
    Thresholds:
      production:
        MinCompositeScore: 0.80
        RequireIssuerVerified: true
        MinAccuracyRate: 0.85
        AcceptableFreshness:
          - fresh
        FailureAction: Block  # Now enforcing
      staging:
        FailureAction: Warn  # Still warn only
      development:
        FailureAction: Warn

Duration: Ongoing with monitoring Rollback: Set FailureAction: Warn or Enabled: false if issues arise.

Phase 5: Full Rollout

After production stabilization, optionally enable blocking in staging:

PolicyGates:
  VexTrust:
    Thresholds:
      staging:
        MinCompositeScore: 0.60
        RequireIssuerVerified: true
        FailureAction: Block  # Optional stricter staging

Monitoring

Key Metrics

MetricDescriptionAlert Threshold
stellaops.policy.vex_trust_gate.evaluations.totalTotal evaluationsBaseline variance
stellaops.policy.vex_trust_gate.decisions.total{decision="block"}Block decisionsSudden spike
stellaops.policy.vex_trust_gate.trust_scoreScore distributionMean < 0.50
stellaops.policy.vex_trust_gate.evaluation_duration_msLatencyp99 > 100ms

Trace Spans

Audit Trail

PolicyAuditEntity now includes VEX trust fields:

Rollback Procedure

Immediate Disable

PolicyGates:
  VexTrust:
    Enabled: false

Switch to Warn Mode

PolicyGates:
  VexTrust:
    Thresholds:
      production:
        FailureAction: Warn
      staging:
        FailureAction: Warn
      development:
        FailureAction: Warn

Per-Tenant Disable

PolicyGates:
  VexTrust:
    TenantOverrides:
      affected-tenant:
        production:
          MinCompositeScore: 0.01  # Effectively bypass
          RequireIssuerVerified: false

Troubleshooting

Common Issues

SymptomLikely CauseResolution
All VEX blockedMissing IssuerDirectory entriesPopulate directory with trusted issuers
High false positive rateThreshold too strictLower MinCompositeScore
“missing_vex_trust_data” warningsVerification pipeline not runningCheck Excititor logs
Inconsistent decisionsStale trust cacheVerify cache TTL settings

Debug Logging

Enable debug logging for gate:

Logging:
  LogLevel:
    StellaOps.Policy.Engine.Gates.VexTrustGate: Debug

References