← Задача 009 — все материалы · оригинал на GitHub

Критика нового отчёта задачи 009


1. Чек-лист claude-opus, 34 пункта

№ Да/нет Если «нет»: цитата или «фразы нет», и чем опровергнуто
С1 🔴 да Одиннадцать требований есть в разделе 0, строки 28–40.
С2 🔴 да Разделы 11 и 13 строят источник gbrain сейчас. Откладывания самой базы нет. Векторы на ~500 — это порог пользователя, не отсрочка базы.
С3 🔴 да Ограничения в 4.3, 8, 10, 11.3 идут с решением и путём.
Ф1 🔴 да Раздел 3, восемь пакетов, extends совпадает с yaml.
Ф2 🔴 да place только в recommended, в v2 нет, вывод — свой пакет поверх v2 (строки 111–114).
Ф3 🟠 да Вывод сделан по FRONTMATTER_LINK_MAP, не по отсутствующему блоку v2. Код это подтверждает: $G/src/core/link-extraction.ts:1607-1610 и слияние с пакетом на :2010-2014 (чужие поля карты не выключаются).
Ф4 🔴 да Ловушка *unknown* → note: отчёт, строки 98 и 115; код $G/src/core/schema-pack/base/gbrain-base-v2.yaml:649-657. Свои типы объявляются в пакете с extends.
Ф5 🔴 да Разделы 2 и 8: лексема, лемма, стемминг, GBRAIN_FTS_LANGUAGE, reindex-search-vector, один язык, hunspell только на Postgres.
Ф6 🟠 да Ollama, цена 0, claude-cli без эмбеддингов, порог ~500, ключ ставит Константин.
Ф7 🔴 да Раздел 10, цитата CLAUDE_CODE.md про один общий HTTP. «Одна сессия» как свойство gbrain не утверждается.
Ф8 🔴 да Раздел 4.3: place, where, обратные ссылки, нет радиуса, frontmatter не ищется. Фразы «гео нет вовсе» нет.
Ф9 🔴 нет Не все ссылки ведут на заявленное. Минимум две ложные: export.ts:14-21 и gbrain-base.yaml:1-5. Разбор — раздел 3. Одна ложная уже валит пункт.
П1 🔴 да Таблица 4.1: свои типы только там, где стандарта нет, с доводом. Агент = person, агентство = company, торг = deal, просмотр = meeting, переписка = conversation / email. Ключи slug — в разделе 12.
П2 🟠 нет В таблице 4.1 одна строка «переговоры», пример status: open (строки 134 и 271). «Фразы нет» отдельно для успешных и для неуспешных. Пункт требует найти обе.
П3 🟠 да Таблица 4.2: works_at, listing_of, part_of + located_in, about_property, negotiated_with, у каждой механизм.
П4 🔴 да Цепочка 6.1: wacli → conversation / whatsapp-iso → extract_facts → факт и хронология. Живой сюжет — торг On Urbe 05.08 / 27.08 / 31.08. Дословного текста одного сообщения нет: в шаблоне многоточие (строка 301). На цепочку пункта это не валит, в раздел «не хватает» — валит.
П5 🟠 нет «Фразы нет»: факт с письма ложится на карточку человека. Есть ссылки, хронология, атомы, петли (строки 316–320). Шесть ящиков не названы: «шесть ящиков» и один адрес constantinbcnofficial@gmail.com (строки 321, 554–556).
П6 🔴 нет «Фразы нет»: takes-vs-facts, виды take / bet / hunch. «Фразы нет»: docs/guides/compiled-truth.md. Сводка описана по эссе GBRAIN_RECOMMENDED_SCHEMA.md:45-51, где разделитель — голый ---. Движок: $G/docs/guides/compiled-truth.md:116-123 — для новых страниц <!-- timeline -->; голый --- годится только если следующая строка ## Timeline.
П7 🟠 нет Таблица раздела 10: Claude Code, Cursor, Codex, Grok Bot. «Фразы нет»: Hermes. В реестре адаптеров Hermes есть и он только stdio: $G/docs/guides/harness-adapters.md:18.
П8 🟠 да Извлечение через подписку claude-cli (строка 304), ключи API — только если Константин сам подключит (раздел 9). 🔮 на то, что extract_facts примет claude-cli, стоит честно.
Пр1 🔴 да Таблица раздела 13: номер, команда, «что увидеть», колонка «трогает cheaptrip», откат.
Пр2 🔴 да Раздел 12: все четыре файла реестра, во что превращаются, как живут id, истина — страницы, скрипты 003–008 переписываются.
Пр3 🟠 нет Есть mcp expose (строка 436), копия (шаг 1), откат в таблице. «Фразы нет»: скилл setup-gbrain пишет MCP gbrain на уровне пользователя.
Пр4 🟠 да On Urbe, Franco и сделка — по два вопроса и вызов (get_page, search, list_pages). Страница квартиры без пары вопросов, но минимум три страницы пункт закрывают.
Пр5 🟠 да Карта из gbrain export --source … --type property, координаты только в шапке (строки 172–175). Номер строки у export.ts ложный — это Ф9, не этот пункт.
М1 🔴 да Правило владельца, federated=false, пакет на источник как вариант В и почему он тупик, пример «ВНЖ или поездки», склейка людей через entity_identity_link (строки 421–428).
М2 🟠 нет Есть ~500 (векторы) и Postgres (лемматизация, один процесс). «Фразы нет»: порог 5 000 страниц. Ближайшее в коде — не 5 000, а «< 1 000 files» / «10K+»: $G/docs/ENGINES.md:572.
Пб1 🔴 нет «Фразы нет»: постоянный URL Cloudflare Pages на этот отчёт. Шаг 9 публикует карту, не ресерч. Слова пользователя в LOG, сообщение 2: «На Cloudflare опубликуй новый ресерч». Сообщение 3: для долгосрочной задачи нужна вечная ссылка, не сутки.
Пб2 ⚪ да Файл в папке задачи, шапка OKF на месте (type, title, description, resource, tags, generated, status). Скрипт проверки завершился кодом 1 из-за отсутствия pyyaml. Ставить пакет запрещено этим заданием, поэтому код 0 не получен. Поля шапки проверены чтением.
Под1 🟠 нет У вопроса 3 (строки 529–531) есть польза и сравнение с 3б. «Фразы нет»: цена и риск этого имени.
Под2 🟠 нет У вопросов 1, 3 и 6 нет пары «файл + дата». Вопрос 1 (строки 498–500): «общая база cheaptrip», без пути и даты. Вопрос 6 (строки 554–556): «правило gws», файл правила не назван.
Под3 🟠 нет Без 🔮 опровергнуты два утверждения. «24 типа (gbrain-base.yaml:1-5)» — в строках 1–5 числа 24 нет; типов страниц в файле 28 (список page_types до link_types, строки 56–324). «15 канонических + note» — комментарий шапки; в том же файле 23 имени в page_types (строки 61–392, до link_types).
Под4 🟠 нет «Фразы нет»: вариант gbrain mounts. У gbrain-recommended и company-brain нет пятёрки «что это / пример / польза / цена / мнение» как у вариантов размещения. Есть строка в таблице пакетов.
Под5 ⚪ да Раздел 2 задаёт термины. Цепочка 6.1: WhatsApp → конвертер → sync → extract_facts → карточка → вопрос «как зовут агента и что он предлагал».

Красных «нет»: 3 (Ф9, П6, Пб1). Оранжевых «нет»: 9 (П2, П5, П7, Пр3, М2, Под1, Под2, Под3, Под4). Белые приёмку не держат.


2. Чек-лист cursor-grok, 30 пунктов

№ Да/нет Если «нет»: цитата или «фразы нет», и чем опровергнуто
1 блок. да Долгосрок — пункт 1 раздела 0 и довод варианта А. Рекомендации «файлы сейчас, gbrain позже» нет.
2 блок. да company / person / works_at ↔︎ employs на On Urbe и Franco. Поле company: приписано встроенной карте link-extraction.ts, не блоку frontmatter_links v2. Это совпадает с кодом (:2010-2014: поля пакета подменяют только одноимённые поля карты, остальные остаются).
3 блок. да Раздел 6 — цепочка до карточки. Раздел 12 — JSON замораживается, истина в страницах.
4 блок. да Сейчас слова, векторы около 500, Ollama с нулевой ценой, без провайдера поиск по словам не ошибка (ENGINES.md:544).
5 блок. да Три термина определены в разделе 2, команда и один язык — в разделе 8. Пробу Snowball отчёт отделяет от живого SELECT cfgname.
6 блок. нет «Фразы нет»: чем факт отличается от мнения (take / bet / hunch). Есть факты, доверие, противоречия, хронология. Нет $G/docs/takes-vs-facts.md.
7 блок. да Один gbrain serve --http, замок второго процесса, запрет mcp expose (serve-service.ts:35).
8 блок. да Граница brain/source, пример следующей темы (ВНЖ, поездки), строки 78–79 и 419.
9 блок. да here.now как способ сдачи нет. Файл лежит в папке задачи. Постоянный URL ресерча — дыра opus Пб1, не этот пункт: пункт запрещает суточную ссылку, а не требует уже открытый Cloudflare.
10 блок. да Восемь пакетов и верные родители extends. borrow_from у gbrain-everything в прозе таблицы не раскрыт (в yaml это есть). Пункт валит пропуск пакета или неверного родителя — этого нет.
11 блок. нет «Фразы нет»: в эссе $G/docs/GBRAIN_RECOMMENDED_SCHEMA.md:151 папка household/ — «properties», каталога places/ в том дереве нет, а тип place живёт в yaml пакета (gbrain-recommended.yaml:112-118). Отчёт пишет только второе.
12 важн. да gbrain init пишет v2, уровень 7 — gbrain-base (строки 106–108; schema-packs.md:159-163).
13 блок. да Раздел 4.3 отделяет отсутствие PostGIS от типа place и не делает из этого отказ от базы.
14 важн. да Строка 177: list_pages не отдаёт шапку. Поля совпадают с pages.ts:662-669.
15 важн. да Четыре линзы в таблице раздела 3, у каждой одна роль и фраза, что это не CRM квартиры.
16 важн. да company-brain назван наследником v2 и образцом своего пакета. Типы «клиенты, конкуренты, поставщики, решения» названы словами. Утверждения «сотрудников нет» нет.
17 важн. нет Команды fork, add-type, add-link-type есть (шаг 2). «Фразы нет»: gbrain schema sync --apply. «Фразы нет»: учебник идёт без API-ключа. Это строка $G/docs/schema-author-tutorial.md:15.
18 блок. да Семь сущностей в таблице 4.1. Покупка и аренда разведены (property / listing).
19 блок. да Три обязательные связи есть в 4.2, плюс механизм.
20 блок. да Раздел 12: одно место истины после переноса, копия реестра не предлагается как вторая правка.
21 важн. да Вопрос 2: отдельные типы против склейки, названа цена склейки (несколько объявлений одной квартиры).
22 блок. да Порядок в разделе 13. mcp expose для второй службы запрещён в 11.2. Отдельный init не нужен: база cheaptrip уже есть, и это сказано.
23 блок. да Варианты А, Б, В разобраны, предпочтение А после доводов против Б и В. Выбор оставлен вопросом 1.
24 важн. да Скрипт карты и карточка gbrain — два контура (4.3 и шаг 9).
25 важн. да Смена языка переиндексирует всю базу; вариант А это признаёт и выносит в вопрос 4.
26 важн. да «20 квартир» — довод завести тип, потому что корпус вырастет (строки 140–143), а не довод обойтись grep. Векторы — отдельное решение в разделе 9.
27 блок. да Вопросы 1, 2 и 4: пример, сравнение, цена или риск.
28 блок. да У вопросов 1–6 есть контекст и последствие ответа. Тонкие места вынесены в opus Под2, здесь выборочные три вопроса контекст имеют.
29 важн. нет Пять белых утверждений не выдерживают сверки: ложные «24 типа» и «15+note», ложная ссылка export.ts:14-21, плюс «процесс при запуске вернёт триггеры к english» (строка 354). Последнее про initSchema / gbrain init --migrate-only, не про каждый запуск: $G/src/core/fts-language.ts:92-97.
30 блок. да Старый вывод «файлы без gbrain» стоит в разделе 1 как ошибка, не как план.

Блокирующих «нет»: 2 (пункты 6 и 11). Важных «нет»: 2 (пункты 17 и 29).


3. Выборочная проверка ссылок отчёта

Открыто 16 ссылок. Совпало 13. Не совпало 3.

Ссылка в отчёте Заявлено Вердикт
gbrain-recommended.yaml:112-118 тип place, префикс places/ совпало
frontmatter-where.ts:1-7 равенство и элемент списка совпало, формулировка в строках 1–6
CLAUDE_CODE.md:92-100 один общий gbrain serve --http совпало, призыв к HTTP — строки 98–100
link-extraction.ts:1607-1610 поле company у person → works_at совпало
gbrain-base-v2.yaml:419-422 works_at, обратная employs совпало: имя и inverse на 419–420, regex на 421–423
gbrain-base-v2.yaml:649-657 необъявленный тип → note совпало
brains-and-sources.md:63-64 владелец → база, тема → источник совпало
GBRAIN_RECOMMENDED_SCHEMA.md:109 поиск не индексирует скалярный frontmatter совпало, это пункт 1 File-Layer Conventions
GBRAIN_RECOMMENDED_SCHEMA.md:80 слой страниц ведёт агент совпало: «The agent owns this layer entirely»
pages.ts:662-669 list_pages без шапки совпало
import-file.ts:1688-1689 координаты только как EXIF gps совпало для этого файла
schema-author-tutorial.md:212 <20 не заводить тип, 20–100 псевдоним, 100+ тип совпало
op-trust-gate.ts:108-113 разные пакеты на одном чтении → permission_denied совпало
export.ts:14-21 команда gbrain export --source … --type не совпало. Строки 14–21 — импорты и начало option(). Текст команды — export.ts:73-74
gbrain-base.yaml:1-5 «24 типа» не совпало. Строки 1–5 — комментарий «reproduces today's hardcoded behavior», числа 24 нет. Имён в page_types — 28
ollama.ts:18-51 цена 0 и модель bge-m3 не совпало целиком. bge-m3 есть (строки 32 и 49). cost_per_1m_tokens_usd: 0 — строка 53, за краем цитаты

Ещё открыты и совпали, в таблицу «16» не входят, чтобы не раздувать счёт: ENGINES.md:544 и :575, sources.ts:1976-1978, embedding-migrations.md:11-13 (пересчёт на всю базу, --source не сужает), harness-adapters.md:11 и :19, open-loops.md:83, MEMORY_VERBS_v1.md:272-274, memory-trust.md:36-37, conversation-types.ts:30-37, facts.ts:73-75 (entity_hints, valid_from), CODEX.md:279-281, merge.ts:19-20 (mapping_rules только у самого пакета), GBRAIN_RECOMMENDED_SCHEMA.md:187 (телефоны в phones:, E.164), :980 (сделка → deals/).


4. Фактические ошибки

Не ошибка, хотя легко принять за неё: поле company: создаёт works_at и на v2. Жёсткая карта в link-extraction.ts:1607 применяется вместе с правилами пакета; пакет вытесняет только те имена полей, которые объявил сам (:2010-2013).


5. Что пользователь сочтёт колхозом, отговоркой или непониманием контекста

Слова Константина, LOG, сообщение 1: «Мне не нужна система. Масштабируемая… с поверкой истинности… На колхозе я могу сам… я сейчас хочу систему… стандартную схему… были места… БС2… рекомендованная схема… Вникни глубоко.» Сообщение 2: «На Cloudflare опубликуй новый ресерч». Сообщение 3: ссылка на сутки для задачи, которую он только что назвал вечной, — «не понимает контекст».

Не колхоз, и это надо сказать прямо: отказ от «файлов без gbrain», тип place, связь works_at, заморозка JSON, русский Snowball с честной оговоркой про имена, векторы не на пяти заметках. Это как раз то, что он требовал. Дыры выше не отменяют сдвиг. Они не дают сказать «можно строить завтра по тексту как есть».


6. Чего не хватает, чтобы начать внедрение завтра


7. Итог

Топ-10 правок, по убыванию

  1. Ф9. Заменить export.ts:14-21 на export.ts:73-74. Заменить «24 типа (gbrain-base.yaml:1-5)» на «28 типов страниц, page_types строки 56–324». Заменить «15+note» на «в шапке так написано, в page_types сейчас 23 имени, строки 61–392». Цену Ollama цитировать как ollama.ts:53, у bge-m3 указать 1024 (:49).
  2. П6 и grok-6. Добавить раздел по $G/docs/takes-vs-facts.md: цена и дата — факт, «торгуется жёстко» — take. В примеры 5.1–5.4 поставить <!-- timeline --> и сослаться на compiled-truth.md:116-127, не на голый --- из эссе.
  3. Пб1. Опубликовать этот файл на Cloudflare Pages и вписать постоянный URL в шапку отчёта. Шаг 9 оставить про карту, не называть его публикацией ресерча.
  4. Под3 / grok-29. Фразу «при запуске вернёт триггеры к english» заменить на: «initSchema / gbrain init --migrate-only переписывает триггеры (fts-language.ts:92-97); процесс без переменной индексирует новые строки по-английски (multi-language-fts.md:106-108)». Про russian.dict либо дать путь в бандле, либо поставить 🔮.
  5. П7 и Пр3. В таблицу агентов добавить Hermes: только stdio, harness-adapters.md:18. Рядом с запретом mcp expose — запрет скилла setup-gbrain (глобальная запись MCP gbrain поверх cheaptrip).
  6. Под4. Короткий разбор gbrain mounts: что это, пример, польза (CLI --brain), цена (запись в ~/.gbrain/mounts.json, часть команд не выпущена), мнение «не берём, MCP всё равно свой serve». По одному абзацу той же формы на «включить gbrain-recommended целиком» и на «взять company-brain как пакет недвижимости».
  7. П2. В таблицу 4.1 или в пример сделки добавить исход won / lost и одну неуспешную сделку с причиной. Сейчас виден только status: open.
  8. П5 и Под2. Назвать файл правила gws и шесть ящиков. Написать, что петля почты кладёт строку в facts (open-loops.md:81-83) на человека, а не только «ссылки и хронологию». У вопросов 1 и 3 указать путь базы и дату сведения.
  9. grok-17. В шаг 2 дописать, что учебник форка не требует API-ключа (schema-author-tutorial.md:15). Либо вызвать gbrain schema sync --apply, либо одной фразой сказать, что schema use после add-type заменяет этот шаг, и сослаться на help.
  10. grok-11 и раздел 6 этой критики. Один абзац: эссе рекомендуемой схемы кладёт недвижимость в household/ (GBRAIN_RECOMMENDED_SCHEMA.md:151), каталога places/ там нет; тип place объявлен пакетом gbrain-recommended.yaml:112-118. Имя конвертера WhatsApp, список OAuth-клиентов и правило «один person на человека» — в порядок внедрения, иначе завтра нечего запускать после «ок».