Hangar

Docs · Glidepath

ADR-0003: Governance gates as explicit, structurally-loud extension points

Context

Real quality/security gates (SAST, image scanning, policy-as-code, SBOM attestation) take real time to build correctly. A platform that ships governance-gate names without real enforcement behind them is dangerous if that gap is invisible - a gate that always silently passes is worse than no gate at all, because it’s trusted.

Decision

Governance gates are built as explicit extension points from day one, with stub-ness made structurally loud rather than hidden in code comments: a governance.stub=true-equivalent result/span attribute, rendered visually distinct in Grafana wherever a gate’s outcome is shown. A stub is never reported as if it were a real check. Each gate (SAST, image scan, policy check, SBOM) is implemented and promoted to real enforcement independently as it’s built - see governance-stubs.md for current status of each.

Consequences

  • Anyone looking at a pipeline’s governance results can immediately tell a stub from a real gate - no silent governance theater.
  • Gates can be added/promoted incrementally without a big-bang cutover - each one’s stub→real transition is independent.
  • On a release, each real gate reports as its own independent, required GitHub status check against the gitops PR, gated by branch protection - not a single aggregate “governance passed” bit.