This document describes the compatibility canary that detects upstream drift without mutating anything.
The next-release canary:
- Validates fixture integrity against pinned SHAs
- Detects upstream manifest drift
- Reports compatibility status without auto-opening PRs
- Exits 0 on pinned supported targets (CI gate)
It is read-only by design. It never modifies upstream repositories or opens pull requests.
Local execution:
bun run compat:canaryCI execution (via GitHub Actions):
# Triggered automatically on pushes to main
# Manual trigger: Actions tab -> Compat Canary -> Run workflowThe canary performs these validations:
- Fixture existence - All fixture files in
patches/manifest.jsonexist - SHA256 integrity - Fixture content matches locked hashes
- Manifest validity - JSON structure is valid and complete
- Upstream reference alignment - Locked commits match expected values
- Platform support - Current platform is in the support matrix
| Code | Meaning |
|---|---|
| 0 | All checks passed; environment is compatible |
| 1 | One or more checks failed; drift detected |
| 2 | Configuration or environment error |
A fixture referenced in the manifest does not exist on disk. Run:
bun run verify:patches:fixtureTo regenerate fixtures, you would need to update the manifest with new SHA values and capture new fixture snapshots. This is outside the scope of the read-only canary.
A fixture file exists but its content differs from the locked hash. This indicates:
- The fixture was modified locally
- The upstream repository changed
- The file was corrupted
The canary reports the mismatch but does not attempt repair.
The locked commit in the manifest does not match a configured expectation. This is a metadata drift that requires manual review.
The canary is running on an unrecognized platform. v1 supports macOS, Linux, and Windows only.
The canary runs in GitHub Actions on:
- Every push to
main - Every pull request
- Manual workflow dispatch
It uses the same pinned fixtures as local runs. The CI environment is configured to fail the workflow if the canary exits non-zero.
The workflow is defined in .github/workflows/compat-canary.yml:
name: Compat Canary
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
canary:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- run: bun install
- run: bun run compat:canaryThe canary explicitly does NOT:
- Clone upstream repositories
- Compare against live upstream HEAD
- Open pull requests
- Auto-apply patches
- Modify any files
It only validates the local fixture and manifest state against locked expectations.
Drift is expected when:
- You intentionally updated the peer plugin
- Upstream released a new version
- You are testing against a different commit
In these cases, the canary failure is informational. You decide whether to:
- Update the manifest and fixtures
- Revert the peer to the pinned commit
- Override the check (not recommended for CI)
- compatibility.md - Compatibility boundaries
- support-matrix.md - Locked fixture versions
- install.md - Installation prerequisites