jouleclaw-backend-apple: 84 clippy warnings -> 0, and -D warnings now covers both configurations #437

Merged
dcharlot merged 2 commits from fix/backend-apple-lints into main 2026-11-01 07:42:04 -05:00

2026-10-22

Claude
jouleclaw-backend-apple: 0 warnings, and the gate covers both configurations
All checks were successful
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 59s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 5s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 37s
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 3m18s
standards workspaces build + test / joulecontract-rs (joulecontract/joulecontract-rs, joulecontract-rs, linux-arm64, true) (pull_request) Successful in 1m11s
standards workspaces build + test / arl-rs (arl/arl-rs, arl-rs, linux) (pull_request) Successful in 1m13s
standards workspaces build + test / aac-rs (aac-conformance, aac/aac-rs, aac-rs, linux-arm64) (pull_request) Successful in 4m18s
standards workspaces build + test / map-rs (map-conformance, map/map-rs, map-rs, linux-arm64) (pull_request) Successful in 1m19s
standards workspaces build + test / eoc-rs (eoc/eoc-rs, -p eoc-meter --features cuda, eoc-rs, linux) (pull_request) Successful in 2m10s
standards workspaces build + test / jcp-rs (jcp-conformance, jcp/jcp-rs, -p jcp-energy --features nvml, jcp-rs, linux) (pull_request) Successful in 2m2s
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 1m27s
standards workspaces build + test / joule-ui-rs (joule-ui/joule-ui-rs, joule-ui-rs, linux) (pull_request) Successful in 1m11s
standards workspaces build + test / joulehook-rs (joulehook/joulehook-rs, joulehook-rs, linux) (pull_request) Successful in 1m14s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 5m6s
standards workspaces build + test / pool-rs (pool/pool-rs, pool-rs, linux) (pull_request) Successful in 1m7s
standards workspaces build + test / proof-rs (proof-conformance, proof/proof-rs, proof-rs, linux, true) (pull_request) Successful in 1m50s
standards workspaces build + test / sense-rs (sense/sense-rs, sense-rs, linux) (pull_request) Successful in 1m11s
standards workspaces build + test / sandbox-rs (sandbox-conformance, sandbox/sandbox-rs, sandbox-rs, linux) (pull_request) Successful in 2m25s
standards workspaces build + test / openpay (openpay, openpay, linux-arm64) (pull_request) Successful in 8m30s
standards workspaces build + test / smart-byte-rs (smart-byte/smart-byte-rs, smart-byte-rs, linux) (pull_request) Successful in 4m27s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 8m25s
standards workspaces build + test / jouledesk-rs (jouledesk/jouledesk-rs, jouledesk-rs, macos) (pull_request) Successful in 2m52s
10 -> 0, and the `-D warnings` step now lints loader-gguf under
`rayon fabric-meter` as well as on default, plus backend-apple on its
own. That closes the per-configuration lint hole #373 opened and #414
halved.

The last ten, all in mps_matmul.rs:

- `struct PipelineCell` with its `unsafe impl Send`/`Sync` was never
  constructed and mentioned nowhere else -- scaffolding for a OnceLock
  wrapper the pipelines ended up doing directly. Removed, and the space
  reused for a `KeepAlive` alias, which is what the two `type_complexity`
  warnings wanted: the inline form is three generic layers deep and
  appeared twice.
- `DeviceKvCache` had a public `len` and no `is_empty`.
- three `let qk_pipe = qk_pipe;` no-op rebindings from a refactor.
- `too_many_arguments` and `needless_range_loop` allowed crate-wide, the
  same two decisions omni and loader-gguf already record and for the same
  reasons: a GPU dispatch signature is its kernel's parameter list, and
  these kernels walk several buffers at one index.

The comment this replaces in standards-build.yml claimed the fabric-meter
configuration could not be gated because backend-apple's warnings "are
unused in THAT configuration and needed in others, so they want cfg work
rather than deletion". Measuring the crate directly refuted both halves:
it has no `[features]` at all, so there is one configuration, and the
count was 84 rather than the 43 that leaked through loader-gguf's lint.

Verified: all ten lint specs in the step pass, 37 backend-apple tests
(32 pass, 5 ignored), 343 loader-gguf tests, 77 omni tests.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-22 06:58:23 -04:00
Claude
jouleclaw-backend-apple: 84 clippy warnings -> 10
#414 left this crate as the reason the `-D warnings` gate covers
loader-gguf on default features only: clippy reports it through the path
dependency, so gating the `fabric-meter` configuration needs it clean too.

I described its warnings in #414 as "unused in THAT configuration and
needed in others, so they want cfg work rather than deletion". That was
wrong on two counts, and measuring it directly settled both:

- the crate has NO `[features]` at all, only a macOS-conditional
  dependency block, so there is one configuration and the unused items
  are unconditionally unused;
- there are 84 of them, not 43. The 43 was what leaked through
  loader-gguf's lint, not the crate's own count.

82 of the 84 are in mps_matmul.rs.

41 came from clippy's own suggestions (manual_is_multiple_of 23,
unnecessary_cast 8, needless_option_as_deref 3, excessive_precision,
doc_lazy_continuation, double_parens, chunks_exact_to_as_chunks).

The other 42 -- 27 `unused_unsafe` and 15 `unused_imports` -- carry no
machine-applicable suggestion at all. Neither `clippy --fix` nor
`cargo fix` touches them, with or without `--all-targets`. They are
plain code, not macro expansions, so they were fixed line-guided from
rustc's own line numbers:

- `|| unsafe { .. }` -> `|| { .. }` where objc2 0.6 made the call safe.
  Dropping a block rustc has already proved redundant cannot change
  behaviour.
- `use objc2_metal::{MTLComputePipelineState as _, MTLLibrary as _}` ->
  just the name the function needs. The unused one is a trait brought in
  as `_`; the type itself is referenced fully qualified on the lines
  above, which is why it reads as used at a glance.

Checked before deleting, because this is the shape that broke #372: each
unused import was matched against every other mention of the name in its
file and against the file's six `cfg(not(target_os = "macos"))` branches.
None appears in one, and objc2-metal is a macOS-only dependency, so no
other configuration can want them.

Verified: 0 errors, 37 backend-apple tests (32 pass, 5 ignored), and
loader-gguf still builds and its fabric-meter `process_calibration`
passes.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-22 06:55:59 -04:00