Dashboard › institutional-transition-lab › Distillation
48f1dfb3-7b8e-412e-85f1-9245422e3403["lore_tm_v1_7-uMz9o3IdJ7qaoajBVIiOJH-bxojAJAk1vCObJu5QU"]
Date: Sep 8, 2026
detectAbsFilePath should βalways be the last detector,β because every nonempty input reaches its fallback behavior.detectAbsFilePath should βalways claim everything it's given,β except an empty string.terraform-github-pr-34847 (84df5562f21ae587bbb7e9b2a1c5ada582d0ba11, merged 2024-03-14; head 625b32501cd6f637b82cd6c537033b9c3c6cabf1; 86 changed files) combined 3 changes: 1. Terraform-owned module source-address normalization, 2. moving SynthBody into package configtesting, and 3. pruning dead code from legacy/terraform to reduce indirect remote-backend dependencies.terraform-github-pr-34847 has a complete file listing, no unavailable patches, and untruncated source text, but patch_selection_truncated=true; only patches 0β5 were supplied, so file-level conclusions across all 86 changed files remain limited.#34847 moved parsing of ModuleSource, ModuleSourceLocal, ModuleSourceRegistry, and ModuleSourceRemote out of internal/addrs/module_source.go into package moduleaddrs, avoiding the heavy go-getter dependency for consumers of package addrs.go-getter changes could otherwise break Terraform. Example normalization: github.com/hashicorp/terraform-cidr-subnets β git::https://github.com/hashicorp/terraform-cidr-subnets.git.#34847 retained go-getter for actual module installation because installation is security-advisory-sensitive and shared upstream ownership allows fixes across HashiCorp products; the change affects shorthand interpretation only, not installation.#34847: Terraform-owned copies of the old detector logic were chosen to preserve v1.x behavior and remove parsing-time dependency on go-getter; continued use of go-getter detectors was rejected because Terraform must control its compatibility contract. The implementation was copied essentially verbatim with unit tests so behavior should remain unchanged.#34847: obsolete Bitbucket Git-versus-Mercurial detection and its hidden API request were removed because Bitbucket ended Mercurial support in 2020 and the Mercurial detector tests had already been removed after they began failing.internal/getmodules/getter.go, PR #34847 removed goGetterDetectors, including getter.GitHubDetector, getter.GitDetector, getter.BitBucketDetector, getter.GCSDetector, getter.S3Detector, and fileDetector; goGetterNoDetectors = []getter.Detector{} remains, while Terraform supplies its own address normalization and continues configuring the supported getter set.internal/getmodules/moduleaddrs/detect_abs_filepath.go, PR #34847 changed package getmodules to moduleaddrs and replaced the fileDetector type plus Detect(src, pwd string)/fmtFileURL(path string) methods with detectAbsFilePath(src string) (string, bool, error). Empty input returns ("", false, nil); a relative path returns MaybeRelativePathErr; an absolute path becomes file://%s on Windows after filepath.ToSlash, or file:///%s elsewhere.#34847 added internal/getmodules/moduleaddrs/detect_gcs.go with detectGCS(src string) (string, bool, error): it recognizes strings containing googleapis.com/, requires at least 5 slash-separated parts, extracts version, bucket, and object, constructs https://www.googleapis.com/storage/%s/%s/%s, and prefixes the result with gcs::; malformed inputs return URL is not a valid GCS URL or error parsing GCS URL: %s.#34847 moved SynthBody and its tests into internal/configs/configtesting/synth_body.go and internal/configs/configtesting/synth_body_test.go by changing package configs to configtesting, allowing backend tests to use the synthetic hcl.Body helper without importing the heavier configs dependency graph.#34847 pruned legacy/terraform, which remained solely to support legacy/helper/schema used by some remote-state backends; provider- and provisioner-related dead code was targeted because remote-state backends do not need it, reducing indirect backend dependencies.