The committed contract-drift.json records a different openapi.yaml than the one on the default branch, so it is a receipt for a spec that no longer exists.
Run: 34247467231 · commit 40199b160cb7717bbc3ea1a28acd4acb7a3fcccf
published-drift-freshness: STALE — contract-drift.json was generated at 2026-09-06T05:15:13.584Z and no longer describes openapi.yaml.
published-drift-freshness: - path count: the spec says 232, the receipt records 229
published-drift-freshness: - operation count: the spec says 257, the receipt records 254
published-drift-freshness: - operation digest: the spec hashes to b503d7a1cd84dab72becbb61240fdd649121a13e26687621d131d6f5ccf515fa, the receipt records c444b8649ef29f806ee2a0a178ed1fca487582e7e10ddd5e7f4fa651b1c98c8a (an operation was added, removed, or promoted out of draft)
published-drift-freshness: regenerate it with `node .github/scripts/published-drift.mjs openapi.yaml --out contract-drift.json` (needs network).
To clear this, regenerate the receipt and commit it:
node .github/scripts/published-drift.mjs openapi.yaml --out contract-drift.json
That fetches the published contract, so it needs network access — which is why CI nudges rather than doing it for you.
The committed
contract-drift.jsonrecords a differentopenapi.yamlthan the one on the default branch, so it is a receipt for a spec that no longer exists.Run:
34247467231· commit40199b160cb7717bbc3ea1a28acd4acb7a3fcccfTo clear this, regenerate the receipt and commit it:
That fetches the published contract, so it needs network access — which is why CI nudges rather than doing it for you.