reality-show · git:20260814.44e61cf · 2026-08-14 · sha256 ed60bfb3ab7a619d
reality-show git:20260814.44e61cfA
Immutable. This exact content is served forever at /api/v1/blob/ed60bfb3ab7a619d.
--- name: reality-show description: "Континьюити-движок сезона (v2, 2026-07-10): читает ЕДИНЫЙ КАНОН show-canon (season/arcs/beats/loops) и подсказывает, какой нарративный бит двигать дальше, чтобы серии сцеплялись в СЕРИАЛ. Триггеры: /reality-show, /сериал, «покажи сезон», «какие арки открыты», «какой следующий эпизод», «свяжи в сериал», «ранее в сериале», «season state», «what arcs are open». Работает в паре с /episode (тот пишет серию, этот помнит сезон). ⛔ Прежний собственный стор season-state.json ЗАМОРОЖЕН (был третьим позвоночником) — источник истины теперь ТОЛЬКО канон. Голос Антона = Opus/Fable; read-only по дефолту; draft-first. НЕ путать с /episode (тир-адаптер) и /wow (веха вне очереди)." license: MIT --- REALITY-SHOW v2 — континьюити-слой сезона поверх ЕДИНОГО КАНОНА ЦЕЛЬ: чтобы поток эпизодов читался как СЕРИАЛ. `/episode` пишет одну серию с драматургией (палитра [[style-reality-show]]); ЭТОТ скилл помнит СЕЗОН и подсказывает следующий нарративный ход. **ИСТОЧНИК ИСТИНЫ = канон:** `$OBSIDIAN_VAULT/04-Projects\show-canon\` (season-01.md · arcs\ · beats\ · loops\ · rules\; карта = `_SHOW-CANON.md`). ⛔ **season-state.json ЗАМОРОЖЕН 2026-07-10** (`_imports\content-factory\season-state.json` + season_state.py) — был третьим расходящимся позвоночником после THREADS/SHOW-STATE; решение `decision-single-canon-story-state`. НЕ читать как истину, НЕ обновлять. ## РЕЖИМЫ ### `status` (дефолт, read-only, 0 токенов LLM) Прочитать `season-01.md` (вопрос сезона, активные арки, открытые петли, табло) + шапки `arcs\*.md` (status, current_state) + `loops\*.md` (open?) → строка-дайджест Антону: сезон + арки со ставками + висящие петли-клиффхэнгеры + story_day. Ничего не меняем. ### `next` — предложить бит следующего эпизода (авторская модель, дёшево) 1. Прочитать: season-01.md + открытые loops + свежие биты `beats\` (happened, последние по occurred_on) + 📝-корзину `_imports\content-factory\triage\posts.md` (свежий пост-материал). НЕ читай весь корпус. 2. Суждение (Opus/Fable): какую ОТКРЫТУЮ арку двигать сегодняшним материалом; закрыть или обострить какую петлю; какой мотив вернуть (running gag). Связь с РЕАЛЬНЫМ битом — не выдумывать события. `beat_kind` подсказывает драматургию: 🌀 twist/💥 fail = клиффхэнгер; 🏆 milestone = пейофф; 📡 external = топливо интриги сезона. 3. Выдать 1-2 варианта: «арка X → обострить (петля „…“), вернуть мотив „…“, опора = beat-YYYY-MM-DD-slug». Дальше `/episode` пишет серию. ### `intake` — разобрать beats-inbox (кандидаты от сенсоров → канон) Ночью это делает рутина `canon-writer-nightly` (01:00); тут — то же самое по требованию. `python $IMPORTS_ROOT/content-factory\canon_intake.py list` → судишь годность и АРКУ (только из живого словаря!) → `... accept <beat_id> --arcs arc-a,arc-b` либо `... reject <beat_id> --why "..."`. Скрипт сам: валидирует arc_id по файлам арок, ставит производный `story_day`, переносит в `beats\`, дописывает обратную ссылку в арку, чистит `_README`. Руками биты не переносить. `canon_intake.py verify` — детектор половинчатой приёмки (бит в `beats\`, а арка на него не ссылается: обрыв или гонка двух писателей). Гоняется в конце ночного прогона; exit 1 = чинить. ### `board` — табло сезона (производное, не рукописное) `python $IMPORTS_ROOT/content-factory\show_canon_sync.py board` (до→после) / `board --apply` (записать). `season-01.active_arcs` / `open_loops` пересобираются из `status:` в файлах арок/петель. Правило: **табло руками не правится** — иначе копия отстаёт от истины (инцидент ТАБЛО-ДРИФТ 27.07: арка жила в файлах 16 дней, а на табло её не было). `show_canon_sync.py arcs` печатает живой словарь arc_id — контракт для сенсоров. ### Обновление состояния = ПРАВКА КАНОНА (явными действиями, не молча) Всё, что раньше писалось в json, теперь = правка карточек канона по шаблонам: - новая линия → `arcs\arc-<slug>.md` (по образцу существующих); эскалация/закрытие → правка `current_state`/`status` арки; - клиффхэнгер открыть/снять → `loops\loop-<slug>.md` (status: open/closed + current_best_answer); - эпизод привязать → в бит-опору дописать consequences («эпизод <slug> опубликован») + арке в beats[]. После правок: `python $IMPORTS_ROOT/content-factory\canon_render.py` (реестры GitHub сами обновятся; линт отругает битые поля). ### `recap --arc <id>` — «ранее в сериале» Биты арки (beats[] из карточки арки, по occurred_on) + её открытые петли → 1-2 строки recap для новой серии. ### `check` — недельный скоркард здоровья сериала Детерминированный движок (0 токенов): `python $IMPORTS_ROOT/content-factory\show_canon_check.py check` (+ `status` для контекста). Оси: (1) Континьюити — вопрос сезона задан + ≥3 бита happened; (2) Изменение — доля активных арок с битами; (3) Петли — открытых >4 = затор, >2 в одной арке = перегруз; (4) Доверие (manual, receipts; скрипт подсказывает долю свежих битов с evidence_refs). Плюс табло-дрифт (season-01.open_loops vs реальные loop-файлы) и затор beats-inbox. Exit 0=OK · 1=FLAGS (диагноз) · 2=не смог померить. Суждение-вердикт — Opus/Антон. Раз в неделю (рутина `reality-show-health-weekly`) или по требованию. ## СВЯЗКА С ПАЙПЛАЙНОМ Событие → БИТ в канон (шаблон `beats\_TEMPLATE-beat.md`) → `/reality-show next` (выбор хода) → `/episode` пишет серию → публикация по гейтам → `/reality-show` фиксирует последствия В КАНОНЕ → canon_render.py освежает публичные реестры. ## ГРАНИЦЫ - Read-only по дефолту (`status`/`recap`/`next`/`check`); правки канона — явными действиями с объявлением. - Голос Антона = Opus/Fable (если сессия слабее — суждение `next` делегируй субагенту `model:'opus'`). - Draft-first наружу: публикует `/episode` по «+». Tier-2 outbound → пауза+спрос. - Приватность: секреты OUT; ось `reveal` уважаем (не палить live_hold/spoiler_until в рекапах наружу). Сериальность из РЕАЛЬНЫХ битов, не из выдумки. - AK-47: один SKILL.md, сторов больше НЕТ (канон и есть стор). Канон-законы: `decision-single-canon-story-state` + `_SHOW-CANON.md`.