Skip to content

go: Go format and lint consumer tests pass on all five native cells #5152

Open

Description

@TrapsterDK

Part of #1265. Needs #5137 and #5144.

Problem

The Go format and lint consumer tests only run on Linux x86_64. #1265 requires the Go tools to pass on all five native cells.

Where

  • quality/tests/BUILD.bazel:1447-1470 (go_consumer_test, target_compatible_with = _LINUX_X86_64).
  • quality/tests/BUILD.bazel:11-14 (_LINUX_X86_64).
  • tools/coverage/cells.txt (the five cells).

Fix

  • Once the modfmt and lint cases from the sibling issues land, widen go_consumer_test to every cell and run it on each native runner.
  • Fix or file any per-host failure (Windows paths, arm64 tool builds).

Done when

  • bazel test //quality/tests:go_consumer_test passes on Linux x86_64, Linux arm64, macOS arm64, Windows x86_64 and Windows arm64 at one SHA, with job links posted here.
  • The target_compatible_with restriction is removed.

Activity

  1. added
    needs-hostNeeds macOS, Windows, GPU, or signing secrets; not doable on Linux
    P2Improve and finish existing features
    model:humanNeeds real hosts, secrets, releases, upstream PRs or an owner decision
    model:sonnetAgent lane: scoped change with stated design, Sonnet
    and removed
    model:humanNeeds real hosts, secrets, releases, upstream PRs or an owner decision
    on Nov 1, 2026
  2. TrapsterDK commented on Nov 3, 2026

    @TrapsterDK
    CollaboratorAuthor

    Blocked: needs #5137 and #5144 (both still open) before go_consumer_test is widened. Done-when also needs job links from all five native runners, which cannot be produced locally.

  3. TrapsterDK commented on Nov 4, 2026

    @TrapsterDK
    CollaboratorAuthor

    Plan (agent): size S
    Decision: the nested go_consumer_test is gone (deleted in 9ccfe7d / #5307 under #5291), so prove the Go tools per cell with the in-repo runner-matrix and real-result cases that already replace it. gofumpt (matrix_go_format_*) and govet/errcheck/gotype/staticcheck (real_result_*, #5143/#5668) are already flagged for all five cells. The only gap is modfmt: both of its matrix cases are Linux x86_64 only, but GO_MODFMT_FORMAT_SUPPORT claims all five platforms as qualified. This no longer needs #5137 (closed) or #5144.
    Rejected: bring back a nested go_consumer_test and widen it (goes against #5291, no nested consumer tests); close as obsolete (leaves the modfmt claim on 4 cells with no evidence); narrow the modfmt claim to linux_x86_64 (dx_modfmt is pure Go, so there is no reason to drop cells).
    Cause: quality/testdata/runner_matrix_file_family.bzl:1137-1158 (matrix_go_module_format_pass/_fail have no platform flags) against quality/support.bzl:670-682 (modfmt claims five platforms). quality/support_tests.bzl:323-327 checks only the four analyzers, so nothing caught the gap.
    Change:

    1. quality/testdata/runner_matrix_file_family.bzl: matrix_go_module_format_pass and matrix_go_module_format_fail: add linux_arm64, macos_arm64, windows_x86_64, windows_arm64 = True, the same as the gofumpt cases in runner_matrix_native.bzl:292-340.
    2. quality/support_tests.bzl:323-327: widen "Go analyzer claims are proven" to "Go tool claims are proven" and add gofumpt and modfmt to the tool list, so a Go claim with no case per cell fails the test.
    3. Native evidence: dispatch .github/workflows/evidence.yml on the PR branch with platforms = all five and scope = the targets below. Post the five job links here at one SHA.
      Tests: tools/dx test //quality:support_unit //quality/testdata:matrix_go_module_format_pass //quality/testdata:matrix_go_module_format_fail //quality/testdata:matrix_go_format_pass //quality/testdata:matrix_go_format_fail //quality/testdata:matrix_go_format_syntax_fail //quality/testdata:real_result_govet_clean //quality/testdata:real_result_govet_dirty //quality/testdata:real_result_errcheck_clean //quality/testdata:real_result_errcheck_dirty //quality/testdata:real_result_gotype_clean //quality/testdata:real_result_gotype_dirty //quality/testdata:real_result_staticcheck_clean //quality/testdata:real_result_staticcheck_dirty //go/tools/modfmt:modfmt_test
      Host: windows and macos. Use an evidence.yml run on linux_arm64, macos_arm64, windows_x86_64 and windows_arm64 with the scope above. If a Windows cell fails before the Go targets build because of build: //cli/cli:dx fails on Windows again with '.rmeta is not writeable' in the exec config (#3312 regression) #4850 (rmeta not writeable), merge the code change anyway, link the run here, and keep this issue open until build: //cli/cli:dx fails on Windows again with '.rmeta is not writeable' in the exec config (#3312 regression) #4850 is fixed. Fix any real Go-specific failure (path separators, CRLF) in go/tools/modfmt/main.go and add a modfmt_test case for it.
      Upstream: none.
      Done when: the Go tool claims check passes, all five cells are green for the scope above at one SHA, and the links are posted here. The target_compatible_with item in the body is obsolete because that target no longer exists.
      Follow-up (not in this PR): go: consumer test runs govet, errcheck and staticcheck on a multi-package module #5144 rests on the same deleted nested test. It should be rescoped to real-result cases on a multi-package fixture with a go_deps module and a generated source.
  4. removed
    blockedWaiting on upstream or a design decision
    on Nov 4, 2026
  5. TrapsterDK commented on Nov 5, 2026

    @TrapsterDK
    CollaboratorAuthor

    origin/main already has the code change (b94ad34, #6636: modfmt matrix cases on all five cells, support test covers gofumpt and modfmt). Remaining is native evidence: an evidence.yml run on all five platforms at one SHA, which cannot be produced locally. Leaving open.

    Assisted by Claude.

  6. TrapsterDK commented on Nov 5, 2026

    @TrapsterDK
    CollaboratorAuthor

    Evidence rounds on origin/main (code change already landed in b94ad34), scope = Plan list, no cell green yet:

    • 41998610702 (all five): GitHub download 504s on every cell.
    • 41999930886: macos llvm fetch, windows_x86_64 rules_kotlin download, windows_arm64 python toolchain (yamllint) missing.
    • 42001514826: linux_arm64 real_result_staticcheck_dirty fails ("staticcheck output is outside the pinned grammar: finding lacks a code"); windows_x86_64 bazel_tools proguard_allowlister py_binary analysis; windows_arm64 //quality/tools/python:yamllint no matching toolchain; macos_arm64 ocaml dx_ocaml_macos_arm64 stdlib_cmis error.
      The scope pulls unrelated toolchains (ocaml, python, jdk) on Windows/macOS, so narrowing scope to the Go targets with fewer deps would help. No PR: no code diff. Stays blocked.

    Assisted by Claude.

  7. removed
    blockedWaiting on upstream or a design decision
    on Nov 5, 2026
  8. TrapsterDK commented on Nov 5, 2026

    @TrapsterDK
    CollaboratorAuthor

    Unblocked: #5137 and #5144 closed.

  9. 12 remaining items

  10. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    PR #9282 merged (MODULE.bazel use_repo fix); the module now loads. Evidence run 42374110494 (macos_arm64, windows_arm64) still fails, so this stays open. No nested consumer test was added.

    • macos_arm64 (job 128408077804): Loading failed for the real_result_{govet,errcheck,gotype,staticcheck} targets; first underlying error not captured. Known suspect: ocaml stdlib_cmis glob 'lib/.so'.
    • windows_arm64 (job 128408077981): matrix_go_format_syntax_fail golden mismatch (gofumpt exit 2 with no diff markers, gofmt_syntax.go:4:41 expected ';'); Analysis failed for //go/tests/fixtures/{govet,gotype,errcheck,staticcheck}. Known suspect: missing LuaLS archive on windows_arm64.

    Blocked on: the two causes above.

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01Xut2hzpb4qWNZKpDCrwUz7

  11. github-actions commented on Nov 7, 2026

    @github-actions

    This issue has the blocked label but no Blocked on: line in its body. Add one naming the blocking issue (#N), a pull request URL, or the owner action. See CONTRIBUTING.md.

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

    @TrapsterDK
    CollaboratorAuthor

    macos_arm64 failure in 42374110494 was the php macos pin (older SHA); main's pin 1ece0162 matches the live archive. Re-dispatched narrow Go scope on macos_arm64 + windows_arm64 at 46d4b4a: run 42378289008. Known windows_arm64 causes from 42374110494: aspect implicit deps (selene, deadnix, topiary, weeder) not valid executables on windows_arm64; rules_py cryptography sdist_build lacks python_3_13_aarch64_pc_windows_msvc; matrix_go_format_syntax_fail golden mismatch.

    Blocked on: run 42378289008 result (windows_arm64 aspect deps and sdist_build toolchain if it still fails).

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01Xut2hzpb4qWNZKpDCrwUz7

  14. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    Blocked on: macos_arm64 (registry cache size, prost -lm link) and windows_arm64 (MSYS2 libyaml loading errors). Run 42381013335, PR #9332.

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01Xut2hzpb4qWNZKpDCrwUz7

  15. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    PR #9341 patches rules_py so it can see python_3_13_aarch64_pc_windows_msvc. That was the real windows_arm64 loading error (cryptography sdist_build); the MSYS2 libyaml output was noise. Upstream: aspect-build/rules_py#1676. Evidence run 42382327062 (macos_arm64, windows_arm64, 14 Go targets): https://github.com/devhusdk/rules_dx/actions/runs/42382327062 . macOS -lm: #9339. cryptography source build on windows_arm64: #9340.

    Blocked on: run 42382327062 result.

    Assisted by Claude.

  16. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    Run 42382327062 at 8f5e2a4 (PR #9341, merged as 74d3708), with the 14 Go targets:

    Both jobs still show as failed because the save-registry-cache size check fails (cache is 149 MB on macOS and 213 MB on Windows, limit 50 MB). A separate PR fixes that, and the evidence step itself passed.

    Remaining for Done when: all five cells green at one SHA (Linux x86_64, Linux arm64 and Windows x86_64 need to run alongside these two at the same SHA).

    Assisted by Claude.

  17. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    Evidence run 42384304291 on main at 681c1fa (14 Go targets, all five cells): NOT all green, issue stays open.

    • macos_arm64: pass (job 128438346574).
    • linux_x86_64 (job 128438346591): fails at load, php pin checksum mismatch: no such package '@@+php+dx_php_linux_amd64//': Error downloading https://dl.static-php.dev/v3/php-bin/gnu-bulk/php-8.5.12-cli-linux-x86_64.tar.gz (Checksum was 3c932354...). No tests ran.
    • linux_arm64 (job 128438346479): same, +php+dx_php_linux_arm64 php-8.5.12-cli-linux-aarch64.tar.gz checksum mismatch (was ed2ae18b...). No tests ran.
    • windows_x86_64 (job 128438346496): invalid registered toolchain '@local_config_winsdk//:all' while resolving toolchains for every target (e.g. //quality/testdata:matrix_go_format_syntax_fail). No tests ran.
    • windows_arm64 (job 128438346590): same winsdk toolchain error (e.g. //go/tools/modfmt:modfmt_test). No tests ran.

    No Go-specific failure; all four failures are pre-test toolchain/pin issues.

    🤖 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 featuresblockedWaiting on upstream or a design decisionmodel:sonnetAgent lane: scoped change with stated design, Sonnet

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions