Repository navigation
build: adopt cleanporter tooling and windows correctness checks - #12
Conversation
There was a problem hiding this comment.
🔵 Needs a closer look
One or more issues must be addressed before approval.
0 open findings
What changed in this PR
Adds repository-wide tooling for license headers, hooks, documentation checks, release validation, artifact smoke tests, and Windows CI.
Changes:
- Replaces pre-commit with prek and adds canonical header enforcement.
- Adds release metadata validation and isolated wheel/sdist smoke tests.
- Adds portability tests, documentation drift checks, and Windows CI coverage.
| File | Description |
|---|---|
| uv.lock | Updated as part of this pull request. |
| tests/unit/test_validate.py | Updated as part of this pull request. |
| tests/unit/test_runtime.py | Updated as part of this pull request. |
| tests/unit/test_optimize.py | Updated as part of this pull request. |
| tests/unit/test_lower.py | Updated as part of this pull request. |
| tests/unit/test_layering.py | Updated as part of this pull request. |
| tests/unit/test_ir.py | Updated as part of this pull request. |
| tests/unit/test_fuzz.py | Updated as part of this pull request. |
| tests/unit/test_extract.py | Updated as part of this pull request. |
| tests/unit/test_docstring.py | Updated as part of this pull request. |
| tests/unit/test_codegen.py | Updated as part of this pull request. |
| tests/unit/test_builtins.py | Updated as part of this pull request. |
| tests/test_release.py | Updated as part of this pull request. |
| tests/test_portability.py | Updated as part of this pull request. |
| tests/test_license_headers.py | Updated as part of this pull request. |
| tests/test_hooks.py | Updated as part of this pull request. |
| tests/test_docs.py | Updated as part of this pull request. |
| tests/test_agent_layout.py | Updated as part of this pull request. |
| tests/support.py | Updated as part of this pull request. |
| tests/perf/test_speed_gate.py | Updated as part of this pull request. |
| tests/perf/test_bench.py | Updated as part of this pull request. |
| tests/golden/test_golden.py | Updated as part of this pull request. |
| tests/golden/cases/unary_ops.py | Updated as part of this pull request. |
| tests/golden/cases/ternary.py | Updated as part of this pull request. |
| tests/golden/cases/ssa_rebind.py | Updated as part of this pull request. |
| tests/golden/cases/reserved_param.py | Updated as part of this pull request. |
| tests/golden/cases/relu.py | Updated as part of this pull request. |
| tests/golden/cases/relu_with_else.py | Updated as part of this pull request. |
| tests/golden/cases/psi.py | Updated as part of this pull request. |
| tests/golden/cases/pow_op.py | Updated as part of this pull request. |
| tests/golden/cases/piecewise.py | Updated as part of this pull request. |
| tests/golden/cases/nested_loops.py | Updated as part of this pull request. |
| tests/golden/cases/nested_early_returns.py | Updated as part of this pull request. |
| tests/golden/cases/minmax.py | Updated as part of this pull request. |
| tests/golden/cases/merge_with_prior.py | Updated as part of this pull request. |
| tests/golden/cases/math_two_arg.py | Updated as part of this pull request. |
| tests/golden/cases/math_floor_ceil.py | Updated as part of this pull request. |
| tests/golden/cases/math_calls.py | Updated as part of this pull request. |
| tests/golden/cases/loop_with_branch.py | Updated as part of this pull request. |
| tests/golden/cases/loop_two_carried.py | Updated as part of this pull request. |
| tests/golden/cases/loop_start_stop_step.py | Updated as part of this pull request. |
| tests/golden/cases/loop_helper_caller.py | Updated as part of this pull request. |
| tests/golden/cases/loop_accumulate.py | Updated as part of this pull request. |
| tests/golden/cases/kwonly_defaults.py | Updated as part of this pull request. |
| tests/golden/cases/helper_outer.py | Updated as part of this pull request. |
| tests/golden/cases/from_import.py | Updated as part of this pull request. |
| tests/golden/cases/floor_mod_ops.py | Updated as part of this pull request. |
| tests/golden/cases/docstring_numpy.py | Updated as part of this pull request. |
| tests/golden/cases/docstring_numpy_notes.py | Updated as part of this pull request. |
| tests/golden/cases/docstring_google.py | Updated as part of this pull request. |
| tests/golden/cases/docstring_existing_notes.py | Updated as part of this pull request. |
| tests/golden/cases/cse_opportunity.py | Updated as part of this pull request. |
| tests/golden/cases/constants.py | Updated as part of this pull request. |
| tests/golden/cases/complex_expr.py | Updated as part of this pull request. |
| tests/golden/cases/compare_ops.py | Updated as part of this pull request. |
| tests/golden/cases/compare_chain.py | Updated as part of this pull request. |
| tests/golden/cases/closure_scalar.py | Updated as part of this pull request. |
| tests/golden/cases/closure_array.py | Updated as part of this pull request. |
| tests/golden/cases/clamp.py | Updated as part of this pull request. |
| tests/golden/cases/casts.py | Updated as part of this pull request. |
| tests/golden/cases/both_branches_assign.py | Updated as part of this pull request. |
| tests/golden/cases/boolop_numeric.py | Updated as part of this pull request. |
| tests/golden/cases/boolop_logical.py | Updated as part of this pull request. |
| tests/golden/cases/bitwise_ops.py | Updated as part of this pull request. |
| tests/golden/cases/arith_ops.py | Updated as part of this pull request. |
| tests/golden/cases/add.py | Updated as part of this pull request. |
| tests/golden/cases/add_pinned.py | Updated as part of this pull request. |
| tests/golden/cases/abs_round.py | Updated as part of this pull request. |
| tests/features/test_verify.py | Updated as part of this pull request. |
| tests/features/test_protect_domains.py | Updated as part of this pull request. |
| tests/features/test_namespace_pin.py | Updated as part of this pull request. |
| tests/features/test_fallback.py | Updated as part of this pull request. |
| tests/differential/test_scalar_equivalence.py | Updated as part of this pull request. |
| tests/corpus.py | Updated as part of this pull request. |
| tests/conftest.py | Updated as part of this pull request. |
| tests/behavior/test_public_api.py | Updated as part of this pull request. |
| tests/behavior/test_name_allocation.py | Updated as part of this pull request. |
| tests/behavior/test_memoization.py | Updated as part of this pull request. |
| tests/behavior/test_loops.py | Updated as part of this pull request. |
| tests/behavior/test_lambdas.py | Updated as part of this pull request. |
| tests/behavior/test_inspectability.py | Updated as part of this pull request. |
| tests/behavior/test_helpers.py | Updated as part of this pull request. |
| tests/behavior/test_docstrings.py | Updated as part of this pull request. |
| tests/behavior/test_divergences.py | Updated as part of this pull request. |
| tests/behavior/test_cse.py | Updated as part of this pull request. |
| tests/behavior/test_control_flow.py | Updated as part of this pull request. |
| tests/behavior/test_closures.py | Updated as part of this pull request. |
| tests/behavior/test_calls_math_casts.py | Updated as part of this pull request. |
| tests/behavior/test_arithmetic_dtypes.py | Updated as part of this pull request. |
| tests/backends/test_jax_torch_compilation.py | Updated as part of this pull request. |
| tests/backends/test_array_api_strict.py | Updated as part of this pull request. |
| src/array_vectorize/verify.py | Updated as part of this pull request. |
| src/array_vectorize/runtime/registry.py | Updated as part of this pull request. |
| src/array_vectorize/runtime/minmax.py | Updated as part of this pull request. |
| src/array_vectorize/runtime/dtype.py | Updated as part of this pull request. |
| src/array_vectorize/runtime/arith.py | Updated as part of this pull request. |
| src/array_vectorize/runtime/__init__.py | Updated as part of this pull request. |
| src/array_vectorize/pipeline.py | Updated as part of this pull request. |
| src/array_vectorize/optimize/protect_domains.py | Updated as part of this pull request. |
| src/array_vectorize/optimize/dce.py | Updated as part of this pull request. |
| src/array_vectorize/optimize/cse.py | Updated as part of this pull request. |
| src/array_vectorize/optimize/constfold.py | Updated as part of this pull request. |
| src/array_vectorize/optimize/__init__.py | Updated as part of this pull request. |
| src/array_vectorize/lower/types.py | Updated as part of this pull request. |
| src/array_vectorize/lower/statements.py | Updated as part of this pull request. |
| src/array_vectorize/lower/sanitize.py | Updated as part of this pull request. |
| src/array_vectorize/lower/loops.py | Updated as part of this pull request. |
| src/array_vectorize/lower/kinds.py | Updated as part of this pull request. |
| src/array_vectorize/lower/helpers.py | Updated as part of this pull request. |
| src/array_vectorize/lower/expressions.py | Updated as part of this pull request. |
| src/array_vectorize/lower/env.py | Updated as part of this pull request. |
| src/array_vectorize/lower/__init__.py | Updated as part of this pull request. |
| src/array_vectorize/ir/walk.py | Updated as part of this pull request. |
| src/array_vectorize/ir/ssa.py | Updated as part of this pull request. |
| src/array_vectorize/ir/nodes.py | Updated as part of this pull request. |
| src/array_vectorize/ir/__init__.py | Updated as part of this pull request. |
| src/array_vectorize/fuzz.py | Updated as part of this pull request. |
| src/array_vectorize/frontend/validate.py | Updated as part of this pull request. |
| src/array_vectorize/frontend/tables.py | Updated as part of this pull request. |
| src/array_vectorize/frontend/lambda_id.py | Updated as part of this pull request. |
| src/array_vectorize/frontend/info.py | Updated as part of this pull request. |
| src/array_vectorize/frontend/extract.py | Updated as part of this pull request. |
| src/array_vectorize/frontend/__init__.py | Updated as part of this pull request. |
| src/array_vectorize/fallback.py | Updated as part of this pull request. |
| src/array_vectorize/errors.py | Updated as part of this pull request. |
| src/array_vectorize/emit.py | Updated as part of this pull request. |
| src/array_vectorize/compat.py | Updated as part of this pull request. |
| src/array_vectorize/codegen/emitter.py | Updated as part of this pull request. |
| src/array_vectorize/codegen/docstring.py | Updated as part of this pull request. |
| src/array_vectorize/codegen/__init__.py | Updated as part of this pull request. |
| src/array_vectorize/api.py | Updated as part of this pull request. |
| src/array_vectorize/__init__.py | Updated as part of this pull request. |
| scripts/smoke.py | Updated as part of this pull request. |
| scripts/release.py | Updated as part of this pull request. |
| scripts/package_smoke.py | Updated as part of this pull request. |
| scripts/license_headers.py | Updated as part of this pull request. |
| pyproject.toml | Updated as part of this pull request. |
| Makefile | Updated as part of this pull request. |
| examples/notebooks/03_semantics.py | Updated as part of this pull request. |
| examples/notebooks/02_backends.py | Updated as part of this pull request. |
| examples/notebooks/01_intro.py | Updated as part of this pull request. |
| examples/demo.py | Updated as part of this pull request. |
| docs/supported-subset.md | Updated as part of this pull request. |
| docs/development.md | Updated as part of this pull request. |
| docs/api.md | Updated as part of this pull request. |
| AGENTS.md | Updated as part of this pull request. |
| .pre-commit-config.yaml | Updated as part of this pull request. |
| .license-header.txt | Updated as part of this pull request. |
| .github/workflows/release.yml | Updated as part of this pull request. |
| .github/workflows/ci.yml | Updated as part of this pull request. |
| .gitattributes | Updated as part of this pull request. |
| .claude/hooks/stop_gate.py | Updated as part of this pull request. |
| .claude/hooks/format_python.py | Updated as part of this pull request. |
🧠 Review effort: Lite
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
There was a problem hiding this comment.
🟡 Changes recommended
One or more issues must be addressed before approval.
1 open finding
🧠 Review effort: Lite
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
There was a problem hiding this comment.
🟡 Changes recommended
One or more issues must be addressed before approval.
1 open finding
1 resolved since last review
🧠 Review effort: Lite
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.


Adds five tooling improvements: canonical project/BSD license headers with a whole-tree checker and fixer, prek hooks, public-documentation drift checks, validated release builds with isolated wheel/sdist smoke tests, and Windows correctness CI on Python 3.12 and 3.14.
Header normalization preserves source bytes, standalone comments, leading blank lines, encoding declarations, shebangs, and line endings. Regression tests cover repeated fixes and both old and new header formats. Generated function source and golden ASTs are unchanged; the fuzzer explicitly writes UTF-8/LF source. Release tags remain manual, release notes remain generated, and building and publishing use separate permissions.
The branch incorporates current main, including the scalar-Inductor integer-minimum fix merged in #13. The original compilation regression remains enabled alongside its deterministic scalar-kernel case.
Validation: full local
CI=1 make check, all four type checkers, header checks, and commit hooks passed with 96% coverage.make lowest,make docs,make smoke, installed wheel/sdist smoke tests, and commit-subject checks were also verified during implementation. Compiler and golden AST comparisons confirm the header changes preserve their contents. Independent semantics reviews approved the scoped portability change and the runtime fix in #13.Follow-up issues: #10 (scheduled real-world differential validation) and #11 (decreasing complexity limits). Neither is implemented here.