Skip to content

ci: pin compat gate to the same verdict-core SHA as tests - #22

Merged
mrnicholasbcarter-code merged 1 commit into
masterfrom
fix/compat-gate-pin
Nov 2, 2026
Merged

mrnicholasbcarter-code merged 1 commit into
masterfrom
fix/compat-gate-pin

Conversation

@mrnicholasbcarter-code

Copy link
Copy Markdown
Owner

Why scheduled CI is red

The weekly CI runs on Sep 28, Oct 5 and Oct 12 (runs 36430219757, 37324276384, 38268249181) all failed in one place: Compat Gate → Run compat check. Tests, lint, build and security passed every time.

{"allowed": false, "reason": "contract_hash_mismatch", "mismatched_contracts": ["RoutingDecisionContract"]}

The compat gate installed verdict-core@main (the step was named "pinned", but it wasn't). Core main changed RoutingDecisionContract after our manifest was last refreshed on Aug 30, so the weekly run started failing even though nothing in this repo changed.

ADR-024 says the gate checks the declared manifest against the core version actually in use. The test job runs against 55880def, so that's the version the gate should check.

Change

  • One workflow-level VERDICT_CORE_REF (still 55880def0e778e614f9d7e34c79a98d36eed5b15), used by the test job and the compat gate.
  • The compat gate no longer floats on main.

Verified locally

verdict compat check --declared .verdict/compat-manifest.json --json against three core refs:

verdict-core ref result
55880def (test pin) allowed: true
v0.4.2 contract_hash_mismatch (RoutingDecisionContract)
main contract_hash_mismatch (RoutingDecisionContract)

Follow-up (out of scope here)

Moving to core v0.4.2 or later means bumping VERDICT_CORE_REF, regenerating the manifest (verdict compat manifest --json) and checking the tests still pass, all in one PR. If you want an early warning when core main drifts, add a separate non-blocking job for that. Don't point the blocking gate at main.

The compat gate installed verdict-core@main, so every RoutingDecisionContract
change on core main failed the scheduled run (Sep 28, Oct 5, Oct 12) with
contract_hash_mismatch. ADR-024 says the gate checks the manifest of the
core version actually in use, which is the 55880def pin the test job uses.
Both jobs now read one VERDICT_CORE_REF. The declared manifest passes against
that SHA; moving to core v0.4.2+ needs a manifest refresh in the same PR.
@mrnicholasbcarter-code
mrnicholasbcarter-code merged commit f633c09 into master Nov 2, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant