Block a user
Add fuzz coverage for NewManifestFromReader
Nameserver glue/IP changes are never detected — README claims they trigger a notification
MEMORY.md and TODO.md carry stale claims that actively misdirect agents
Fix -v flag collision between --verbose and --version
No file locking and no atomic writes: concurrent or interrupted operations corrupt the vault
Frontend image serves zero security headers; add the full REPO_POLICIES set to nginx.conf
Harden fetch: client timeout, retry with backoff, url.JoinPath
Per-nameserver query status is discarded: NS failure and NS recovery notifications never fire
make test: adopt the mandated timeout/race/cover + conditional verbose rerun pattern
Enforce real timeouts on gpg subprocess calls
Rework Dockerfile.backend to the mandated Go multistage lint-stage pattern
Critical:
secret rm .. deletes the entire vault; rm/mv/import skip name validation
Validate manifest paths on read, not only on write (path traversal in Checker)
µPaaS deployment setup
Manager note: opened a 1.0.0 milestone to track the remaining pre-release work units. Deliberately leaving this issue out of it, because this issue's own Notes state the prerequisite…
Unify the gate: root
make check must cover the backend, and CI must route through script/
script/test always runs with -v instead of the conditional verbose rerun pattern
Update golangci-lint to v2.12.2 with canonical config (closes #60)
Manager notes.
This PR predates the tracker backlog, so it had no issue behind it. Filed #60 retroactively with the definition of done and implementation requirements this PR is now reviewed…
Enforce request body size limit before CSRF middleware parses the form
1.
Implementation plan
Branch issue-90-body-limit-before-csrf off main @ 4f5ecb1, single commit titled ending in (closes #90).
1. internal/middleware/middleware.go — make…
script/test silently passes on flaky failures, and runs without -race or -timeout
DECISION NEEDED: choose a license and add the LICENSE file (1.0 blocker)