#!/usr/bin/env node /** floor-escape-consume (М6) — чистое ядро одноразового погашения. */ import { canonicalAction, findOpenGrant } from './escape-grant.mjs'; /** * Если исполненное действие совпало со свежим непогашенным пропуском — вернуть отметку, иначе null. * Через единый findOpenGrant: гасим ИМЕННО тот грант, который открыл escape (один предикат * свежести), без расхождения с open-проверкой при дублях/future-ts. */ export function consumeDecision({ action, grants, consumed, now = Date.now() }) { const g = findOpenGrant(action, grants, consumed, now); return g ? { action: g.action, ts: g.ts } : null; } export { canonicalAction }; // реэкспорт для обёртки