Skip to content

ci: qualify compiler backends on clean hosts and publish compiler-specific support evidence #4825

Closed

Description

@TrapsterDK

Feature Proposal

Problem

The current language/OS support matrix and LLVM-specific consumer assertions do not prove actual Microsoft/GCC/custom backend support or independence from preinstalled developer tools.

Proposed Scope

Part of #4809. Roadmap task 16/16.

Ownership: Existing C/C++ external consumers, .github/workflows/ci.yml and generated support-matrix evidence; integration-only closure owner.

Prerequisites: #4810, #4811, #4812, #4813, #4814, #4815, #4816, #4817, #4818, #4819, #4820, #4821, #4822, #4823, #4824.

Extend existing consumer/CI and generated support facts with compiler, driver, version and execution/target identity. Parameterize LLVM-only consumer assertions while retaining their baseline coverage. Qualify the required matrix from the parent tracker using the delivered leaves; do not duplicate their implementations.

Use genuinely clean developer environments or demonstrably deny access to preinstalled toolchains; removing PATH entries alone is not proof. Test compiler/version switching, unsupported selections, a renamed independent consumer, custom toolchains, relocated execution and network-denied rebuilding with legally prepared pinned cache inputs.

Collect real native Windows x64/ARM64 and Linux x64/ARM64 execution evidence. Preserve current LLVM support on its existing five-host matrix. Include native Rust/Python and permitted-runtime package cases. Missing runner, licensing, upstream or platform facts remain explicit blockers rather than skips counted as support.

Update user-facing help/configuration examples, CI instructions and generated support records. Do not add plan/design-history documents. Hosted execution, publication, signing and deployment still need separate authorization.

Acceptance criteria

  • Each advertised compiler/host/target cell has commands, exact source SHA, versions/digests, job/artifact links and native execution outcomes.
  • Fresh Windows builds use actual provisioned cl.exe with no VS/MSVC/SDK installation; fresh Linux GCC builds use no ambient compiler/sysroot.
  • Selection/version changes, incompatible options and missing inputs produce correct actions, artifacts, reports and exits; no silent fallback or stale cache masking.
  • Real native consumers, relocation, permitted-runtime package execution and network-denied repeat builds pass with their declared prerequisites.
  • Support-matrix generation/drift checks and user docs match verified capabilities, including explicit unsupported analysis/coverage cells. All applicable leaf acceptance is verified before closure.

Alternatives Considered

A preconfigured hosted Windows runner, mocked compiler, selected platform label, cross-build or another revision's evidence is not sufficient clean/native qualification.

Compatibility Impact

Extend existing CI and consumer harnesses, preserving LLVM defaults and current supported hosts. This is the final acceptance owner, not a reason to block independent leaf implementation on the whole tracker.

Agent handoff and evidence

Read current AGENTS.md and inspect merged code before editing. Work in a focused worktree; keep shared MODULE/platform/CI wiring with the integration owner. Reuse existing libraries, upstream providers and tests. Run the repository's affected fix/test workflow, inspect JSON results, and attach exact base/final SHA, tool versions, execution/target identities and real commands/results. Keep warnings as errors and preserve user work.

Prerequisites identify delivered interfaces/primitives, not whole-tracker closure; agreed fixture/parser/scaffolding work may proceed independently. Record missing native runner, licensing or upstream evidence rather than claiming support. Filing is not authorization for license acceptance, privileged installation, hosted dispatch, signing, publication or deployment.

Research baseline: c6c0f67; verify current main before implementation.

Activity

  1. added
    enhancementNew feature or request
    needs-hostNeeds macOS, Windows, GPU, or signing secrets; not doable on Linux
    on Oct 29, 2026
  2. 26 remaining items

  3. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    MSVC hermetic evidence on windows_x86_64: run 42356052966, SHA 3a9cb66 (PR #9017).

    • c_fixture_msvc and cpp_fixture_msvc: result=qualified, dirty=false, cache_miss verdict ok, producer msvc 261.35728.
    • qualify --compiler msvc passed (qualify-msvc.json, cl 19.50.35728 for x64).

    Still open: windows_arm64 MSVC. The outer harness build under --//cc/toolchains:compiler=msvc fails in the ring build script because clang is not found (run 42351334834).

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01Xut2hzpb4qWNZKpDCrwUz7

  4. removed
    needs-hostNeeds macOS, Windows, GPU, or signing secrets; not doable on Linux
    on Nov 7, 2026
  5. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    Dispatched ci.yml on main at 6be89c9: https://github.com/devhusdk/rules_dx/actions/runs/42370685598. The hermetic, hermetic-arm64 and hermetic-windows (x86_64 and arm64) jobs give native GCC and MSVC evidence from one SHA. The ci.yml Windows job sets the msvc flag only for appcontainer_run, so the outer harness build no longer hits the arm64 ring/clang failure from run 42351334834. A docs PR citing these runs follows once they finish. Removed needs-host per the owner decision. #4817 and #4821 are closed.

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01Xut2hzpb4qWNZKpDCrwUz7

  6. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    CI run 42370685598 (6be89c9) failed on every job before reaching the qualifications: quality_runner_lib_upstream could not read tiers/cmakelint/standard.cmakelintrc (missing compile_data). #9255 fixed that on main. Re-dispatched ci.yml on main e76d6f5: https://github.com/devhusdk/rules_dx/actions/runs/42372644803 . Evidence needed from it: hermetic (linux_x86_64), hermetic-arm64, hermetic-windows (windows_x86_64, windows_arm64) with c/cpp fixtures result=qualified, dirty=false.

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01Xut2hzpb4qWNZKpDCrwUz7

  7. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    Evidence for PR #9305 (ring gets the hermetic clang-cl on aarch64-pc-windows-msvc):

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01Xut2hzpb4qWNZKpDCrwUz7

  8. added a commit that references this issue on Nov 7, 2026
    07d11fc
  9. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    Evidence for #9307. ci.yml run 42372644803 (e76d6f5) qualified GCC on linux_x86_64 and linux_arm64, and MSVC on windows_x86_64. Run 42375312749 (2660a4b) qualified MSVC on windows_x86_64 and windows_arm64. Every artifact shows result=qualified and dirty=false. Producers are GCC 16.2.0 and msvc 261.35728. The Windows Verify step rejects the evidence because the host kernel is empty. That is tracked in #9314. Coverage and analysis leftovers are tracked in #6834 and #6241.

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01Xut2hzpb4qWNZKpDCrwUz7

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Improve and finish existing featuresenhancementNew feature or requestmodel:opusAgent lane: needs planning or open design, Opus

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions