8a7091ddec
Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в .claude/memory/, чтобы переносить между машинами через git. README.md — как восстановить в пользовательскую папку на другой машине. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.0 KiB
2.0 KiB
name, description, type, originSessionId
| name | description | type | originSessionId |
|---|---|---|---|
| BQ-System hardening initiative 2026-05 | Execution plan for 8 hardening tasks (security/architecture) — handed off to Sonnet 4.6 sessions one task at a time | project | b6ce9f63-539c-44d6-b93f-a9a65b44f165 |
8-task hardening plan started 2026-05-06. Each task = separate Sonnet session, separate commit.
Why: security review found 17 P0/P1 issues (commit 952a54f). Code analysis showed requireOwnership middleware exists but used in only 1 of 169 :id-routes. classroomController.js is 1618 lines with 56 inline req.user.role checks. Auto-migrate runs on every server start. WS auth via query-string token (leaks to logs).
How to apply: if user references "task 1-8" or "hardening plan", these are the 8 tasks (executed in order/parallel groups):
- Group A (parallel): #1 ESLint-style auth check on :id routes, #2 remove auto-migrate from server startup, #3 WS auth via first-message instead of query string
- Group B (parallel after A): #5 backup verification cron, #6 5-7 e2e security tests
- #4 classroomController.js split (1618 lines → 6 domain files) — sequential, after Group A
- #8 YAML seed importer (one collection migrated as proof) — after #4
- #7 versioned migrations (baseline = current schema) — last, riskiest
Pre-existing infrastructure (don't reinvent):
backend/tests/setup.jshas node:test +inject()helper — use for Task 6npm run migratescript exists inbackend/package.json- WAL + FK + synchronous=NORMAL already enabled in
backend/src/db/db.js:27-31 backup.shalready does VACUUM INTO + 7-day rotationrequireOwnership({ table, ownerField, fetchFn })factory exists inbackend/src/middleware/ownership.js
Conventions enforced (from CLAUDE.md, must mention in every brief):
- ast-index FIRST for code search; Grep tool BANNED
- No emoji in code (only inline SVG
.ic) - After any change:
git add <files> && git commit -m "..." && git push origin master - Read with offset/limit, not full files