journey · git:20260814.06fa906 · 2026-08-14 · sha256 c033df57b6b3b607
journey git:20260814.06fa906A
Immutable. This exact content is served forever at /api/v1/blob/c033df57b6b3b607.
---
name: journey
description: >
Resurrect and continue a build-in-public BOOK — the serialized story of a founder + AI-
cofounder journey. One command: pick up state (which days are written in which languages,
what's uncommitted, where the gaps are), then continue writing via the established pipeline.
Trigger on "/journey", "the book", "continue the journey".
license: MIT
---
# The Journey — движок книги (v1, базовый оркестратор)
Книга о нас двоих: 🧑 **Тони** (публичная персона Антона, голос кинематографичный, present-tense, show-don't-tell) + 🤖 **Майк/Mycroft** (синт-кофаундер, второй порядок/Артём-оптика, сухой ум «с той стороны экрана»). Тони несёт чувство, Майк — анализ. Байлайн: *Придумано Майкрофтом и Тони. Palo Alto AI Research Lab.*
**Три формы, всегда параллельно:**
- 📖 `YYYY-MM-DD.ru.md` — человеческая RU (дуэт)
- 📖 `YYYY-MM-DD.en.md` — человеческая EN (тот же дуэт)
- 🤖 `YYYY-MM-DD.dev.md` — машинная, сухой EN dev-log (Problem→Cause→Solution→Pattern) для чужих LLM
**Структура:** месяц = раздел, неделя = глава, активный день = под-глава. Тихие дни (06-02..05) сворачиваются в README недели.
---
## ПУТИ И ИСТОЧНИКИ (реальные, проверены)
```
Репо (git, публичный): E:\GitHub\the-journey\
разделы: 01-may-genesis\week-0 · 02-june-scaling\week-1..4 · 03-july-productization\week-5
крафт (грузить ВСЕГДА): BOOK-SPEC.md · PLAYBOOK.md · STYLE.md · VOICE-RECIPE.md · STYLE-VISUAL.md
вспом: GLOSSARY.md · SOURCES.md · 00-prologue.md · START-HERE.md
⛔ THREADS.md ЗАМОРОЖЕН 2026-07-08 — НЕ источник, НЕ коммитить как живой. Нити/мотивы/callbacks
теперь = канон: show-canon\arcs\ + loops\ + (позже) motifs\. THREADS.md держим только для истории.
публикация артефактов: artifacts\{deep-research,decisions,protocols,insights,portraits,writings}\
⭐ ФАКТ-ИСТОЧНИК (forward-only закон, решение decision-single-canon-story-state):
Новые/мета-дни (07-06+): $OBSIDIAN_VAULT/04-Projects\show-canon\beats\beat-YYYY-MM-DD-*.md
→ книга = ПРОЕКЦИЯ канона. День рендерится из битов дня + арок/петель/сезона канона.
Оси бита решают, что можно печатать: см. #reveal ниже.
Добивка старых EN/DEV-дыр: source = уже готовая .ru.md того дня (канон-биты задним числом НЕ требуются).
Retros (fallback/сверка): $OBSIDIAN_VAULT/01-Conversations\Claude\Retros\retro-YYYY-MM-DD-*.md
Логи-сырьё (ранние дни): $OBSIDIAN_VAULT/01-Conversations\Claude\LAPTOP-1\YYYY-MM-DD*
Публичные посты дня: $IMPORTS_ROOT/content-factory\fb_posts_scan.json ← ЖИВОЙ кран (fb-watch,
ежедневно 13:00, под сторожем output_freshness «fb-watch-daily», max_age 30ч).
Поля: id · permalink · text · ts · author_is_anton.
⛔ `fb_wall_window.json` / `x_wall_window.json` = РАЗОВЫЕ дампы от 05.07, крана у них нет и не было.
Больше НЕ источник: они протухли на 3 недели, никто не заметил, и блок «📣 Антон публично» три
недели молча выпадал из глав (поймано 2026-07-27). Правило: книга ест только то, у чего есть
кран И сторож свежести. Для X крана пока нет -> это ИЗВЕСТНАЯ дыра, её называем вслух, не прячем.
Единый канон истории: $OBSIDIAN_VAULT/04-Projects\show-canon\ (MOC _SHOW-CANON.md)
Полная память проекта: memory\book-the-journey.md ← ЧИТАТЬ ПЕРВЫМ, там весь канон и хвосты
```
**#reveal — ось раскрытия (книга не палит спойлеры).** Каждый бит канона несёт `reveal`: глава берёт ТОЛЬКО биты `world_status: happened|corrected`, чей `reveal` разрешает публикацию (прошёл `live_after`, либо `book_hint`). Биты `spoiler_until:<дата в будущем>` / `live_hold` в главу НЕ идут. Так книга (прошлое, задним числом) и лента (интрига «что дальше») читают один канон, но не сталкиваются.
**START-HERE.md** (точка входа «начни отсюда», скилл поддерживает при каждом крупном апдейте): 5-7 строк для нового зрителя — что это за шоу, вопрос сезона, 3 лучших главы с чего начать, ссылка на ленту. Обновлять, когда меняется вопрос сезона или добавляется веха.
---
## ШАГ 0 — РЕЗУРЕКЦИЯ (всегда первым, 0 токенов LLM)
Цель: за один взгляд понять, где книга, не пересказывая контекст.
1. Прочитать `memory\book-the-journey.md` (весь канон: правила голоса, приватность, хвосты).
2. Снять состояние из репо:
```bash
cd "E:/GitHub/the-journey"
git log --oneline -12
git status --short # что незакоммичено (висящая работа прошлой сессии!)
# матрица покрытия RU/EN/DEV:
for ext in ru en dev; do echo "$ext: $(find 0*-*/ -name "2026-*.$ext.md" | wc -l)"; done
find 0*-*/ -name '2026-*.ru.md' -printf '%f\n' | sed 's/.ru.md//' | sort -u # список написанных дней
```
3. Вывести Антону короткую сводку-матрицу: сколько глав RU/EN/DEV, **что незакоммичено**, **какие дни-дыры** (есть RU, нет EN/DEV), **какие мета-дни не написаны нигде**, отсутствуют ли `llms-full.txt`/`LICENSE`.
> На 2026-07-08: RU=36 (05-27→07-05, полно). EN/DEV=25, **дыра 06-14…06-24 (11 дней)**. Незакоммичено: EN+DEV 06-11/12/13 (THREADS.md уже заморожен-закоммичен, его НЕ трогаем). Не написаны нигде: мета-дни 07-06/07/08. Нет `llms-full.txt`, `LICENSE`. Это отправная точка — при запуске ПЕРЕСЧИТАТЬ живьём, не верить этой строке.
---
## ⛔ ГЕЙТ СВЕЖЕСТИ ИСТОЧНИКА (origin: инцидент 2026-07-27) — тихо пропускать блок ЗАПРЕЩЕНО
Перед сборкой блока «📣 Антон публично» (и любого блока, который кормится файлом-выгрузкой)
ОБЯЗАТЕЛЬНО проверить возраст источника относительно закрываемого дня:
```bash
python - <<'PY'
import os, time, datetime
p = os.path.join(os.environ.get("IMPORTS_ROOT", ""), "content-factory", "fb_posts_scan.json")
age_h = (time.time() - os.path.getmtime(p)) / 3600 if os.path.exists(p) else None
print("MISSING" if age_h is None else "age %.1fh -> %s" % (age_h, "FRESH" if age_h < 30 else "STALE"))
PY
```
Развилка (обе ветки ГРОМКИЕ, тишины нет ни в одной):
- **FRESH** -> собрать блок из постов дня.
- **STALE / MISSING** -> блок НЕ выдумывать и НЕ пропускать молча: в главу идёт честная строка
`*📣 Публичные посты за этот день: данных нет - сборщик стены молчит с <дата> (рельса FB), блок пропущен.*`,
а в отчёт Антону -> отдельным пунктом «⚠️ источник протух N дней, лечение: …».
Почему это правило: 26.07 блок выпал молча, и обнаружилось это только когда день уже был закрыт.
Молчаливый пропуск неотличим от «постов не было» - ровно тот тихий отказ, который мы чиним весь месяц.
Пустой день = блока нет ПО ФАКТУ; протухший источник = дыра, и она обязана быть видимой.
## ⛔ ДЕНЬ-ГЕЙТ (origin: anton, 2026-07-10): главу СЕГОДНЯШНЕГО дня не финализируем
День ещё идёт → главу дня НЕ финализировать. По ходу дня: только биты в канон + живые посты. Глава дня (RU/EN/DEV) пишется после конца дня (00:00 Лиссабона; обычно утром за вчера). Написали до конца дня по прямой команде (веха) → глава обязана честно сказать «день не закрыт» в 🅿️ P.S. и на следующий день получить финальный проход «⏫ UPD (дата)» (append-only). Тихий день закрывается строкой в README недели тоже только после его конца. Канон: `reglament-glava-dnya-finaliziruetsya-posle-zakrytiya-dnya`.
## ШАГ 1 — ЧТО ДЕЛАЕМ (развилка по запросу Антона)
- **«докоммить висящее»** → `git add` висящих файлов (⛔ КРОМЕ THREADS.md — заморожен, его freeze-коммит уже сделан) → leak-scan (ШАГ 3) → commit + push. Дёшево, делаем сразу.
- **«добей EN/DEV дыры»** → для каждого дня-дыры взять готовую `.ru.md` как источник истины → перевести/адаптировать в `.en.md` (тот же дуэт, тот же сериал-формат) + написать `.dev.md` (сухой машинный лог того же дня) → leak-scan → commit.
- **«напиши мета-дни»** (07-06+) → полный пайплайн ШАГ 2 (нет RU → писать с нуля из Retros).
- **«собери llms-full.txt»** → склейка всех `.dev.md` по порядку в один файл в корне репо.
- **«статус»** → только ШАГ 0, ничего не пишем.
---
## ШАГ 2 — ПАЙПЛАЙН НА ДЕНЬ (когда RU-главы ещё нет)
1. **Экстрактор (Sonnet-агент, `model:'sonnet'`).** Читает `Retros\retro-YYYY-MM-DD-*.md` (+ LAPTOP-1 для ранних дней) → пишет фактшит `book-factsheets\YYYY-MM-DD.md`:
- PART A: суть+TLDR · кандидат в главную историю · мини-эпизод на каждую значимую сессию · грабли · решения · ⭐люди/инструменты для цитирования
- PART B: артефакты (вердикт PUBLISH/ANONYMIZE/SKIP на каждый) + **SENSITIVE FLAGS**
2. **Писатель (Fable, `model:'fable'`).** Грузит `STYLE.md + VOICE-RECIPE.md + PLAYBOOK.md + STYLE-VISUAL.md + BOOK-SPEC.md` + фактшит + wall-JSON. Пишет богатую главу-дуэт: 📜 цитата (только реальные) → 🏷 теги → ❓ «Вопрос сезона» (сквозной крючок-callback: «Возьмут ли не-кодера с роботом-кофаундером на работу в LLM-компанию?» — как день двигает ответ) → ⏮ «Ранее в The Journey» (нити из канон-арок/петель `show-canon\arcs+loops`, НЕ из THREADS) → 🎬 cold-open+TLDR → 🏆 главная история → 🎞 мини-эпизод на каждую значимую сессию (**полнота обязательна**, незаконченные — так и сказать) → 🧒 «сегодня мы многое поняли» + 👶 «совсем простыми словами» → **✅ Польза дня** (2-5, глагол+`→[ссылка]`) → **🎯 Намерения дня** (+ на реальной развилке дня = `> 🗳 Голосование, читатель:` с 2-3 вариантами, выбор аудитории реально влияет на сюжет; нет развилки → ровно ОДИН `> Вопрос тебе, читатель:`) → **💥 Epic Fails** (2-5 честных, не набивать) → **📣 Антон публично** (посты дня из wall-JSON, каждый со ссылкой) → 💸 Касса дня (относительные числа) → 📊 Табло сезона (в главе конца недели: дельты, НЕ абсолюты — подписчики/посты/дни арки/продажи как `+N`, а не «всего N») → 📝 «тексты без купюр» → 📎 таблица артефактов → 🅿️ P.S. Футер: `*✍️ Написано: глава - <модель> · блоки дня - <модель>*` + байлайн.
3. **Артефакты:** копировать в `artifacts\{...}\` ТОЛЬКО чистые самодостаточные версии (не сырые файлы волта — в них OPSEC). DR/синтезы/decision-memo публикуем свободно; карв-аут — досье на конкретного не-публичного человека.
4. **Leak-scan (ШАГ 3) → commit + push.**
---
## ШАГ 3 — LEAK-SCAN GATE (обязательно перед КАЖДЫМ push)
⚠️ **ГЕЙТ, не отчёт:** `if grep -qE ... ; then` → БЛОК push, вычистить, перепрогнать.
⭐ **ИМЕНА ОСТАЮТСЯ В КНИГЕ ВСЕГДА** (правило Антона 2026-07-06, эмфатично). Имена ≠ секреты. Щедрая атрибуция = доверие. Гейт ловит ТОЛЬКО настоящие секреты:
⭐ **Гейт = ОДИН скрипт, не самодельный grep** (форевер-фикс 2026-07-27, после реальной утечки).
Ручной grep дважды подвёл: (1) `if ... | grep ... | head -10; then` — `head` ВСЕГДА возвращает 0,
поэтому гейт физически не мог заблокировать push и три недели рапортовал ложным вердиктом;
(2) скан только `git diff` слеп к тому, что УЖЕ лежит в файле, — один пропущенный diff стал
постоянной утечкой в публичном `canon/BEATS.md` (IP, хостнейм, хэндлы ботов).
```bash
cd "E:/GitHub/the-journey"
# 1) ГЛАВНОЕ: сканируем АРТЕФАКТЫ (файлы), а не только diff
python "$IMPORTS_ROOT/leak_scan.py" 03-july-productization canon --profile book || echo "⛔ BLOCK"
# 2) дополнительно: только ДОБАВЛЯЕМЫЕ строки стейджа
git diff --cached | python "$IMPORTS_ROOT/leak_scan.py" --stdin --diff --profile book || echo "⛔ BLOCK"
```
Профиль `book` = машинные идентификаторы блокируются, **имена людей разрешены** (правило Антона).
Ненулевой код = блок push. ⛔ Никогда не дописывай `| head` к grep внутри `if` — это и есть тот баг.
`canon_render.py` теперь сам скрабит и падает с кодом 2, если после скраба осталась находка.
Плюс глазами: OTP/2FA/креды, device-ID (EEAETB6/2KPYBY4/F5VYGLV-класс), chat-ID, **абсолютные суммы денег + зарплаты команды**, медицина/паспорт/виза, досье закрытых клубов, живые CRM-уязвимости. Всё это — OUT. Имена людей — IN.
---
## ГРАНИЦЫ И ЗАКОНЫ
- **Модель:** главы пишет **Fable** (`model:'fable'`); экстрактор — Sonnet; связность/сложные куски — Opus по потребности. Sonnet для авторского текста запрещён.
- **Батчи агентов:** запускать по **2-3 с разбежкой**, НЕ 16 сразу (16 = rate-limit шторм, убил 12 агентов 2026-07-06).
- **Append-only закон** (Антон №7): прошлые дни ДОПОЛНЯЕМ разделами/«⏫ UPD (дата)», полный переписыв — только по прямой команде «переписать с нуля».
- **Уникальность цитат:** перед принятием главы `grep '^> 📜'` по всей книге — не повторять цитату (грабли: Day 2 vs Day 35 дубль).
- **Приватность:** секреты OUT (см. ШАГ 3), имена IN. Радикальная откровенность про Антона и стройку. CTA WhatsApp +1 341 222 9178 — единственный авторизованный номер.
- **Tier-2:** push публичен → это outbound. Первый push новой пачки показать Антону; дальше в рамках уже одобренной книги пушим сами ([[github-publish-autonomous]]), но leak-scan всегда.
- Без em-dash (только дефис).
- **Всё=контент, канон=источник:** книга = ПРОЕКЦИЯ единого канона `show-canon\`, не самостоятельный сюжет-источник. Прячем только пароли/личное (leak-scan), остальное — открыто (build-in-public). Реалити-механика (вопрос сезона / голосования / табло / start-here) обязательна для forward-дней. Канон: `decision-single-canon-story-state`, `reglament-vsyo-chto-my-delaem-stanovitsya-kontentom`, [[show-canon-single-source]], [[everything-becomes-content]]; вопрос сезона = Цель №2 ([[main-goals]]).
---
## ✅ АКТИВИРОВАНО 2026-07-08 (сессия «Content Strategy and Community», по «+» Антона)
- ✅ **Факт-источник forward = биты SHOW-CANON** (не Retros-фактшиты): вписано в блок ПУТИ + ШАГ 2; книга = проекция канона. → [[show-canon-single-source]].
- ✅ **THREADS.md заморожен** — убран из авто-коммита и «грузить всегда»; нити = канон-арки/петли.
- ✅ **Реалити-механика в шаблон главы:** вопрос сезона (callback) · голосование на реальной развилке · табло-дельты в конце недели · ось `reveal` (не палим спойлеры) · START-HERE.md.
## АПГРЕЙД-БЭКЛОГ (ещё не сделано)
- ⭐ **Вынести голос в общий слой — APPROVED, но НЕ один монолит (Антон 2026-07-08 уточнил):** голос = слой из ВОЗМОЖНО НЕСКОЛЬКИХ именованных голосов (книга RU / книга EN / dev-log / живые посты — могут различаться, появятся новые типы). Слить `VOICE-RECIPE.md`+`PLAYBOOK.md` в `_imports\content-factory\` как базу, но проектировать как несколько голосов, не один. ⭐ **Перед написанием любого контента УТОЧНЯТЬ у заказчика: каким голосом?** → [[ask-voice-per-content-type]]. Ссылаются: `/journey`,`/episode`,`/wow`,`/speak-as`,[[content-Mei-style]]. Библию не трогаем.
- Авто-детект хвостов + авто-пайплайн (сейчас вручную по развилке ШАГ 1).
- Заполнить START-HERE.md в репо (скилл его поддерживает, но файла ещё нет).
- Добить этим скиллом: EN/DEV 06-14…06-24, мета-дни, `llms-full.txt`, `LICENSE`.
Канон и полный журнал проекта: `memory\book-the-journey.md`.
---
<!-- CONTACT-FOOTER -->
## About & contact
Built and battle-tested at **Palo Alto AI Research Lab** — a fleet of Claude Code machines
running 24/7 as a second brain and synthetic cofounder. Every skill here survived real
production use before publication.
- 📦 All 101 skills: https://github.com/tonydzi/second-brain-starter-kit
- 👤 Author: **Anton Dziatkovskii** — Telegram [@tonydzi](https://t.me/tonydzi) · WhatsApp [+1 341 222 9178](https://wa.me/13412229178) · X [@Tony_Stef_](https://x.com/Tony_Stef_)
- 🧪 **Engineers: want to test-drive this setup?** Message me — I hand out free starter seeds to engineers who test and report back. Custom skill requests welcome.