Files
portal/tools/arbitration-card.mjs
T

26 lines
1.8 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). Дословные цитаты обеих
* сторон + нейтральная строка «что меняет выбор» на каждый вариант + аффорданс. НЕ перефразирует.
* Решение владельца — через escape-grant/waivers (П3). Фикс 3: owner-seal + честный текст.
*/
export const ARBITRATION_OPTIONS = ['hold', 'accept', 'own'];
const verbatim = (s) => (typeof s === 'string' ? s : '');
export function buildArbitrationCard({ side, level, round, objectionVerbatim, controllerPositionVerbatim, sealAction = null } = {}) {
const who = side === 'judge' ? 'судьи' : 'наставника';
return {
side, level, round, sealAction,
title: `Арбитраж (${level}): тупик спора с ${side === 'judge' ? 'судьёй' : 'наставником'} после ${round} кругов`,
objection: verbatim(objectionVerbatim),
position: verbatim(controllerPositionVerbatim),
options: [
{ key: 'hold', label: 'Держусь позиции контроллера', whatChanges: `План/спека опечатывается по твоему решению (owner-seal); замечание ${who} отведено.` },
{ key: 'accept', label: 'Согласиться с замечанием', whatChanges: `Контроллер переделает по замечанию ${who}; счётчик круга сбрасывается.` },
{ key: 'own', label: 'Своё решение', whatChanges: 'Ты вписываешь своё указание; контроллер правит, затем печать по твоему решению (owner-seal).' },
],
explainAffordance: true,
};
}