taste-check · git:20260814.44e61cf · 2026-08-14 · sha256 cccce21181e19a8d
taste-check git:20260814.44e61cfA
Immutable. This exact content is served forever at /api/v1/blob/cccce21181e19a8d.
--- name: taste-check description: "Авто-ревьюер КАЧЕСТВА КОНТЕНТА (заметки волта / черновики исходящего / дедуп-мерджи / служебные файлы) — явный вердикт ✅ pass / ❌ fail / ⚠️ manual-review ДО показа Антону. Как /tt, но для контента: /tt проверяет «работает ли то, что собрали», /taste-check — «не стыдно ли показать/отправить то, что написали». Trigger on \"/taste-check <путь|текст>\", \"/taste\", \"проверь вкус\", \"проверь заметку перед показом\", \"taste check\", \"прогони через вкус\", а также САМ перед выдачей Антону свежесозданной заметки/черновика/мерджа. Первый фильтр, не финальный судья (судья = Антон). READ-ONLY: ревьюер НЕ пишет в волт и НЕ правит контент — только вердикт + список нарушенных принципов. Образец: taste-skill Артём Арсёнова (сигнал → принцип → проверка; гейт = рубильник с владельцем). Принципы выведены ТОЛЬКО из реальных сигналов Антона (rule_scan digests + memory с цитатами), не выдуманы." license: MIT --- # /taste-check — вкусовой гейт для контента Гейт по Арсёнову: **рубильник, не галочка**. Три исхода, у каждого владелец и последствие: | Исход | Критерий | Последствие | |---|---|---| | ❌ **FAIL** | нарушен хоть один ⛔-принцип | артефакт НЕ показывается как готовый; вернуть автору со списком нарушений | | ⚠️ **MANUAL** | ⛔ чисты, но ≥2 ⚠️-нарушения ИЛИ проверку нельзя выполнить (неизвестен класс/язык лида/авторство) | показать Антону С флагом «⚠️ manual review: причина» | | ✅ **PASS** | остальное | показывать/отправлять можно | Владелец гейта = этот агент (первый фильтр). Финальный судья = Антон. Ревьюер **read-only**: в волт не пишет, контент не правит, только вердикт. ## Порядок 1. **Класс входа** (определи первым, от него зависят применимые принципы): - **A** заметка волта · **B** черновик исходящего от лица Антона · **C** дедуп-мердж · **D** служебный файл (memory/CLAUDE.md/skill/дашборд-текст) · **E** AI-документ-для-решения (DR-отчёт, Decision Memo, стратегия, PRD, спека, ресёрч — всё, по чему будут «спорить, покупать или строить»). 2. **Юрисдикция**: судим только то, что произвёл AI/пайплайн. Verbatim-текст Антона, внешние оригиналы (`_originals`), его собственные правки — вне гейта (не «вычищать живость» из его голоса). `_drafts`, `_originals`, `08-Templates`, inbox = intentional orphans (P6 не применять). 3. **Детерминированные проверки** (Grep/PowerShell, 0 токенов) — P4, P5, P6, P7, P9, P17, P18. 4. **LLM-проверки** по остальным принципам — только по куску, не по корпусу. 5. **Вердикт-блок** (формат ниже). Ничего не чинить. ## Принципы (сигнал → принцип → проверка) Веса: ⛔ = хардстоп (fail) · ⚠️ = предупреждение (2+ → manual). Классы в скобках. ### Провенанс - **P1 ⛔ (A,C) Не вешать на Антона чужое.** Сигнал: «ВСЕГДА если ты нашёл что источник знания НЕ Я … не вешай на меня то что Я НЕ ПИСАЛ» (2026-06-08). Проверка: `origin: anton`/`#anton-original` при признаках внешнего или AI автора (чужие self-ID, кросс-хэндлы, AI-дистилляция) → FAIL. - **P2 ⛔ (A,C) AI-соавторство = mixed + конкретный ИИ.** Сигнал: «если автор — ИИ, пиши ВСЕГДА конкретно КАКОЙ именно ИИ» (2026-06-09). Проверка: `authored_by: ai|hybrid` требует `ai_author:` с конкретной моделью и `origin: mixed|external`; generic «ai» или `origin: anton` → FAIL. ⭐ Карв-аут (Антон 2026-07-02): на `reglament-*`/`protocol-*` пара `origin: anton` + `authored_by: hybrid` легальна — origin там означает «чьё правило» (авторитет Библии), authored_by «кто оформил»; ai_author обязателен, #anton-original не вешаем. - **P3 ⚠️ (A,C) Две оси провенанса на месте.** Сигнал: two-axis mandate (vault-conventions, operating-agreement). Проверка: в frontmatter есть `origin:` И `authored_by:`; нет → warn (легаси-заметки не валим). - **P4 ⛔ (все) Секретов нет.** Сигнал: пароли живут в `secrets\`, не в волте/always-loaded (credential-store; прецедент «запомни work_acct_b … 2fa 83…» → ушло в store). Проверка: grep `парол|password|2fa|api[_-]?key|token|secret[_-]?key` + похожие на кред строки → hit по реальному секрету = FAIL. ### Граф и структура - **P5 ⛔ (A,C — новые файлы) Имя файла = латинский kebab-slug.** Сигнал: «никакой кириллицы в именах НИГДЕ» (2026-06-08). Проверка: basename ASCII-only; кириллица → FAIL (старые ≈3.9k = frozen legacy, не валим — только новые). - **P6 ⛔ (A,C — новые заметки живого волта) Не сирота: ≥1 входящая ссылка.** Сигнал: «ВСЕГДА … дотянули перелинковку» (2026-06-13). Проверка: `Grep "\[\[<basename>\]\]|\[\[<basename>\|" path=$OBSIDIAN_VAULT` ≥1 вне самой заметки; 0 → FAIL («незакрытый хвост, не готово»). Исключения — п.2 юрисдикции. - **P7 ⚠️ (A,C) Wikilinks резолвятся.** Сигнал: «0 broken links перед staging→vault» (vault-conventions). Проверка: каждый `[[target]]` существует как файл/alias; битые → warn. - **P8 ⚠️ (A) Префикс соответствует папке.** Сигнал: prefix = класс заметки (vault-conventions). Проверка: `concept-*`→06-Concepts, `person-*`→07-People, `insight-*`→03-Insights, `reglament-*`→Protocols/Operations; мимо → warn. ### Текст и голос - **P9 ⏸ ОТКЛЮЧЁН (Антон 2026-07-02: «наплевать на тире, ПОХЕР, забудь пока»).** Гейт тире НЕ судит и на вердикт они не влияют; кампаний по чистке старого не ведём. Правило стиля для НОВОГО моего текста остаётся ([[no-long-dashes]]) — просто пишу без них, бесплатно. Вернуть вес может только Антон. - **P10 ⛔ (C) Текст Антона дословен, не «улучшен».** Сигнал: «транслитерируем ИМЕНА, никогда не переводим текст Антона» + supersede-политика дедупа. Проверка: сравнить мердж с источниками; перевод/пересказ/сглаживание его формулировок → FAIL («кривенько - значит живенько»). - **P11 ⚠️ (A,D) Без воды.** Сигнал: «сухо, по делу, БЕЗ воды» (повторяющийся, 15 сессий, digest 2026-06-23) + write-service-files-tight. Проверка (LLM): вводные абзацы, повторы, риторика → warn. - **P12 ⚠️ (A,D — для Антона) Русский язык, англ. тех-термины ок.** Сигнал: «по-русски» 15/15 сессий. Проверка: внутренний документ для Антона целиком на английском → warn. - **P13 ⚠️ (D) Без капс-агрессии.** Сигнал: замер 2026-07-01 (капс/«ОБЯЗАН/НИКОГДА» = overtriggering на 4.6+; де-капс CLAUDE.md одобрен Антоном). Проверка: капс-императивы в служебном тексте → warn. ### Данные и честность - **P14 ⛔ (все) Никаких выдуманных данных.** Сигнал: «лучше не надо понарошку ничего накидывать — возьми те данные и клиентов что есть» (сессия 36a792df). Проверка (LLM): цифры/факты/примеры без источника, поданные как реальные → FAIL. - **P15 ⚠️ (A,D — предложения) ДО→ПОСЛЕ на реальных данных.** Сигнал: standing show-before-after. Проверка: черновик-предложение без до→после на данных Антона → warn. - **P16 ⚠️ (A,D — предложения) Усложнение помечено.** Сигнал: AK-47 standing (⚠️ УСЛОЖНЕНИЕ + какую боль лечит). Проверка: новая зависимость/сервис/абстракция без пометки → warn. ### Исходящее от лица Антона - **P17 ⛔ (B — outreach/pitch) Приветствие отдельной строкой.** Сигнал: явный стандарт 2026-06-22 (50 питчей переформатированы). Проверка: строка 1 = только приветствие, строка 2 пустая, тело со строки 3; слитно → FAIL. - **P18 ⛔ (B — unreviewed) ≤7 слов + тон канала.** Сигнал: «пиши сам» → цель ≤5, потолок 7 слов; FB = шутка, TG = осмысленно после RECALL по человеку (2026-06-29). Проверка: счёт слов >7 → FAIL; тон не по каналу → FAIL. - **P19 ⚠️ (B) Язык лида.** Сигнал: «для русскоязычных лидов писать на русском для англо на англ» (сессия b0326fad). Проверка: язык черновика vs язык лида; mismatch → warn, лид неизвестен → manual. ### Дедуп-мерджи - **P20 ⛔ (C) Supersede, не delete.** Сигнал: дедуп-политика 2026-06-08 (14 правил слиты supersede'ом) + «никогда не glob-delete». Проверка: мердж ссылается на поглощённую (`supersedes:`/линк), ни один исходник не удалён (жив или в `_originals`); иначе → FAIL. ### AI-документы (класс E) — анти-дрифт по Арсёнову Источник: Anti-Drift Review Артём Арсёнова (Ray lab, looi.ru/a/anti-drift-review — huge thanks 🙏; verbatim: `_originals\arsenov-looi\full\13-anti-drift-review.md`). Добавлено 2026-07-03 по «++» Антона. Суть его наблюдения: «AI делает документ более гладким раньше, чем более правдивым» — спор идёт о тексте, а не о реальности. Все проверки LLM-суждение по куску. - **P21 ⛔ (E) Утверждения без опоры.** Красивые фразы, не доказанные данными/источником. Проверка: каждый ключевой тезис → есть ссылка/данные/провенанс? Голословный тезис, на котором держится рекомендация → FAIL. (Родня P14, но здесь про аргументацию, не только цифры.) - **P22 ⚠️ (E) Скрытые допущения.** Рекомендация держится на «если», которого никто не заметил. Проверка: выписать неявные «если X, то…»; ≥2 незаявленных критических допущения → warn (в вердикте перечислить). - **P23 ⚠️ (E) Слабая связь с покупателем/пользой.** Боль названа, но не видно, кто платит за неё временем/деньгами. Проверка: для продукт/GTM-документов — назван ли конкретный ICP/плательщик; нет → warn. - **P24 ⚠️ (E) Провал реализации.** План звучит, но не выдерживает контакта с нашим реальным стеком/командой/системой. Проверка: шаги плана против известного состояния (машины, рутины, люди, лимиты); нереализуемый шаг → warn + назвать. - **P25 ⛔ (E) Слишком сильный вывод.** Доказательства говорят «может быть», документ говорит «надо делать». Проверка: сила вывода vs сила доказательств; overclaim в итоговой рекомендации → FAIL. - **Вердикт для E** дополняется drift-map: 🔴 (не опираться) / 🟡 (доработать: что доказать перед решением) / 🟢 (можно использовать) + список unsupported claims. ## Формат вердикта ``` 🎛 taste-check: <файл/черновик> · класс <A/B/C/D> Вердикт: ✅ PASS | ❌ FAIL | ⚠️ MANUAL REVIEW Нарушено: P9 (3 длинных тире, строки 12/40/41), P6 (0 входящих ссылок) Чисто: P1-P5, P7, P8, P14 Не проверялось: P17-P19 (не исходящее) → Действие: <вернуть автору / показать с флагом / можно показывать> ``` ## Границы - Read-only: никаких Write/Edit в волт, никаких «сразу и починил». - Принципы Антона не выдумывать: новый принцип добавляется только из его реального сигнала (правка/цитата/digest rule_scan) с датой. Сырьё сигналов: `$IMPORTS_ROOT/rule_candidates/digest-*.md` (preference-sweep) + memory `type: feedback`. - Калибрует веса только Антон (как у Арсёнова: агент собирает сигналы, паттерны калибрует человек). - Токен-закон: сперва детерминированные проверки (grep/счёт), LLM — только суждение по куску.