Контекст
В вики два типа контента — написанный человеком и сгенерированный LLM. До этого использовался enum status: draft | active | contested | superseded, но он опирается на self-declaration автора: LLM-страница может получить status: active без участия человека, и читатель не отличит её от человеческой.
Новый сигнал — видели ли это страницу человеческие глаза. Не «я считаю, что текст готов», а «N человек прочитали и подтвердили». Это честнее под текущий режим — LLM пишет много, человек ревьюнет выборочно.
Модель
Поле в frontmatter:
verified_by:
- { who: ildar, when: 2026-05-15 }
- { who: artur, when: 2026-05-17 }Состояния:
- Ключа нет или массив пустой — not verified
- Одна или больше записей — verified
Self-verification считается. Если автор писал руками и читал то, что написал, он добавляет себя — это уже первая пара глаз. Empty verified_by означает нейтрально «никто не подтвердил» — без обвинений в AI-генерации; страница могла быть и человеческой, просто никто ещё не вписался.
Применимость
Ко всем типам страниц wiki, не только decision. concept, entity, source, team — у любой может быть AI-черновик, ждущий человеческого прочтения. Поле опциональное: пока никто не вписан, страница в состоянии not verified.
Визуальные состояния
На странице — компактный бейдж в шапке под заголовком, рендерится Quartz-компонентом.
Verified-состояние показывает только последнего верификатора и сколько дней назад:
Verified by Artur · 2 days ago
Not-verified-состояние нейтральное, без догадок про происхождение:
Not verified
В Explorer (sidebar) разница peripheral: verified-страницы рендерятся нормально, not-verified — opacity 0.5 + italic. Глаз ловит «яркие» как verified, не-verified «в фоне».
Отношение к status: — ортогональная ось
status: и verified_by описывают разные свойства страницы:
| Сигнал | Что описывает | Кто ставит |
|---|---|---|
status: | author intent — где автор считает страницу в lifecycle | автор |
verified_by | review history — кто прочитал и одобрил | те, кто читал |
AI-страница без verified_by, но автор считает её current = status: active + 0 verifications. Это не противоречие, а «автор так задумал, но никто не подтвердил». Сочетания осмысленны:
active+ verified — settled, multiple eyesactive+ not verified — автор считает current, но никто не подтвердилdraft+ not verified — WIP / unreviewed AI-outputsuperseded— страница заменена, читать новее (verified-ось не важна)
Допустимые status: остаются как в CLAUDE:
- entity/concept:
draft,active,superseded - decision: добавляется
contested(несколько позиций, ищется компромисс)
Открытые вопросы
- Threshold. Сейчас ≥1 верификатор. Если один читатель окажется слишком слабым сигналом, поднять до ≥2.
- TTL. Verification сейчас не «протухает». Если страницы реально начнут гнить после verified — ввести стилевой «stale verification».
- Эволюция к auto-stamp. Сейчас
verified_byдописывается руками. Возможный next step — GitHub Action при merge PR вписывает reviewers автоматически. Требует переезда с Syncthing-direct-commit на PR-flow.