Files
2026-04-05 15:15:32 +03:00

5.5 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, decisions, metrics
phase plan subsystem tags requires provides affects tech-stack key-files decisions metrics
04-input-sources 01 build-system
dependencies
bootstrap
wave-0
go-git/v5 module available for git history traversal
atotto/clipboard module available for cross-platform clipboard
golang.org/x/exp/mmap available for memory-mapped large file reads
go.mod
go.sum
added patterns
github.com/go-git/go-git/v5 v5.17.2
github.com/atotto/clipboard v0.1.4
golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90
created modified
go.mod
go.sum
Ran go get + go mod download (not go mod tidy) so unused modules remain pinned until Wave 1 imports them
Accepted `// indirect` markers on all three modules — they will be promoted to direct requires when plans 04-02/04-03/04-04 add imports
duration completed tasks_completed files_modified
~1 min 2026-04-05 1 2

Phase 4 Plan 1: Dependency Bootstrap Summary

Added three external Go modules (go-git/v5, atotto/clipboard, x/exp/mmap) that Phase 4 input-source plans require, so Wave 1 parallel work can compile cleanly without dependency resolution thrash.

Objective

Resolve and record the three external Go dependencies needed for Phase 4 input sources — git history (INPUT-02), clipboard (INPUT-05), and memory-mapped large file reads (CORE-07) — in go.mod/go.sum so downstream plans compile on first attempt.

What Was Built

Task 1: Add go-git, clipboard, x/exp/mmap (commit 0f30c0d)

Resolved the three modules via go get at @latest:

Module Version Purpose
github.com/go-git/go-git/v5 v5.17.2 Git history traversal (INPUT-02)
github.com/atotto/clipboard v0.1.4 Cross-platform clipboard (INPUT-05)
golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90 mmap subpackage for CORE-07

Transitive additions pulled in by go-git: dario.cat/mergo, Microsoft/go-winio, ProtonMail/go-crypto, cloudflare/circl, cyphar/filepath-securejoin, emirpasic/gods, go-git/gcfg, go-git/go-billy/v5, golang/groupcache, jbenet/go-context, kevinburke/ssh_config, pjbgf/sha1cd, sergi/go-diff, skeema/knownhosts, xanzy/ssh-agent, gopkg.in/warnings.v0.

All three target modules are listed in go.mod under the indirect require block; they will be promoted to direct requires automatically by go mod tidy when Wave 1 plans add import statements.

Verification Results

  • go build ./... — exit 0
  • go vet ./... — exit 0
  • grep -c "go-git/go-git/v5\|atotto/clipboard\|golang.org/x/exp" go.mod → 3
  • go.sum contains checksums for all three modules and their transitive deps

Deviations from Plan

[Rule 3 - Blocking] Skipped go mod tidy

  • Found during: Task 1 verification
  • Issue: The plan's step sequence ended with go mod tidy, but tidy removes modules with no importing source file. Running it erased all three target modules from go.mod entirely (not even indirect), failing the acceptance criteria (grep "github.com/go-git/go-git/v5" go.mod returned nothing).
  • Fix: Re-added the three modules with go get, then ran go mod download (which populates go.sum without pruning unused modules) instead of go mod tidy. All three modules are now recorded as // indirect in go.mod — they will be auto-promoted to direct requires by the first Wave 1 plan that imports them.
  • Files modified: go.mod, go.sum
  • Commit: 0f30c0d
  • Rationale: The plan explicitly stated "If go mod tidy moves a module to indirect, that is acceptable only if no source file yet imports it" — so indirect status is an allowed outcome. go mod download achieves the same checksum registration while keeping the modules in go.mod.

Decisions Made

  1. Skip go mod tidy for bootstrap commits — Use go mod download instead when adding deps ahead of their consumers, so modules stay pinned in go.mod.
  2. Accept indirect status — Wave 1 plans will promote these three modules to direct requires when they add import statements; no manual edit needed now.

Files Modified

  • go.mod — 3 target modules + 16 transitive modules added
  • go.sum — checksums for all new modules

Known Stubs

None. This plan only touches module declarations; no source code, no stubs.

Metrics

Metric Value
Tasks completed 1/1
Commits 1 (0f30c0d)
Files modified 2 (go.mod, go.sum)
Duration ~1 minute
Deviations 1 (Rule 3 — skip mod tidy)

Next Steps

Wave 1 plans (04-02 git source, 04-03 url source, 04-04 clipboard source, plus CORE-07 mmap reader) can now import from these modules without running their own go get. go mod tidy will naturally promote them to direct requires as their first import lands.

Self-Check: PASSED

  • FOUND: go.mod contains github.com/go-git/go-git/v5 v5.17.2
  • FOUND: go.mod contains github.com/atotto/clipboard v0.1.4
  • FOUND: go.mod contains golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90
  • FOUND: commit 0f30c0d in git log
  • VERIFIED: go build ./... exits 0
  • VERIFIED: go vet ./... exits 0