feat(ci): add AffineScript Canary workflow (advisory)#21
Merged
Conversation
Compiles every .affine file in the repo using the canonical affinescript CLI on every PR and main push that touches .affine sources. Failures are surfaced via GitHub annotations and step summaries but do NOT block the merge — this is the canary stage. Promote to required-for-merge once parity with the .res fallback is proven (Burble grade B target per ROADMAP.adoc). Includes a paired-fallback audit that warns on any .affine file lacking a .res sibling. Drop the audit job once the canary is required. Caches the affinescript binary by AFFINESCRIPT_REF to avoid rebuilding the OCaml/dune toolchain on every CI run. To bump affinescript, change AFFINESCRIPT_REF in env. Closes the canary CI gap noted in burble READINESS.adoc → "Validation gaps (NOT ready for production)" → AffineScript runtime compilation under full CI matrix. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
.github/workflows/affinescript-canary.yml— compiles every.affinefile in the repo on every PR + main push, surfaces failures via GitHub annotations and step summaries, does not block the merge (canary stage). Promote to required-for-merge once parity with the.resfallback is proven (Burble grade B target per ROADMAP.adoc).Closes the canary CI gap noted in
READINESS.adoc→ "Validation gaps (NOT ready for production)" → AffineScript runtime compilation under full CI matrix.What's in the workflow
Two jobs:
compile-affinescript(advisory) — finds every.affinefile, runsaffinescript checkon each, summarises pass/fail count in the step summary.continue-on-error: trueso failures surface but don't block.pairing-audit— warns on any.affinefile missing a.ressibling (the fallback). Drop this job once the canary is required-for-merge.Implementation notes
AFFINESCRIPT_REF: fc37bb5896de24cefe65dbfc5cd657a2d0087df7(affinescript main as of 2026-05-02). Bump the env var when you want a newer compiler.affinescriptbinary byAFFINESCRIPT_REF + runner.osso re-runs don't rebuild OCaml/dune unless the ref changes.**.affinechanges or workflow edits.actions/checkoutmatchingstatic-analysis-gate.ymlconvention.ocaml/setup-ocaml@v3is tag-pinned (no published SHA convention yet) — bump to a SHA when you next audit pins.Test plan
.affinefiles.affinefile in another PR) should cache-hit on affinescript and only run compile + pairing🤖 Generated with Claude Code