Follow-up review fixes, 2026-09-26¶
The review of ea1a53e reproduced two workflow defects. These fixes preserve the
kernel implementations and existing performance measurements.
Site output ownership¶
The site builder previously accepted any nonempty folder containing mkdocs.yml
as a previous generated build, then recursively deleted it. That also described
an ordinary MkDocs source project.
The builder now creates and checks .kernel-lab-site-build with an exact versioned
identifier before deleting a nonempty output directory. Existing unmarked builds
must be replaced using a new empty output directory. Tests exercise unrelated
MkDocs sources, invalid markers, rebuilds, and rejection of the repository root.
The deployment job runs only for the public repository; the private source copy
can still build and validate documentation.
Editable coursework and measurement provenance¶
Reference workshop reports used to fingerprint every exercise, including a CPU starter that the GPU benchmark never executed. Completing that exercise caused the main validation suite to demand new GPU measurements.
New workshop reports use schema version 2 and fingerprint the selected implementation with its shared dependencies. Validation interprets older broad manifests according to the implementation actually measured. The maintained course manifest also excludes editable starters and journals.
Old workshop reports keep their original hashes, timestamps, samples, and timings.
Their source_snapshots field points to the unchanged original runner, because
the current runner has different metadata code. Measured kernels still have to
match current sources. Tests verify that learner edits pass, measured-kernel
edits fail, missing required dependencies fail, and modified snapshots fail.
Forward-only custom ops¶
Superseded on 2026-09-30: every operator now has an autograd formula, so this describes the state of the review it belongs to. See the review record.
The plain functions reject gradient-tracking inputs at the call. PyTorch's custom
dispatcher can accept those inputs but raises on backward because these operators
have no autograd formula. The setup guide now explains the distinction and shows
inference under torch.no_grad(). A GPU regression check covers the backward
error and inference behavior for all five custom ops.
Validation¶
- Main suite on an RTX 4080 SUPER: 44 tests run, no failures, two expected skips (a second GPU is unavailable; interpreter mode runs separately).
- Checker regression suite: 15 tests passed.
- Ruff lint and formatting checks passed for 96 Python files.
- Strict MkDocs build passed.
The preceding review separately ran the interpreter, all beginner and workshop reference checks, and a fresh native CUDA build. This change does not alter kernel math or claim new performance results. The follow-up tests and report are automated validation, not an independent human sign-off.