Skip to content

docs: document the v2 hardening the README never caught up with - #10

Merged
StaticHumStudio merged 1 commit into
mainfrom
docs/v2-hardening-coverage
Aug 6, 2026
Merged

docs: document the v2 hardening the README never caught up with#10
StaticHumStudio merged 1 commit into
mainfrom
docs/v2-hardening-coverage

Conversation

@StaticHumStudio

Copy link
Copy Markdown
Owner

What

Three hardening properties were real, tested, and undocumented. The README now covers them:

  • The systemd sandbox on the Linux unit. Dedicated humwatch user, NoNewPrivileges, ProtectSystem=strict, ProtectHome, PrivateTmp, RestrictSUIDSGID, LockPersonality, UMask=027, with ReadWritePaths scoped to /var/lib/humwatch and /var/log/humwatch.
  • The browser surface. default-src 'self' CSP, nosniff, no-referrer, X-Frame-Options: DENY, a Permissions-Policy blocking camera / microphone / geolocation / USB / payment, Cache-Control: no-store on protected API paths, HSTS over HTTPS, and every asset vendored same-origin.
  • The auth throttle and request bounds. Five failed tokens from one source in 60 seconds earns a 429 with Retry-After, tracking table bounded at 1024 sources with LRU eviction, 1 MiB body cap, and ceilings on metrics per request, SSE subscribers, history window, and sample resolution.

Also

Corrects a stale claim in the tech stack. It said fonts came from the Google Fonts CDN. They have been vendored and served same-origin since the asset vendoring work, and HumWatch's own CSP is font-src 'self', so a real CDN load would be blocked by the app itself. Chart.js and Lucide get the same correction.

Docs only, no code touched.

🤖 Generated with Claude Code

Three hardening properties were real, tested, and undocumented: the systemd
sandbox on the Linux unit, the security response headers and CSP, and the
auth-failure throttle plus request bounds.

Also corrects a stale claim. The tech stack said fonts came from the Google
Fonts CDN. They have been vendored and served same-origin since the asset
vendoring work, and the app's own CSP is font-src 'self', so a real CDN load
would be blocked by HumWatch itself.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@StaticHumStudio
StaticHumStudio merged commit 4f53f9c into main Aug 6, 2026
14 checks passed
@StaticHumStudio
StaticHumStudio deleted the docs/v2-hardening-coverage branch August 6, 2026 23:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant