397777089e
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
16 lines
908 B
JavaScript
16 lines
908 B
JavaScript
#!/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 }; // реэкспорт для обёртки
|