Skip to main content

🚀 Beta: All Pro and Team features are free. Install on GitHub →

Platform truth table — what actually enforces, where

Every derived cell is produced from package metadata or exported code. PREVENTS means the action physically cannot proceed on that path. REPORTS means the result is visible while merge or deploy can still proceed. INSTRUCTS means durable guidance the agent reads; it is not enforcement. The fourth column names the switch in either direction — the one that turns reporting into prevention, or prevention into reporting.

Shipped packages (derived): sdk 3.14.2, prove 0.1.12, conformance 0.8.11, release-acceptance 1.0.4, guard 17.3.3, cli 8.6.3, gate v0.9.5, python-sdk 3.8.1, receipt-verifier v1.0.2. Server-derived change-set platforms (derived from src/scm/platforms.js): github, gitlab, bitbucket.

Conformance (derived): END_TO_END COVERED (7/7).

See What each path does — and does not.

Atomic-stack packages (checkout vs published)

Package npm/PyPI/git name Checkout Published Drift
clicoderifts8.6.38.6.3no
guard@coderifts/agent-guard17.3.317.3.3no
sdk@coderifts/sdk3.14.23.14.2no
pythoncoderifts-sdk3.8.13.8.1no
gatecoderifts/contract-gate0.9.50.9.5no
conformance@coderifts/conformance0.8.110.8.11no
prove@coderifts/prove0.1.120.1.12no

Conformance assurance profiles

Profile Status runnable / present
DECISION_LOGICCOVERED15 / 15
RECEIPT_CRYPTOCOVERED16 / 16
GUARDED_TOOL_TABLECOVERED6 / 6
CREDENTIAL_BOUNDARYCOVERED4 / 4
ATOMIC_COMMITCOVERED6 / 6
PROVIDER_ENFORCEDCOVERED7 / 7
END_TO_ENDCOVERED2 / 2
Surface What it gates Default With opt-in / opt-out How to enable
Claude Code — PreToolUse hookContract-touching Write/Edit/MultiEdit at tool-call timePREVENTS (exit 2; fail-closed / enforce_indeterminate when governance cannot run)CODERIFTS_ADVISORY=1 restores soft-allow on “could not run” sitescoderifts agent-setup writes .claude/settings.json
Claude Code — MCP pluginpreflight/verify/details as toolsREPORTS (decision surface)plugin install (3 canonical tools)
OpenAI / Codex — dispatcherEvery registered mutating tool callPREVENTS (proof-bound return; BLOCK → raw function does not run)withCodeRiftsOpenAI + executeOpenAIToolCall loop
Anthropic / Gemini / LangGraph — dispatcherSame, framework-native facesPREVENTSexecute*ToolCall wrappers
GitHub App — CodeRifts / contract-gatePR contract check posted by the GitHub AppREPORTS (phase-1 conclusion clamped to neutral; MERGEGATE_ENFORCE default false)PREVENTS when MERGEGATE_ENFORCE=true → conclusion may be failureApp install + MERGEGATE_ENFORCE
GitHub Action — CodeRifts / contract-gatecoderifts/contract-gate GitHub Action check (same name)REPORTS (posts a real check conclusion; merge is not blocked until the check is required)PREVENTS when configured as a required check (issuer-bound, not name-only)coderifts init --agents then require the check
Deploy gateDeploying an artifact whose receipt is stale/mismatched/unverifiedPREVENTS (fail-closed since CLI 4.3.0; verifies the signed receipt since 4.4.0; exit 1 on deny)CODERIFTS_DEPLOY_ADVISORY=1 (or CODERIFTS_ADVISORY=1) → advisory, exit 0coderifts deploy-gate in the deploy job
Publish gatenpm prepublishOnly / coderifts publish-gatePREVENTS (exit 1 on BLOCK/STOP or resolver error)coderifts publish-gate in npm prepublishOnly
git pre-push hookPushing spec changes without authorizationPREVENTS (BLOCK/STOP → exit 1 when the hook is installed)coderifts hook install
Rule files (6 platforms)Agent knows when/how to consult CodeRiftsINSTRUCTScoderifts agent-setup
MCP server (hosted)analyze = information only; authorize = receipt issuanceREPORTS + issues receipts(feeds every PREVENTS path above)app.coderifts.com/mcp

Boundary

Prevention holds inside the wired boundary — a host that bypasses the guarded table, uninstalls the hook, or merges on a repository without the required check is outside it, and the proofs say so rather than pretending otherwise.

This paragraph used to end with a live proof, and that proof no longer holds. It read: “the demo repository’s blocked PR is physically unmergeable.” Re-read from the GitHub API on 2026-09-15: coderifts/demo main answers 404 Branch not protected, enforcement_level is off, and contexts is empty; pull request #4 reports mergeable: MERGEABLE / mergeStateStatus: BEHIND. The check still runs and still fails — but nothing is prevented, because that branch requires no check. The sentence is withdrawn rather than quietly deleted: protection was removed from that repository at some point before this reading, and nothing here noticed until it was read again. The same re-reading is recorded on proof boundaries.

Derived vs prose

This page is generated from the frozen release-set (packages/release-acceptance/fixtures/CURRENT) plus the app repository (src/generated/release-manifest.json, rendered by scripts/generate-truth-table-html.js) and gated byte-for-byte in freeze-gate check 1. Package versions come from the frozen digest; enforcement rows, the platform list, the deploy-gate default, the merge check name and the MERGEGATE_ENFORCE default are derived from code. The two lines below are prose — product readings rather than constants, each carrying its own review date, and they are carried through rather than generated.

Frozen digest sha256:44223a07bd695a54f9b5209118f62f947f568ea82a0aeb5500705953fea328a4. Derived enforcement rows from release manifest commit 86c4460361e8c389cb74c760bd5630616cd5e307 (last --out of the manifest, not current HEAD).

Conformance END_TO_END (7/7)

The generated table above is the enforcement map. The public assurance claim sits beside it: @coderifts/conformance@0.8.11 reports every profile COVERED, including END_TO_END (7/7), via TARGET_STATE_TRANSITION_PROVEN — a governed ref moved to the authorized commit under a signed grant, observed afterwards by a separate read-only process.

Boundary, exactly as the profile records it: proof_scope TRUSTED_EXECUTOR, provider_witness NOT_APPLICABLE, externally_witnessed false. Trusted-executor-integrity, not a provider merge (PATH B), not externally witnessed. CodeRifts did not witness or sign the provider state. The GitHub positive provider-loop is a separate claim: provider canary. Honesty table: What each proof proves. Derived profile rows: atomic-stack.json. Replay: VERIFY.md. Gate today vs roadmap (not available): claim table.