fix(backend): rate-limit and cap report ingest, drop wildcard CORS (closes #20)
check / check (push) Successful in 42s
build: one image, nginx in front of the backend on loopback (closes #52)
check / check (push) Successful in 10s
Report ingest correctness: propagate storage failure, 413 on oversize, global body-size cap
check / check (push) Successful in 45s
fix(server): shut down through fx so buffered reports flush
needs-review
check / check (push) Failing after 1s
feat(backend): server hardening — timeouts, security headers, trusted-proxy client IP
needs-review
check / check (push) Failing after 0s
feat(frontend): post collected samples to /api/v1/reports
check / check (push) Successful in 12s
fix(frontend): meet the 44x44 minimum tap target on every control (closes #43)
needs-review
check / check (push) Successful in 9s
test: automated responsive-layout harness (closes #13)
needs-review
check / check (push) Failing after 0s
build: Dockerfile.backend multistage lint stage (closes #17)
needs-review
check / check (push) Successful in 1m14s
build: unify the gate so root make check covers the backend (closes #16)
check / check (push) Successful in 56s
chore: root .editorconfig and hardened .gitignore (closes #15)
needs-review
check / check (push) Successful in 26s
lint: adopt org-standard .golangci.yml and golangci-lint v2.12.2 (closes #14)
needs-review
check / check (push) Failing after 1s