Skip to content

ci+scripts: copilot toolchain cache + Test262 feature-gap tool#460

Merged
dowdiness merged 3 commits into
mainfrom
worktree-ci-moonbit-toolchain-cache
Jun 25, 2026
Merged

ci+scripts: copilot toolchain cache + Test262 feature-gap tool#460
dowdiness merged 3 commits into
mainfrom
worktree-ci-moonbit-toolchain-cache

Conversation

@dowdiness

@dowdiness dowdiness commented Jun 25, 2026

Copy link
Copy Markdown
Owner

Summary

Commit 1: ci: cache MoonBit toolchain in copilot-setup-steps

Issue #292 (toolchain caching) was implemented in PR #295 for unit-test, test262, regression-check, bench, and startup-hyperfine jobs. copilot-setup-steps.yml was the only remaining workflow still using the unconditional curl | bash install path. Applies the same three-step pattern (cache restore → conditional install → unconditional PATH registration).

Commit 2: feat(scripts): Test262 feature-gap comparison tool

Adds scripts/test262_feature_gap.py — a non-authoritative planning tool that compares this repo's skip metadata against an external Test262 feature config's [features] section. Produces a Markdown report with three sections: features we skip that the external config runs, features both configs skip, and features both run. No pass rates or conformance claims.

Also adds:

  • scripts/test_test262_feature_gap.py: 15 Python unit tests (all passing)
  • Makefile targets: test262-feature-gap and test262-feature-gap-test
  • docs/TEST262.md "Feature gap report" section

Test plan

  • actionlint job passes on this PR
  • make test262-feature-gap-test passes (15 Python unit tests)
  • Smoke test: python3 scripts/test262_feature_gap.py --ext-config <file> produces readable Markdown output

Closes #234
Closes #292

🤖 Generated with Claude Code

The toolchain cache pattern (cache restore → conditional install → unconditional
PATH) was added to unit-test, test262, regression-check, bench, and
startup-hyperfine, but copilot-setup-steps.yml still used the original
unconditional curl | bash path.

Apply the same three-step split here with a job-level env block carrying
MOONBIT_CACHE_VERSION so the key can be busted on demand.

Closes #292

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@dowdiness, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 43 minutes and 29 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 75ff8b69-0ca3-4b40-b077-3b1519f27331

📥 Commits

Reviewing files that changed from the base of the PR and between e054332 and 50f81f6.

📒 Files selected for processing (5)
  • .github/workflows/copilot-setup-steps.yml
  • Makefile
  • docs/TEST262.md
  • scripts/test262_feature_gap.py
  • scripts/test_test262_feature_gap.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch worktree-ci-moonbit-toolchain-cache

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Add scripts/test262_feature_gap.py, a non-authoritative planning tool that
compares this repo's skip metadata (scripts/test262_skip_metadata.json)
against an external Test262 feature config's [features] section.

The report has three sections:
- Features we skip that the external config runs (planning priority signal)
- Features both configs skip
- Features the external config runs that we also run

The script makes no conformance claims and emits no pass-rate numbers.
A non-authoritative disclaimer appears at the top of every generated report.

Also added:
- scripts/test_test262_feature_gap.py: 15 Python unit tests covering
  the config parser and report builder (all passing)
- Makefile targets: test262-feature-gap (requires EXT_CONFIG=) and
  test262-feature-gap-test (runs the Python unit tests)
- docs/TEST262.md: "Feature gap report" section documenting usage

Closes #234

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dowdiness dowdiness changed the title ci: cache MoonBit toolchain in copilot-setup-steps ci+scripts: copilot toolchain cache + Test262 feature-gap tool Jun 25, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7464065c9c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/test262_feature_gap.py Outdated
…234)

External configs like QuickJS's test262.conf use `feature=skip` inside
[features] to mark unsupported features.  The old parser treated the whole
token as a feature name, placing `BigInt=skip` in the "external config runs"
set and causing materially misleading planning reports.

parse_features_config now returns (runs, skips): bare tokens go to runs,
`feature=skip` entries go to skips.  build_report splits the "both skip"
section into two sub-sections: explicitly skipped by external vs not
mentioned.  23 tests (up from 15), including a regression test for the
=skip misclassification.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dowdiness dowdiness merged commit dd5c0e5 into main Jun 25, 2026
15 checks passed
@dowdiness dowdiness deleted the worktree-ci-moonbit-toolchain-cache branch June 25, 2026 15:19
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.

ci: cache MoonBit toolchain installation to avoid re-downloading on every run Generate an external feature-gap report for skipped Test262 features

1 participant