Skip to content

Fence: go.sum completeness across the multi-module tree (nobody's beat today — #975 class) #976

Open

Description

@Amperstrand

#975 exposed the class: a merge can leave importers' go.sum incomplete and main still passes every gate that runs, because go.sum completeness is currently nobody's beat — check-deps-sync.py checks go.mod Require sync only, CI is frozen, and per-PR verification runs the PR's touched modules, not every importer of a changed dependency surface.

Fence shape (proposal): extend the deps checker (or the local CI gate #955 is building) with a tree-wide go build ./… per module directory — any module dir failing to build against its own go.sum is red. Cheap (builds only), deterministic, and it is exactly the #975 repro.

Acceptance: a deliberately-stripped go.sum entry in any module makes the fence fail naming the module; the current tree passes.

Activity

  1. Amperstrand commented on Oct 17, 2026

    @Amperstrand
    CollaboratorAuthor

    Fence delivered — PR #985: tests/contract/check-gosum-completeness.sh probes every module under src/ with go build ./... from inside the module dir (GOWORK=off, -mod=readonly), ~2s warm for all 18, fails naming modules + quoting the missing-entry lines. Both negative controls proven: the hermetic --selftest (graph-derived victim dependency — the naive last-line strip was tried and did NOT fail, so the fixture derives its victim from go list -deps to stay rot-proof), and the live one — on current main it is RED on exactly merchant_types / upstream_detector / upstream_session_manager (the #975 breakage), per this mission's battery rule. Sequencing for the owner: land #975 first → this PR's lanes go green; either order proves the fence. Wired into release-check's deps leg + both test.yml twins' deps-and-imports (twins have pre-existing drift on main — noted in the PR, not touched). No merges performed.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions