Docs · provider canary
Provider canary artefacts
The provider canary writes machine-readable JSON and commits the result as an artefact.
It exits non-zero if any negative would pass, and is wired to run on a schedule. Measured 2026-09-20: the schedule is committed and has not been observed running yet. The workflow was merged to coderifts/demo main at 2026-09-20T08:58:15Z (pull request #15), and the Actions API answers total_count: 0 for event=schedule. A schedule that has never fired is a setting, not a cadence — this line changes when the first run is observed.
It reads the public coderifts/demo repository with a read-only token.
Current state — measured 2026-09-20
Read this before the capture below it. The capture is dated 2026-09-06
and two of its negatives have since stopped holding; both are named here rather than edited out of it.
- Branch protection is back on.
coderifts/demomainanswers"protected": trueon the public branches endpoint, read2026-09-20. The capture below says the branch is not protected; that was true when it was read on2026-09-15and is not true now. The homepage records the same return from the other side: it re-read the merge check on2026-09-19and moved that block fromNOT VERIFIEDtoVERIFIED. So the positive below still does not prove the gate gated — on the day it was recorded the branch was open. What changed is the branch, not the capture. - Nothing has merged since.
mainis still971aea00dc043e13932bb2b4a84ed34b3b8b4c08, committed2026-09-06T20:42:09Z— the same merge the capture describes. Pull request#4, the breaking change the evidence pages branch on, is still open. - The public run history does not show the failing streak.
The Actions API returns five runs for this repository, all
contract-gate, allfailure, the most recent dated2026-09-03. The note below reports thirty consecutive scheduled failures since2026-09-07, measured2026-09-15. We are not withdrawing that reading and we cannot reproduce it from the public API today — retention, a deleted workflow or a different schedule would each explain it, and none of them is measured here.
The six negatives below are what the canary tests on every run. The capture under them is dated and kept word for word — it is history, not the current state.
Negatives
fake_issuer— same-name check from another appforged_signature— forged grant signaturecross_run— authentic grant from another runstale_head— green check on a stale headwrong_binding— grant bound elsewhererevoked_key— revoked issuer key
Historical capture — 2026-09-06
Positive — RAN (LOOP, not signed-witness)
positive_merge_under_grant is RAN.
Measured via gh:
coderifts/demo PR #14
(additive timezone) merged
2026-09-06T20:42:09Z.
Head bfe669539017738b3456b992c5f6a34121ba6659.
App 2860592 / coderifts
posted CodeRifts / contract-gate success.
Merge commit 971aea00dc043e13932bb2b4a84ed34b3b8b4c08 on main.
Two things this page did not say, both measured 2026-09-15.
First: the canary has been failing on every scheduled run since 2026-09-07 —
thirty consecutive runs, not one success, each ending in about four seconds. The positive below was recorded on 2026-09-06,
which is the last day the job worked. Nothing on this page changed while that happened.
Second: the positive does not prove the gate gated.
coderifts/demo main is not protected — the branch-protection endpoint answers
404 Branch not protected, and both contexts and
checks are empty. The check ran, the App posted it, and the merge happened; it would have
happened with a red check too. What is proven is a real App posting a real check on a real merge — not a refusal.
provider_witness stays carried_unsigned —
not the public END_TO_END profile (2 vectors, RECORDED; phase-D option B, undecided).
It is a provider-integration claim, kept separate from that profile.
The public profile is END_TO_END COVERED / RECORDED, 2 vector(s) on
@coderifts/conformance@0.8.11 via a hermetic bare-Git
TARGET_STATE_TRANSITION_PROVEN
(proof_scope TRUSTED_EXECUTOR,
provider_witness NOT_APPLICABLE,
externally_witnessed false).
That is trusted-executor-integrity, not this GitHub loop and not PATH B.
Honesty table: What each proof proves.
Gate today vs roadmap (not available): claim table.
During the public beta every organization gets Team features at $0 with a self-serve key, public and private repositories alike, no separate Team key to request, and each key allows 1,000 requests a month: after that authorize returns BETA_LIMIT_REACHED, analysis keeps working, and one email to hello@coderifts.com raises the limit.