Skip to content

feat(ci): add AffineScript Canary workflow (advisory)#21

Merged
hyperpolymath merged 1 commit into
mainfrom
feat/affinescript-canary-ci
May 3, 2026
Merged

feat(ci): add AffineScript Canary workflow (advisory)#21
hyperpolymath merged 1 commit into
mainfrom
feat/affinescript-canary-ci

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Summary

Adds .github/workflows/affinescript-canary.yml — compiles every .affine file 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 .res fallback 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:

  1. compile-affinescript (advisory) — finds every .affine file, runs affinescript check on each, summarises pass/fail count in the step summary. continue-on-error: true so failures surface but don't block.
  2. pairing-audit — warns on any .affine file missing a .res sibling (the fallback). Drop this job once the canary is required-for-merge.

Implementation notes

  • Pinned AFFINESCRIPT_REF: fc37bb5896de24cefe65dbfc5cd657a2d0087df7 (affinescript main as of 2026-05-02). Bump the env var when you want a newer compiler.
  • Cached the built affinescript binary by AFFINESCRIPT_REF + runner.os so re-runs don't rebuild OCaml/dune unless the ref changes.
  • Path-filtered: only triggers on **.affine changes or workflow edits.
  • Uses SHA-pinned actions/checkout matching static-analysis-gate.yml convention. ocaml/setup-ocaml@v3 is tag-pinned (no published SHA convention yet) — bump to a SHA when you next audit pins.

Test plan

  • First run on this PR should hit cache miss → builds affinescript → compiles all 35 .affine files
  • Subsequent runs (touch a .affine file in another PR) should cache-hit on affinescript and only run compile + pairing
  • Confirm step summary renders cleanly with the Markdown table
  • Confirm pairing audit reports 0 unpaired (current state: 35/35 paired)

🤖 Generated with Claude Code

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>
@hyperpolymath hyperpolymath enabled auto-merge (squash) May 2, 2026 23:05
@hyperpolymath hyperpolymath merged commit 8eeed52 into main May 3, 2026
18 of 24 checks passed
@hyperpolymath hyperpolymath deleted the feat/affinescript-canary-ci branch May 3, 2026 09:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant