Phase 160 / 16 · 0%
This phase is still ahead.
16.1 Threat model
0 of 1 done-
docs/design/threat-model.md: assets, attackers, entry points (WebSocket, HTTP APIs, admin tools, the host) and mitigations.
16.2 Protocol and server
0 of 5 done- Fuzz targets for every message handler (envelope decoding is fuzzed from Phase 2), run briefly in CI and for an hour nightly.
- Limits everywhere (connections per IP, messages per second, message size, pending inputs, names, chat length), each with a test.
- Authority audit: every client message type reviewed for trust assumptions, with findings fixed.
- Review the Phase 2 slow-client, idle and handshake timeouts against real traffic; origin checks and TLS-only connections in production.
- Server-side anomaly logging (speed, impossible actions, abnormal rates) with an admin report.
16.3 Accounts and data
0 of 3 done- Session expiry and revocation, “log out everywhere” and password change.
- Self-service account deletion that honors the privacy policy.
- Least-privilege database roles, verified encrypted backups, and secrets rotated with the process documented.
16.4 Host and supply chain
0 of 2 done- Host audit (open ports, services, users, SSH, updates, file permissions) with findings fixed and documented.
- Automated dependency updates (Renovate or Dependabot) for the Go modules (server and web), the art tools’ Python lockfile and GitHub Actions, plus
govulncheckin CI.
16.5 Walkthrough
0 of 2 done-
docs/walkthroughs/phase-16-security.md: the threat model, fuzzing and the authority audit. - Devlog draft, release notes, tag
v0.16.0and publish builds.
Acceptance criteria
0 of 3 done- Fuzzers run for an hour with no crashes.
- Every threat in the model has a mitigation or an accepted risk with a reason.
- No known vulnerabilities in dependencies.
