Files
brain/tools/arbitration-card.mjs
T

27 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
/**
* arbitration-card — чистый сборщик карточки арбитража (спека §6). Дословные цитаты обеих
* сторон + нейтральная строка «что меняет выбор» на каждый вариант + аффорданс «объясни
* подробнее». НЕ перефразирует: objection/position проходят как есть (только String-coerce).
* Решение владельца пишется НЕ здесь, а через escape-grant/waivers (П3).
*/
export const ARBITRATION_OPTIONS = ['hold', 'accept', 'own'];
const verbatim = (s) => (typeof s === 'string' ? s : '');
export function buildArbitrationCard({ side, level, round, objectionVerbatim, controllerPositionVerbatim } = {}) {
const who = side === 'judge' ? 'судьи' : 'наставника';
return {
side, level, round,
title: `Арбитраж (${level}): тупик спора с ${side === 'judge' ? 'судьёй' : 'наставником'} после ${round} кругов`,
objection: verbatim(objectionVerbatim),
position: verbatim(controllerPositionVerbatim),
options: [
{ key: 'hold', label: 'Держусь позиции контроллера', whatChanges: `Ворота пропустят версию контроллера — замечание ${who} отведено тобой (escape-грант).` },
{ key: 'accept', label: 'Согласиться с замечанием', whatChanges: `Контроллер переделает по замечанию ${who}; счётчик круга сбрасывается.` },
{ key: 'own', label: 'Своё решение', whatChanges: 'Ты вписываешь своё — оно становится обязательным для контроллера.' },
],
explainAffordance: true,
};
}