Finish the lint remediation: script/cibuild exits 0 (closes #61) #77
30
TODO.md
30
TODO.md
@@ -14,16 +14,36 @@ pre-1.0
|
|||||||
|
|
||||||
# Next Step
|
# Next Step
|
||||||
|
|
||||||
Reconcile the uncommitted ARCHITECTURE.md edits on main: finish and
|
Triage the stale remote branches (issue #71): for each, merge the work
|
||||||
commit, or revert.
|
or delete the branch.
|
||||||
|
|
||||||
# Completed Steps
|
# 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
|
- 2026-08-07: Updated golangci-lint to v2.12.2 everywhere it is pinned
|
||||||
(`Dockerfile` lint stage, `Makefile` deps target), replaced
|
(`Dockerfile` lint stage, `Makefile` deps target), replaced
|
||||||
`.golangci.yml` with the canonical config (v2 schema, `default: all`),
|
`.golangci.yml` with the canonical config (v2 schema, `default: all`),
|
||||||
and remediated all lint findings it surfaced (issue #61):
|
and remediated the bulk of the lint findings it surfaced (issue #61):
|
||||||
behavior-preserving fixes across every package, `make check` green.
|
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`
|
- 2026-08-07: Added the standard `.golangci.yml` and `.editorconfig`
|
||||||
(issue #59); lint findings under the new config are tracked in issue
|
(issue #59); lint findings under the new config are tracked in issue
|
||||||
#61. `script/bootstrap` now installs sqlite3 (needed by tests).
|
#61. `script/bootstrap` now installs sqlite3 (needed by tests).
|
||||||
@@ -49,6 +69,4 @@ commit, or revert.
|
|||||||
|
|
||||||
# Future Steps
|
# 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.
|
- Define remaining scope for a first tagged release and cut v0.1.0.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Package crypto provides thread-safe age encryption and decryption
|
// Package crypto provides thread-safe age encryption and decryption
|
||||||
// helpers used to protect blob and metadata content.
|
// helpers used to protect blob and metadata content.
|
||||||
package crypto
|
package crypto //nolint:revive,nolintlint // stdlib crypto unused; see #76
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Package log provides the application-wide structured logger: slog
|
// Package log provides the application-wide structured logger: slog
|
||||||
// with a colorized TTY handler on terminals and JSON output otherwise.
|
// 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 (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -69,7 +69,7 @@ func Initialize(cfg Config) {
|
|||||||
Level: level,
|
Level: level,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if stdout is a TTY
|
// Check if stdout is a TTY.
|
||||||
if term.IsTerminal(int(os.Stdout.Fd())) {
|
if term.IsTerminal(int(os.Stdout.Fd())) {
|
||||||
// Use colorized TTY handler
|
// Use colorized TTY handler
|
||||||
logger = slog.New(NewTTYHandler(os.Stdout, opts))
|
logger = slog.New(NewTTYHandler(os.Stdout, opts))
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package log
|
package log //nolint:revive,nolintlint // stdlib log unused here; see #76
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"go.uber.org/fx"
|
"go.uber.org/fx"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package log
|
package log //nolint:revive,nolintlint // stdlib log unused here; see #76
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|||||||
@@ -624,9 +624,10 @@ func (s *Scanner) collectBatchFlushData(
|
|||||||
|
|
||||||
collectStart := time.Now()
|
collectStart := time.Now()
|
||||||
|
|
||||||
// Every pending file contributes at least one file-chunk and one
|
// A pending file contributes one mapping of each kind per chunk, and
|
||||||
// chunk-file mapping, so the file count is a safe lower bound for the
|
// an empty file contributes none, so the file count is only a rough
|
||||||
// initial capacity of both slices.
|
// 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))
|
allFileChunks := make([]database.FileChunk, 0, len(canFlush))
|
||||||
allChunkFiles := make([]database.ChunkFile, 0, len(canFlush))
|
allChunkFiles := make([]database.ChunkFile, 0, len(canFlush))
|
||||||
allFileIDs := make([]types.FileID, 0, len(canFlush))
|
allFileIDs := make([]types.FileID, 0, len(canFlush))
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// vaultik codebase. Using distinct types for IDs, hashes, paths, and
|
// vaultik codebase. Using distinct types for IDs, hashes, paths, and
|
||||||
// credentials prevents accidental mixing of semantically different values
|
// credentials prevents accidental mixing of semantically different values
|
||||||
// that happen to share the same underlying type.
|
// that happen to share the same underlying type.
|
||||||
package types
|
package types //nolint:revive,nolintlint // rename decision tracked in #76
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql/driver"
|
"database/sql/driver"
|
||||||
|
|||||||
Reference in New Issue
Block a user