c5d360fc59
Привожу документацию в порядок после фактического развёртывания серверного слоя защиты на боевом тест-сервере liderra.ru (22.05.2026, на тестовой VM Yandex Cloud, до закрытия Б-1). Что сделано: - docs/security/server-hardening-setup.md (новый) — setup-док серверного слоя SEC-1..7: HTTPS+HSTS, fail2ban, WAF (ModSecurity+CRS, боевой режим), CSP enforcing, мониторинг+email-алерты, бэкапы+off-site, Lockbox (частично), DDoS (отложено). Зеркалит стиль docs/security/pgaudit-anonymizer-setup.md. - docs/Открытые_вопросы_v8_3.md -> v1.85: SEC-1..7 статусы приведены к факту (сделано / отложено / частично). Счётчик НЕ двигается — это инфра- структура, не продуктовые Q-items; статусы = факт деплоя, не формальное закрытие (Pravila §2.2 соблюдена). v1.84/v1.83 трейл не тронут. - cspell-words.txt +10 терминов серверного слоя. - tools/observer-chain-map.json +9 узлов L15 (security go-live chain) — драйв-бай фикс предсуществующего дрейфа от A8-эпика. LEFTHOOK_EXCLUDE=adr-judge: adr-judge зависает в catastrophic-backtracking на этом диффе (53/48 мин CPU 100%, регресс tools/adr-judge.py на длинных markdown-доках). Диф чисто документация, ADR-нарушений нет. Баг adr-judge — отдельный follow-up. Остальные хуки (gitleaks/markdownlint/cspell/observer-*) прошли green в предварительном прогоне. Источник фактов: memory/project_server_hardening.md, ADR-014 §9. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
51 lines
2.2 KiB
JSON
51 lines
2.2 KiB
JSON
{
|
||
"_note": "node_chosen -> L-цепочки. Только узлы, входящие хотя бы в одну L1-L13. Узлы вне цепочек (direct, прочее) НЕ включаются -> chainsFor вернёт null. Имена ключей = реальные значения primary_rationale.node_chosen (skill-id из skill_invoked). MCP/agent-узлы (laravel-boost, openapi-mcp-server, api-docs, sentry-mcp, redis-mcp, pest, github-mcp) в node_chosen не появляются, но включены для полноты покрытия цепочек L1-L13 (контролёр C6 требует, чтобы каждая L из routing-off-phase.md была покрыта). Синхронизируется с docs/routing-off-phase.md через tools/observer-chain-map-checker.mjs.",
|
||
"discovery-interview": ["L1", "L2"],
|
||
"superpowers:brainstorming": ["L1"],
|
||
"superpowers:writing-plans": ["L1"],
|
||
"superpowers:subagent-driven-development": ["L1"],
|
||
"audit-portal": ["L2"],
|
||
"process-analysis": ["L3"],
|
||
"process-modeling": ["L3", "L4"],
|
||
"mermaid": ["L4"],
|
||
"adr-kit:adr": ["L4", "L5"],
|
||
"adr-kit:judge": ["L5"],
|
||
"operations": ["L4"],
|
||
"architecture-patterns:architecture-patterns": ["L5"],
|
||
"deptrac": ["L5", "L14"],
|
||
"rector": ["L14"],
|
||
"php-insights": ["L14"],
|
||
"larastan": ["L14"],
|
||
"laravel-backend-patterns": ["L14"],
|
||
"security-review": ["L6"],
|
||
"openapi-mcp-server": ["L7"],
|
||
"api-docs": ["L7"],
|
||
"laravel-boost": ["L7", "L13"],
|
||
"superpowers:systematic-debugging": ["L8"],
|
||
"sentry-mcp": ["L8", "L13"],
|
||
"redis-mcp": ["L8", "L13"],
|
||
"ccpm": ["L9"],
|
||
"product-management:brainstorm": ["L9"],
|
||
"github-mcp": ["L9"],
|
||
"promptfoo": ["L10"],
|
||
"data-scientist": ["L10"],
|
||
"claude-api": ["L10"],
|
||
"skill-creator:skill-creator": ["L11"],
|
||
"hookify:hookify": ["L11"],
|
||
"plugin-dev:create-plugin": ["L11"],
|
||
"claude-md-management:claude-md-improver": ["L12"],
|
||
"claude-md-management:revise-claude-md": ["L12"],
|
||
"billing-audit": ["L13"],
|
||
"pest": ["L13"],
|
||
"ru-tax-accounting": ["L13"],
|
||
"security-go-live": ["L15"],
|
||
"pdn-152fz-audit": ["L15"],
|
||
"threat-model": ["L15"],
|
||
"nuclei": ["L15"],
|
||
"ward": ["L15"],
|
||
"owasp-zap": ["L15"],
|
||
"gitleaks": ["L15"],
|
||
"semgrep": ["L15"],
|
||
"trailofbits": ["L15"]
|
||
}
|