# Workflow * branch (from `main`) * do the work in Next Step * move Next Step to the top of Completed Steps * move the top item of Future Steps into Next Step * commit (`TODO.md` changes in the same commit as the work) * merge to `main` if the branch is not protected, otherwise open a PR * push # Status pre-1.0 # Next Step Triage the stale remote branches (issue #71): for each, merge the work or delete the branch. # Completed Steps - 2026-08-09: Closed the gap between `make lint` and CI (issue #78). `script/lint` now runs the digest-pinned `golangci-lint` image taken from the `Dockerfile` lint stage, which is the single source of truth for the linter version; the duplicate pin in the `Makefile` `deps` target and the unpinned `golangci-lint` install in `script/bootstrap` are gone. A `golangci-lint` on `PATH` is used only when its version is exactly the pinned one (which is how the lint stage runs it inside the container); anything else goes through Docker, and a missing or unreachable Docker daemon is a hard error rather than a silent fallback. `make check` is therefore now as trustworthy as `script/cibuild`. - 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 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). - 2026-07-07 Adopted scripts-to-rule-them-all: `script/` entrypoints, Makefile shims, README Entrypoints section - 2026-07-02: Consolidated CLI verbs, retired overlapping commands; bound the local index to its backup destination URL. - 2026-06-28: snapshot rm now removes metadata only and prints the prune command; restore skips chown when running as non-root. - 2026-06-26: Snapshot IDs hashed at the storage boundary; snapshot list made resilient to bad remote entries. - 2026-06-24: Collapsed snapshot prune into vaultik prune; restore streams blobs to disk and restores files in blob-locality order; cron output fixes. - 2026-06-17: Restore overhaul: ReadAt chunk reads from cached blobs, reference-counted blob sweeper, integration tests; new internal/ui output layer, banner, and progress lines. - 2025-12-18: Added ARCHITECTURE.md and godoc coverage for exported API. - 2025-07-26: End-to-end integration tests; manifest format refactor; renamed backup to snapshot; afero filesystem abstraction. - 2025-07-20: Initial design and implementation: cobra + fx CLI skeleton, SQLite index database, UUID blob storage with streaming chunking. # Future Steps - Define remaining scope for a first tagged release and cut v0.1.0.