Skip to content

Share the Go e2e harness through golang_e2e_matrix: go(), the file-proxy publisher, Machine/ChmodGuard and the grant mocks are copied across 5 suites #1980

Open

Description

[agent] Filed by the scheduled architecture audit (audit-cli-tests). Register: register.

Kind: refactor. Register ID: T65.

Problem

Every Go suite already includes golang_e2e_matrix/mod.rs for the toolchain gate, yet each one re-writes the rest of the harness. The two suites below are e2e_golang_build.rs (build) and e2e_vendor_golang_build.rs (vendor_build).

  • go() runner, 4 local copies plus golang_e2e_matrix::go_envs.
    • build L74-L82 and vendor_build L103 are identical.
    • The Machine variants have drifted:
      • hosted_build L97-L112
      • workspace_build L77-L93:```` this one pins GOFLAGS="" and removes `GOWORK`, and hosted doesn't.
  • File-GOPROXY publish + module zip, 5 copies.
    • build L86 and L344.
    • hosted_build L147-L178 and workspace_build L135-L166`````` are the same code apart from names.
    • vendor_build.
  • stage() and go_env. build L86-L152 and vendor_build L120 differ only in comments.
  • Machine and ChmodGuard. ChmodGuard + Drop are md5-identical in hosted_build L136 and workspace_build L119-L127. Machine differs only by a machines/ subdirectory. Separately, build and vendor_build keep a non-panic-safe chmod_writable/walkdir instead.
  • harvest_sums ×2. It has drifted on go_directive() vs a hard-coded go 1.18.
  • Hosted grant JSON and mount_sumdb ×3. See workspace_build L511-L550``````` and hosted_state L67-L105.```````` goZipDirhashH1 appears in exactly these three files.
  • Day-2 env. day2_env and day2 are 2 copies.
  • gopatch path. smod()/socket_module() are 2 copies, and the patch.socket.dev/gopatch/ literal appears in 6 files.

Proposed change

Move into golang_e2e_matrix:

  • a Proxy (publish, zip, harvest_sums);
  • Machine + ChmodGuard (replacing chmod_writable/walkdir);
  • one go(cmd_dir, env) that always pins GOFLAGS and removes GOWORK unless the caller sets them;
  • day2_env;
  • mount_go_grant/mount_sumdb;
  • a SOCKET_GO_MODULE constant.

Then delete the local copies. The workspace go() behavior (pinning GOFLAGS) becomes the default. Check that hosted_build's GOFLAGS=-mod=mod cases still set it explicitly.

Size

6 test files plus golang_e2e_matrix/mod.rs. Roughly −250 lines.

Acceptance criteria

  • The Go suites (e2e_golang_build, e2e_golang_hosted_build, e2e_golang_hosted_state, e2e_golang_workspace_build, e2e_vendor_golang_build) pass unchanged on the go-compatibility matrix rows, with SOCKET_PATCH_GO_E2E_REQUIRED=1.
  • No assertion is weakened.

Activity

  1. added
    arch-auditFiled by a scheduled architecture audit routine (see the architecture review discussion)
    refactorStructural change: duplicated code or logic, missing abstraction, layering, dead code
    on Nov 2, 2026
  2. mikolalysenko commented on Nov 2, 2026

    @mikolalysenko
    CollaboratorAuthor

    [agent] Triaged: priority:p3 (test-only refactor of the Go e2e harness). No open or merged PR addresses it. Related to #1981: if this lands first, the shared go() that always pins GOFLAGS and removes GOWORK covers part of #1981's per-suite Go env leak; #1981's hermetic Extra::Go scrub is still needed for the socket-patch children.


    Generated by Claude Code

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

    agent:triagedarch-auditFiled by a scheduled architecture audit routine (see the architecture review discussion)priority:p3refactorStructural change: duplicated code or logic, missing abstraction, layering, dead code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions