7faef3c93f
Defense-in-depth для escape-гранта: подпись пропуска floor_escape, чтобы форж без секретного ключа отвергался (поверх content-floor). Task 1 — фундамент: - receipt-sign.mjs: +домен RECEIPT_DOMAINS.FLOOR_ESCAPE='floor-escape' (R-31, изолирует подпись floor-escape от approval/frozen-plan). - askuser-answer-parser.mjs: +signFloorEscapeRecord/verifyFloorEscapeRecord — зеркало signApprovalRecord/verifyApprovalRecord, домен FLOOR_ESCAPE. Чистые, без ключа → sig:null. TDD: 5 новых тестов (доменная изоляция, подпись/верификация целой записи, подделка/без sig/без ключа/чужой ключ/чужой домен → false). Регрессия по затронутым файлам 82 GREEN, 0 регрессий. Спека: docs/superpowers/specs/2026-06-10-floor-escape-signing-design.md План: docs/superpowers/plans/2026-06-10-floor-escape-signing.md (Task 1) Прод-код инертен до провижининга ключа (Фаза 8). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>