open-standards/.github/workflows
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claude e4edd51f49
Some checks failed
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 8s
jouleclaw fabrics / cuda (linux, RTX 4050 + Vulkan loader) (pull_request) Successful in 15s
jouleclaw fabrics / vulkan (linux, RTX 4050 + Vulkan loader) (pull_request) Successful in 16s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m7s
standards workspaces build + test / mesh-rs (mesh/mesh-rs, -p mesh-engine-gguf -p mesh-openai --features mesh-engine-gguf/gguf,mesh-openai/server, mesh-rs, linux-arm64) (pull_request) Successful in 1m13s
standards workspaces build + test / jouleclaw-rs (-nodebug, jouleclaw/jouleclaw-rs, -p jouleclaw-energy --features rapl,nvml, jouleclaw-rs, linux-arm64, -C target-feature=+fp16) (pull_request) Successful in 2m47s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 1m16s
jouleclaw fabrics / metal (macOS, Apple GPU) (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
standards workspaces build + test / jouledesk-rs (jouledesk/jouledesk-rs, jouledesk-rs, macos) (pull_request) Has been cancelled
jouleclaw-omni: read mmap'd GGUF bytes without assuming their alignment
`clippy::cast_ptr_alignment` flagged eight casts from `*const u8` to
more-strictly-aligned pointers. The previous commit allowed the lint
crate-wide with a note that GGUF aligns tensor data in practice. That
note was true and the reasoning was still wrong: these functions take
plain `&[u8]` slices and a `metal::Buffer`, and neither carries the
alignment the cast asserts.

    let src_f32 = std::slice::from_raw_parts(src.as_ptr().cast::<f32>(), src.len() / 4);

`src` is an mmap'd region at whatever offset the file chose. Misaligned
`from_raw_parts` is undefined behaviour, not a slow load, and the
compiler is entitled to assume it cannot happen.

The three that looked safest were the least safe to reason about:
`contents()` on a buffer built with `new_buffer_with_bytes_no_copy` is
the mmap'd pointer itself, so "it's a Metal allocation, those are page
aligned" does not hold for them either.

All eight now decode byte-wise through `from_le_bytes` over
`as_chunks::<N>()`, which needs no unsafe alignment claim at all --
`u8` has alignment 1. The two staging loops keep one cast each, for the
destination, which really is a fresh Metal allocation; the comment says
which side is which and why. The crate-level allow is gone, and
`clippy -- -D warnings` passes without it.

Four unit tests, because the rewrite moved every byte index and a wrong
one would be silent:

- the bf16 and f32 buffer walks must agree with the scalar converters
  element for element, over zero, ±1, pi, +inf, a NaN and f16's max;
- conversion from an odd offset on BOTH sides, which is the case the old
  code could not express without UB;
- a trailing partial element is dropped rather than read past the end.

The metal CI job also now runs every target under `--features metal`.
It ran only `--test metal_kernels`, which left the crate's 46
metal-gated lib tests unrun -- a feature's unit tests being as invisible
to CI as its code was is the same mistake one level down. That job now
runs 48 lib tests and the 26 kernel tests.

Still outstanding from the same sweep: `mut_from_ref` on
`MetalBuffer::as_mut_slice(&self)`, which hands out a `&mut` from a `&`.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-20 17:09:37 -04:00
..
conformance.yml ci: thirteen WAI workflows run only when the pull request's own diff touches them 2026-10-14 03:41:49 -04:00
energy-hardware.yml ci: run the new platform-gated meter tests where their platform is 2026-10-10 18:11:22 -04:00
joule-code-conformance.yml CI: e2ee_verify.py in the independent verifiers; the sealed objects and joule-moq-mls in the joule-code gate 2026-10-19 20:58:29 -04:00
joule-moq-room.yml joule-moq-room CI; READMEs, the example configuration and the changelog for L5c-2 2026-10-19 06:11:07 -04:00
joule-moq-web.yml joule-moq-room CI; READMEs, the example configuration and the changelog for L5c-2 2026-10-19 06:11:07 -04:00
jouleclaw-fabrics.yml jouleclaw-omni: read mmap'd GGUF bytes without assuming their alignment 2026-10-20 17:09:37 -04:00
jouleclaw-public-surface-documented.yml ci: one run per branch at a time — no workflow declared a concurrency group 2026-10-05 12:01:57 -04:00
repo-checks.yml ci: one job for the repository's script checks 2026-10-14 12:05:46 -04:00
standards-build.yml Merge origin/main into feat/metal-ratchet 2026-10-20 15:49:24 -04:00
wai-byte-equality.yml int_mlicpp gate 2: the bundle decodes through wmb1/1 to its goldens 2026-10-15 21:44:10 -04:00
wai-conformance.yml Merge remote-tracking branch 'origin/main' into wai/live-ads 2026-10-20 13:07:05 -04:00
wai-energy-receipts.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-formal-verification.yml WIV1 and WIR1 gate 7 (WIP, committed before running): the direct predictors and step leave production 2026-10-17 12:04:26 -04:00
wai-fuzz.yml wai: coverage-guided fuzzing of the reader, and the container reservations it found 2026-10-14 10:58:29 -04:00
wai-http.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-jpegai-e2e.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-neural-e2e.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-neural-gates.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-ops-differential.yml wai: D2c M7b gate 4: the networks against the direct networks, on random networks 2026-10-18 01:07:07 -04:00
wai-ops.yml ci: thirteen WAI workflows run only when the pull request's own diff touches them 2026-10-14 03:41:49 -04:00
wai-pack.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-cuda.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-dataflow.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-dsp.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-fpga.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-hip.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-metal.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-npu-cores.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-npu.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-opencl.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-processors.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-qpu.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-service.yml wai-quantum 0.6.4: the dense state vector in single precision on the GPU, tiled; the service's statevector_single method 2026-10-18 10:20:40 -04:00
wai-quantum-sme.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-tensor-engine.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-tensor-program.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-vector.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-quantum-webgpu.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-sota-vectors.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-vector.yml ci: thirteen WAI workflows run only when the pull request's own diff touches them 2026-10-14 03:41:49 -04:00
wai-web-reach.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00
wai-web-wasm.yml ci: run each suite for what can affect it; re-runs after a merge become nightly 2026-10-19 02:49:11 -04:00