Finish the lint remediation: script/cibuild exits 0 (closes #61) #77

Merged
clawbot merged 4 commits from lint-remediation-final into main 2026-08-09 04:25:11 +02:00
7 changed files with 34 additions and 15 deletions
Showing only changes of commit efb0cea1c2 - Show all commits

30
TODO.md
View File

@@ -14,16 +14,36 @@ pre-1.0
# Next Step
Reconcile the uncommitted ARCHITECTURE.md edits on main: finish and
commit, or revert.
Triage the stale remote branches (issue #71): for each, merge the work
or delete the branch.
# Completed Steps
- 2026-08-09: Finished the lint remediation under the canonical
`.golangci.yml` (issue #61, which also unblocks issue #59). The
remaining findings were fixed behavior-preservingly: `wsl_v5`
whitespace, `sqlclosecheck`, and `prealloc`. The `sqlclosecheck` sites
now close `sql.Rows` in a deferred closure instead of via the
`CloseRows` helper, which the linter could not see through. Only the
`revive` package-name findings remain suppressed, with per-site
`//nolint` directives; the package-rename question behind them is
tracked in issue #76. Verified with `script/cibuild`, which exits 0 —
that is the only trustworthy gate, because `script/lint` runs whatever
`golangci-lint` happens to be on `PATH` rather than the pinned
v2.12.2 that CI and the `Dockerfile` use, so `make check` can report
green on findings CI still fails. That tooling gap is tracked in issue
#78.
- 2026-08-09: The earlier next step "reconcile the uncommitted
`ARCHITECTURE.md` edits on `main`" needed no work: the working tree is
clean and `ARCHITECTURE.md` is committed on `main`.
- 2026-08-07: Updated golangci-lint to v2.12.2 everywhere it is pinned
(`Dockerfile` lint stage, `Makefile` deps target), replaced
`.golangci.yml` with the canonical config (v2 schema, `default: all`),
and remediated all lint findings it surfaced (issue #61):
behavior-preserving fixes across every package, `make check` green.
and remediated the bulk of the lint findings it surfaced (issue #61):
behavior-preserving fixes across every package, 2,990 findings down to
80. `make test` and `make fmt-check` were green at that point but
`make lint` was still red; the commit message claiming `make check`
was green was wrong.
- 2026-08-07: Added the standard `.golangci.yml` and `.editorconfig`
(issue #59); lint findings under the new config are tracked in issue
#61. `script/bootstrap` now installs sqlite3 (needed by tests).
@@ -49,6 +69,4 @@ commit, or revert.
# Future Steps
- Review stale local branches (add-godoc-to-cli-package,
feature/pluggable-storage-backend) and merge or delete them.
- Define remaining scope for a first tagged release and cut v0.1.0.

View File

@@ -1,6 +1,6 @@
// Package crypto provides thread-safe age encryption and decryption
// helpers used to protect blob and metadata content.
package crypto
package crypto //nolint:revive,nolintlint // stdlib crypto unused; see #76
import (
"bytes"

View File

@@ -1,6 +1,6 @@
// Package log provides the application-wide structured logger: slog
// with a colorized TTY handler on terminals and JSON output otherwise.
package log
package log //nolint:revive,nolintlint // stdlib log unused here; see #76
import (
"context"
@@ -69,7 +69,7 @@ func Initialize(cfg Config) {
Level: level,
}
// Check if stdout is a TTY
// Check if stdout is a TTY.
if term.IsTerminal(int(os.Stdout.Fd())) {
// Use colorized TTY handler
logger = slog.New(NewTTYHandler(os.Stdout, opts))

View File

@@ -1,4 +1,4 @@
package log
package log //nolint:revive,nolintlint // stdlib log unused here; see #76
import (
"go.uber.org/fx"

View File

@@ -1,4 +1,4 @@
package log
package log //nolint:revive,nolintlint // stdlib log unused here; see #76
import (
"context"

View File

@@ -624,9 +624,10 @@ func (s *Scanner) collectBatchFlushData(
collectStart := time.Now()
// Every pending file contributes at least one file-chunk and one
// chunk-file mapping, so the file count is a safe lower bound for the
// initial capacity of both slices.
// A pending file contributes one mapping of each kind per chunk, and
// an empty file contributes none, so the file count is only a rough
// starting capacity for the mapping slices; append grows them as
// needed. It is exact for the file and file-ID slices.
allFileChunks := make([]database.FileChunk, 0, len(canFlush))
allChunkFiles := make([]database.ChunkFile, 0, len(canFlush))
allFileIDs := make([]types.FileID, 0, len(canFlush))

View File

@@ -2,7 +2,7 @@
// vaultik codebase. Using distinct types for IDs, hashes, paths, and
// credentials prevents accidental mixing of semantically different values
// that happen to share the same underlying type.
package types
package types //nolint:revive,nolintlint // rename decision tracked in #76
import (
"database/sql/driver"