All checks were successful
check / check (push) Successful in 46s
backend/.golangci.yml declared version: "2" on line 1 but used the golangci-lint v1 schema below it: a top-level linters-settings key and an issues.exclude-use-default key that does not exist in v2. Under v2 that config does not validate, so every threshold in it was inert -- lll fell back to its 120-column default rather than the intended 88, and funlen, cyclop and dupl were not applied at all. The `0 issues.` result the repo has been relying on was therefore meaningless. Replace it with the org-standard file verbatim (sha256 021cc83f4e6fc7c31b95b34b846723dfcf20b66b7baeea1dc40406e643346bcb) and move the lint stage of Dockerfile.backend from golangci-lint v2.7.2 to the org-standard v2.12.2 by repinning the golangci/golangci-lint image digest: sha256:5cceeef04e53efe1470638d4b4b4f5ceefd574955ab3941b2d9a68a8c9ad5240 The digest was resolved from the v2.12.2 tag and verified by running the linter out of that exact image, which reports "golangci-lint has version 2.12.2 built with go1.26.2 from c0d3ddc9 on 2026-05-06T11:07:58Z". Guard against the config drifting from the standard again by asserting its sha256 as the first step of the backend lint target. The check is a local hash comparison against a constant in the Makefile: it needs no network, fetches nothing, and adds no unpinned external reference to the build path. It also catches a strictly larger class of breakage than schema validation would, since a schema-valid but non-canonical config is exactly how this file got into its broken state. With the config actually loading, lll reports server.go:65 at 93 columns. Fix it, plus the two other over-long lines called out on the issue (server.go:97 at 81 and reportbuf.go:166 at 88) which are inside the 88-column lint limit but over the 77-column hard wrap in the Go styleguide. All three were long //nolint justifications on the code line; move the justification into a preceding comment block and leave a short directive behind. No suppression is added or widened, and .golangci.yml is not touched after the copy. Drop the //nolint:wsl in server.go entirely rather than relocating it. The standard config disables wsl, so the directive suppressed nothing; removing it still yields `0 issues.` Verified: `docker build --no-cache -f Dockerfile.backend .` is green, with the lint stage running uncached for 14.9s and reporting `0 issues.` -- the first proof that v2.12.2 and the canonical config pass together through the multistage lint stage. Root `make check` and `cd backend && make check` both pass. The drift guard's failure path was re-proved inside the lint image: appending a byte to .golangci.yml fails `make lint` at 0.17s with the expected and actual hashes, before golangci-lint runs at all. golangci-lint v2.12.2 emits a deprecation warning for the gomodguard linter the standard config enables. It is a warning, not a failure, and the config is not editable here; it is tracked separately.
3.9 KiB
3.9 KiB
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.mdchanges in the same commit as the work) - merge to
mainif the branch is not protected, otherwise open a PR - push
Status
pre-1.0. No git tags. feat/reportbuf-storage is merged; the backend, the CI
workflow, and the backend repo standard files are all on main. Frontend and
backend are both functional. Working toward the 1.0.0 milestone by closing the
remaining repo-compliance issues on the tracker.
Next Step
Confirm the .gitea/workflows/check.yml run is green (main always green
policy). The workflow file is already on main; what is unverified is that its
latest run passes.
Completed Steps
- 2026-08-10: adopted the org-standard
backend/.golangci.ymlverbatim and moved the pinned golangci-lint from v2.7.2 to v2.12.2 (thelintstage ofDockerfile.backendnow pins thegolangci/golangci-lint:v2.12.2image by digest); the previous config declaredversion: "2"but used v1 schema keys, so every threshold in it was inert and its green result was meaningless.backend/Makefile'slinttarget now asserts the config's sha256 against the canonical file first, so drift from the org standard fails the build instead of silently degrading to defaults - 2026-08-10: every interactive control now meets the 44x44 CSS px minimum tap
target (
.pin-btn,#interval-select, the debug-log label and, on narrow viewports,#pause-btn). The pin button's hit area grows via matching negative margins, so its layout footprint and row density are unchanged - 2026-08-10: per-host status line wraps below the 768px breakpoint instead of forcing horizontal page scroll at 320px
- 2026-08-09:
Dockerfile.backendreworked to the mandated Go multistage lint-stage pattern: separatelintstage on the hash-pinnedgolangci/golangci-lintimage,COPY --from=lintstage dependency,CGO_ENABLED=0static build driven byARG VERSION, and no moreCOPY .git - 2026-08-09: dotfile compliance — lifted
backend/.editorconfigto the repo root soroot = truecovers the frontend too, and replaced.gitignorewith the org model (OS, editor, node, and environment/secrets sections) plus this repo'sdist/and*.log..env,.env.*,*.pem, and*.keyare now ignored repo-wide, not just underbackend/. Excluding.gitfrom.dockerignorestays deferred: both images read git metadata at build time (COPY .gitinDockerfile.backend,git rev-parseinvite.config.js) - 2026-07-07 Adopted scripts-to-rule-them-all:
script/entrypoints, Makefile shims, README Entrypoints section - 2026-02-27: backend with buffered zstd-compressed report storage; CI workflow and backend repo standard files; backend Dockerfile fixed (Go 1.25, golangci-lint) and moved to repo root (feat/reportbuf-storage)
- 2026-02-26: host row layout redesigned with CSS grid; overflow and spacing fixes; nginx config extracted; port hardcoded to 8080
- 2026-02-26: debug log panel, median stats, recovery probe, Docker build fix, S3 Singapore endpoint added
- 2026-02-23: summary box redesign, host pinning, local and UTC clocks, checks counter
- 2026-02-23: hosts sorted by latency; GET instead of HEAD for latency; timeout derived from interval; Hetzner regional endpoints; 3s interval
- 2026-01-29: initial NetWatch network latency monitor
Future Steps
- Decide what to do with untracked resume.sh: commit it, gitignore it, or delete it
- Upstream fix needed in
sneak/prompts: the org-standard.golangci.ymlenablesgomodguard, which golangci-lint v2.12.2 reports as deprecated since v2.12.0 and replaced bygomodguard_v2, so every backend lint run prints a deprecation warning. The file is standardized and must never be edited in this repo, so nothing can be done here beyond tracking it — tracked at https://git.eeqj.de/sneak/netwatch/issues/41