Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 18 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,12 @@ jobs:
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
# fetch-depth: 0 — mirrors deploy-pages.yml so the conformance over-time
# chart (built from the git history of conformance_status.csv) is exercised
# by the pre-merge build check, not just the post-merge deploy.
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0

- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
Expand All @@ -110,6 +115,11 @@ jobs:

- name: Build site
working-directory: website
# GITHUB_TOKEN raises the GitHub API rate limit for _data/releases.js
# (the releases page is generated from the live Releases API at build
# time); the build still degrades gracefully if the call fails.
env:
GITHUB_TOKEN: ${{ github.token }}
run: npm run build

# ── Lint (runs in parallel with all test jobs) ─────────────────────────────
Expand Down Expand Up @@ -225,16 +235,16 @@ jobs:
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@81ee9698f20724138a785d788c7567d40f14cd2d # cargo-llvm-cov

# The PEP conformance suite is fetched fresh from the upstream typing repo
# on every run (network-bound, one HTTP request per test file). Cache it
# keyed on conformance.sh, which holds the pinned TYPING_REF — bumping the
# ref edits that file and busts the cache; conformance.sh itself re-fetches
# whenever the stamped ref differs, so a stale restore self-heals.
- name: Cache conformance suite
# Only the conformance FIXTURES are fetched (the calculator
# conformance/upstream_main.py is committed). Cache the downloaded fixtures
# keyed on score.py, which holds the pinned ref (PINNED_TYPING_REF) — bumping
# the ref edits that file and busts the cache; score.py re-fetches whenever
# the stamped ref differs, so a stale prefix restore self-heals.
- name: Cache conformance fixtures
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: crates/basilisk-cli/tests/conformance
key: conformance-suite-${{ hashFiles('scripts/conformance.sh') }}
path: conformance/tests
key: conformance-suite-${{ hashFiles('conformance/score.py') }}
restore-keys: conformance-suite-

- name: Run Rust tests with coverage
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,12 @@ jobs:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
steps:
# fetch-depth: 0 — the conformance over-time chart (_data/conformance.js)
# reads the full git history of conformance/conformance_status.csv. A
# shallow clone would collapse the chart to a single point.
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0

- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
Expand All @@ -51,6 +56,11 @@ jobs:

- name: Build site
working-directory: website
# GITHUB_TOKEN raises the GitHub API rate limit for _data/releases.js
# (the releases page is generated from the live Releases API at build
# time); the build still degrades gracefully if the call fails.
env:
GITHUB_TOKEN: ${{ github.token }}
run: npm run build

- uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
Expand Down
11 changes: 9 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,11 @@ deslop-*.log
benchmarks/results/

# =============================================================================
# Conformance test suite (fetched via make conformance / scripts/conformance.sh)
# Conformance test FIXTURES: downloaded on demand into conformance/tests/ (via
# make conformance / score.py --fetch) — never committed. NOTE: the official
# calculator conformance/upstream_main.py IS committed and is NOT ignored.
# =============================================================================
crates/basilisk-cli/tests/conformance/
conformance/tests/

# =============================================================================
# Tool / agent state
Expand Down Expand Up @@ -149,3 +151,8 @@ URGENT_READ_ME_NOW.md

.deslop-cache/
.ghissues/

website/_verify/


/*.png
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,8 @@ mutation-test:
## conformance/conformance_status.csv. Fetches the upstream suite if missing;
## use FETCH=1 to force a re-download.
conformance:
@bash scripts/conformance.sh $(if $(filter 1,$(FETCH)),--fetch,)
@cargo build -p basilisk-cli --bin basilisk
@python3 conformance/score.py --bin target/debug/basilisk $(if $(filter 1,$(FETCH)),--fetch,)

## bench: Benchmark Basilisk vs pyright/mypy/ty/pyrefly on the fixture suite.
## Requires hyperfine; competitor tools are skipped if not installed.
Expand Down
Binary file added conf-chart.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading