fix: restore workspace build (llvm-cov) + resolve pre-existing CI failures at source#129
Merged
Merged
Conversation
…build) PR #127 added the `CheckError::ResourceViolation` variant but missed the exhaustive `match` in `my-lsp::extract_error_location`, so `my-lsp` failed to compile in a full `cargo --workspace` build (error[E0004], non-exhaustive patterns). `cargo test -p my-lang`/`-p my-qtt` didn't catch it because they never build my-lsp. This is the true root cause of the `llvm-cov` "no profraw files" failure: the coverage job runs `cargo llvm-cov --no-report --workspace --exclude my-llvm`, which couldn't build my-lsp, so no tests ran and no profraw data was produced — surfacing only as the downstream report-step error. Adding the missing arm restores the workspace build; `cargo test --workspace --exclude my-llvm` is green again. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV
…zLite Dockerfile
Fixes several pre-existing CI failures at their source:
- LICENSE: add `SPDX-License-Identifier: MPL-2.0` header so the standards
`check-licence-consistency.sh` (governance / Licence consistency) passes —
it requires an SPDX header on the first lines for downstream scanners.
- Resolve unresolved git merge-conflict markers left in three files:
* CONTRIBUTING.md — kept the `my-lang` side (HEAD's `my-lang-archive` is a
stale repo name; this repo is `my-lang`);
* .clusterfuzzlite/build.sh and .clusterfuzzlite/Containerfile — kept the
`$SRC/my-lang` layout (matches project.yaml main_repo).
- ClusterFuzzLite (PR (address)/(undefined)): the google/clusterfuzzlite
actions build from `.clusterfuzzlite/Dockerfile` by hard-coded convention,
but the repo only had a (conflict-broken) `Containerfile`, so the image
build failed. Replace it with a clean `Dockerfile` + a corrected `build.sh`
that compiles the cargo-fuzz target in `fuzz/` and stages each binary into
$OUT. (Build verified by inspection against the OSS-Fuzz Rust pattern;
the full image build needs the OSS-Fuzz base image, not runnable locally.)
Not addressable here (upstream): the Hypatia checks fail because the Hypatia
analyzer itself does not compile — `undefined variable "real_subdirs"` at
`lib/rules/structural_drift.ex:1019` in hyperpolymath/standards. The fix
belongs in that repo; nothing in my-lang triggers it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV
hyperpolymath
added a commit
that referenced
this pull request
Jun 27, 2026
…` sanitizer (#130) ## What Follow-up to #129. #129 fixed the ClusterFuzzLite **build** (clean `Dockerfile` + `build.sh`), and CI confirmed it works — the image builds and `fuzz_main` compiles + stages. The only remaining red was the **`undefined` sanitizer** matrix variant: ``` BAD BUILD: UBSan build of fuzz_main seems to be compiled with ASan. ERROR: 100.0% of fuzz targets seem to be broken. ``` This is fundamental, not a config typo: **Rust/cargo-fuzz cannot emit a valid UndefinedBehaviorSanitizer binary** — it links ASan regardless — so OSS-Fuzz's `bad_build_check` rejects it. The `undefined` job could never produce real UBSan coverage. Standard Rust OSS-Fuzz practice is ASan-only. ## Changes - `cflite_pr.yml` / `cflite_batch.yml`: matrix `sanitizer: [address]` — removes the broken `PR (undefined)` job. - `.clusterfuzzlite/project.yaml`: `sanitizers: [address]`. - `.clusterfuzzlite/build.sh`: pass `--sanitizer "${SANITIZER:-address}"` explicitly. Each change carries an inline comment explaining the Rust/UBSan limitation. The `address` variant (whose build already works per #129) is retained, so ASan fuzzing continues. ## Verification `bash -n .clusterfuzzlite/build.sh` OK; config greps confirm `[address]` everywhere. The full OSS-Fuzz image build isn't runnable in this environment, so this is correct-by-spec — the `address` job exercises it in CI. ## Out of scope (separate, tracked) The `Validate Hypatia Baseline` red is the pre-existing Hypatia backlog (issue #34): the now-working analyzer reports 25 findings ≥ medium against an empty `.hypatia-baseline.json`. Resolving it needs the actual findings (artifact `hypatia-scan-findings`/the Security tab), which aren't reachable from the CI sandbox — to be fixed at source once the list is in hand, per the repo's fix-don't-suppress discipline. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV --- _Generated by [Claude Code](https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV)_ Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Deals with the pre-existing CI failures at source, in scope order. Summary of every red and its disposition:
llvm-cov"no profraw"CheckError::ResourceViolationmade amatchinmy-lspnon-exhaustive, socargo --workspacecouldn't build → no tests ran → no profrawcargo test --workspace --exclude my-llvmgreengovernance / Licence consistencyLICENSEhad no SPDX headerSPDX-License-Identifier: MPL-2.0PR (address)/PR (undefined)(ClusterFuzzLite).clusterfuzzlite/Containerfilewas conflict-broken and misnamed (the action builds fromDockerfile)Dockerfile+ correctedbuild.sh; removed brokenContainerfile<<<<<<</=======/>>>>>>>inCONTRIBUTING.md,.clusterfuzzlite/{Containerfile,build.sh}my-langside; HEAD'smy-lang-archiveis a stale name)scan / Hypatia+Validate Hypatia Baselineundefined variable "real_subdirs"atlib/rules/structural_drift.ex:1019inhyperpolymath/standardsstandards; nothing in my-lang triggers itHonesty notes
llvm-covearlier as "not caused by this PR." It was — the "no profraw" was a downstream symptom ofmy-lspfailing to build under--workspace. My local-p my-lang/-p my-qttruns never builtmy-lsp, so they missed it. This PR fixes it and I've verified the full workspace build + tests.standards: bind/definereal_subdirsbefore its use atstructural_drift.ex:1019(looks like a variable that was renamed/dropped).Verification
cargo test --workspace --exclude my-llvm→ all crates green (my-lsp 5, my-lang 153, my-qtt 25, …).bash -n .clusterfuzzlite/build.shOK; LICENSE SPDX header present.🤖 Generated with Claude Code
https://claude.ai/code/session_01BwV2DWsjkBiNP3oscimMLV
Generated by Claude Code