# Dead code and obsolete functionality audit Reviewed baseline: `083bc83` on `main`. The review considered supported public facades and CLI commands, internal package callers, tests and benchmarks, maintained examples, documented decisions, and build-specific uses. Public symbols were not classified as unused merely because this repository does not call them. No production code or tests were changed. The local code graph and a source reference scan identified candidates, which were checked against current source and documentation. The graph contained a stale build-function entry and excluded `internal/build` during indexing, so its reachability results were not treated as conclusive. The scan is a candidate-finding aid rather than a proof of whole-program reachability. `go vet ./...` and the compiled public API/dependency-boundary check passed offline. No dedicated dead-code analyzer was installed. ## 1. Committed-selection identity wrapper has no callers **Relevant code:** [FromCommittedSelection](../../../internal/releaseidentity/identity.go). The repository contains no call or function-value reference to this exported internal wrapper, including in tests and maintained examples. It creates a committed-path resolver and delegates to the private `fromCommittedSelection`. The live `FromCommitted` path calls that private function directly with the resolver it already used to select the directory. The independently used `ResolveCommittedSelection` serves the CLI's asset-directory selection and must not be confused with the unused wrapper. Because Go's `internal` import restriction prevents ordinary external consumers from importing this package, this is not a root-facade compatibility removal. No documented retention or future use was found. Consider removing only the unused wrapper after confirming that no maintained in-tree integration needs it. Preserve the private implementation and the live selection APIs; the wrapper's absence does not imply that committed identity derivation is dead. ## 2. Local tag inspection helper is used only by its own test **Relevant code:** [InspectLocalTag](../../../internal/git/tag.go), its only call in [TestTagOperationsAcceptFullSlashContainingRefs](../../../internal/git/source_test.go), and the live local guard in [candidate.Recheck](../../../internal/candidate/check.go). The helper checks that a local ref identifies the captured annotated tag object, but no production caller invokes it. `candidate.Recheck` independently performs the corresponding object-ID and type checks before publication. The test calls the helper directly and then separately inspects the tagged source; the public publication guard is exercised through the candidate and publication tests. The helper is in an internal package, not the supported Go facade. No documented reason to retain this separate test-only path was found. Consider removing the unused helper and its direct test call while retaining the test's full-tag and source assertions and the live publication-guard coverage. Alternatively, evaluate using the existing helper in the live guard as part of the [shared Git inspection work](10-equivalence.md#1-source-state-observations-are-independently-implemented), provided error behavior, guard timing, and the exact captured-object check are preserved. Do not remove the live guard merely because the duplicate is unused. The `CandidateTree` accessors and root-scope constructor are also used by tests or benchmarks, but those uses exercise meaningful tree behavior; this review does not recommend removing them solely because production uses a different entry point.