Skip to content

ci: faster, legible conformance tests (shipped-binary PR check + scheduled against-main monitor)#169

Draft
amiecorso wants to merge 1 commit into
mainfrom
corso/conformance-ci
Draft

ci: faster, legible conformance tests (shipped-binary PR check + scheduled against-main monitor)#169
amiecorso wants to merge 1 commit into
mainfrom
corso/conformance-ci

Conversation

@amiecorso

Copy link
Copy Markdown
Collaborator

Draft / proposal — independent of #167 and #168, for us to consider landing later.

Problem

The per-PR Base Std Fork Tests job builds base-anvil (forge+anvil) from source against base/base main on every PR — that compile is the slow part (120-min timeout). And a red "fork tests" check reads as "your PR is broken" when it really means base/base drifted, which is confusing about what blocks merge.

Change

Split the one slow, ambiguous job into two advisory, never-blocking conformance jobs, using our published base-anvil binaries so PRs no longer compile anything:

  • conformance-beryl.yml (pull_request / merge_group): downloads the published base-anvil build we ship (rolling nightly = Beryl at launch), runs make fork-tests against it. No Rust toolchain, no build — minutes instead of tens of minutes. Result is posted as a PR comment; the check is never red.
  • conformance-main.yml (schedule + workflow_dispatch): keeps the from-source build against base/base main as an early-warning monitor, off the per-PR path.

Removes the old base-std-fork-tests.yml.

Legibility (blocking vs advisory)

A new "Reading CI checks" section in the README states the contract, and the check names carry it:

  • Blocking = base-std correctness (Build, Test, Format, coverage, CodeQL) — reference suite vs the mocks; required; red = fix it.
  • Advisory = conformance (Conformance: shipped base/base, Conformance: base/base main) — same suite vs the live Rust precompiles; base/base diverging is base/base's job to fix; reported as a PR comment, never a red check.

Rule of thumb the docs establish: a red check is always something to fix; conformance divergences arrive as a comment, never a red check.

Note

Do not mark the conformance jobs as required in branch protection — they are intentionally advisory. (The old job should be removed from any required-checks list when this lands.)

…ainst-main monitor

Replace the per-PR from-source base-anvil build (slow) with two advisory,
never-blocking conformance jobs:
- conformance-beryl.yml (PR/merge_group): downloads the published base-anvil
  binary we ship and runs the suite against it — fast, no Rust build. Reports
  divergences via a PR comment, never a red check.
- conformance-main.yml (scheduled): builds base-anvil against base/base main
  from source as an early-warning monitor; off the PR path.
Adds a 'Reading CI checks' section to the README documenting blocking
(base-std correctness) vs advisory (conformance) checks. Removes the old
base-std-fork-tests.yml.
@github-actions

Copy link
Copy Markdown

Interface Coverage

✅ All interface functions have test coverage.

@github-actions

Copy link
Copy Markdown

✅ Conformance (shipped base/base): all 616 passed

The shipped base-anvil build (base/base 572a3c564b2b13227603c26b4fac7d52c9ce0060) matches the base-std reference. Advisory — never blocks.

@github-actions

Copy link
Copy Markdown

📊 Forge Coverage (src/lib/)

🟡 ≥95% across all metrics — some metrics below 99%.

File Lines Stmts Branches Funcs
🟢 B20FactoryLib.sol 100.00% 100.00% 100.00% 100.00%
🔴 test/lib/ForceFeeder.sol 0.00% 0.00% 100.00% 0.00%
🔴 test/lib/PrecompileProbe.sol 0.00% 0.00% 0.00% 0.00%
🟢 MockActivationRegistry.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockActivationRegistryStorage.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockB20.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockB20Asset.sol 100.00% 100.00% 100.00% 100.00%
🟡 MockB20Factory.sol 98.96% 99.10% 100.00% 100.00%
🟢 MockB20Stablecoin.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockB20Storage.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockPolicyRegistry.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockPolicyRegistryStorage.sol 100.00% 100.00% 100.00% 100.00%
Total 96.69% 97.23% 98.39% 96.89%

Full report: download artifact. To browse locally: make coverage (runs forge coverage + genhtml + opens the HTML report).

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