Задача 009 — повторная проверка версии 2 отчёта
Коротко
- Версия 2 исправила почти всё: из 46 пунктов двух критик исправлено 41, частично — 2, не исправлено — 3.
- Не принят ни по одному чек-листу, но разрыв
маленький:
- claude-opus — 1 блокирующее «нет» (постоянная ссылка не открывается) и 2 важных;
- cursor-grok — 1 блокирующее «нет» (вариант Б без отката и примера) и 2 важных.
- Главная новая ошибка:
extract_factsпишет факты в источник токена, по умолчаниюdefault(ops/facts.ts:111). Токен Claude Code в порядке внедрения не перенастроен. Значит:- факты о квартирах лягут в базу cheaptrip;
- а при
--no-federatedClaude Code вообще не увидит новые источники.
Как проверял
- Отчёт
REPORT-task-009-…-research-and-design.md, версия 2, 938 строк, прочитан целиком. Ниже —R2:строка. - Критики:
- моя —
REVIEW-task-009-claude-opus-critique-of-new-gbrain-schema-report-against-both-checklists.md; - Cursor Grok —
REVIEW-task-009-cursor-grok-critique-of-new-gbrain-schema-report-against-both-checklists.md.
- моя —
- Запущено, только чтение, в базу ничего не пишется:
bun run SCRIPT-task-009-validate-gbrain-schema-pack-file-and-merge-with-base-v2.ts→ «manifest OK… extends gbrain-base-v2», 25 типов, уdealподтипыlistingиnegotiation,mapping_rulesне унаследованы — 0;- YAML в
R2:200-326побайтно совпадает сEXAMPLE-task-009-gbrain-schema-pack-cons-base-v2-plus-places-and-properties.yaml(diffпустой); SCRIPT-task-009-pglite-russian-snowball-stemming-probe-names-and-nouns.mjs(временная PGLite в памяти) воспроизводит'миха':1,2 'михаил':3,4,false,could not open dictionary file …russian.dict,extension "unaccent" is not available.
- Постоянная ссылка
R2:13:host cons-realestate-gbrain-knowledge-base-research.pages.dev→NXDOMAINв 2026-11-02T17:01Z. Для сравненияcheap-start.pages.devв ту же минуту отвечает 200, то есть сеть работает. $G=/Users/ws/.bun/install/global/node_modules/gbrain. Ни одной командыgbrainне запускал.
1. Статус каждой правки и ошибки из обеих критик
1.1. Фактические ошибки из критики claude-opus
- Ф-1 CLI при живой службе — исправлено.
R2:665-666: «Цена — не узкая: … fail fast withlive_serve…gbrain syncandgbrain sweep --onceare the exceptions».- Окно обслуживания с
launchctl bootout/bootstrap—R2:668,R2:777-800.
- Ф-2 доверие к переписке — исправлено.
R2:579: «переписка лежит в отдельном источникеrealestate-barcelona-whatsapp, ему ставитсяgbrain sources set-trust … external_untrusted»; шаг 5 —R2:796. Для фактов, извлечённых по MCP, — см. новую ошибку Н2. - Ф-3 противоречие про
schema active— исправлено.R2:127: «gbrain schema activeоткрывает базу и при живой службе падает»; команда перенесена в окно (R2:793). - Ф-4
backup checkвместо копии — исправлено.R2:792: «cp -R ~/.gbrain/brain.pglite …;gbrain backup create --output …». - Ф-5
whereтолько на полной поверхности — исправлено.R2:360: «fullSurfaceOnly: true… нуженrequest_toolsили--surface full». - Ф-6 «24 типа» — исправлено.
R2:112: «28 типов страниц,page_types, строки 56–324». - Ф-7 разделитель хронологии — исправлено.
R2:90: «граница — строка<!-- timeline -->»; пилот —R2:411,:441,:487. - Ф-8
ollama.ts:51— исправлено.R2:649: «0 (ollama.ts:53), размерность 1024 (:49)». - Ф-9 время в шапке — не исправлено.
R2:7:at: 2026-11-02T18:05:00Z.- Файл записан в 17:58 CET, то есть 16:58Z. Метка 18:05Z опережает
момент проверки (17:01Z) на час. Это местное время с суффиксом
Z.
- Ф-10 «станет больше сотни» без
🔮— исправлено.R2:186: «🔮 За годы поиска объявлений станет больше сотни». Вариант 2б построен на пороге учебника (R2:178-185).
1.2. Топ-10 правок из критики claude-opus
- CLI и окно обслуживания — исправлено.
R2:665-670,R2:777-800. - Отдельный источник с пониженным доверием —
исправлено.
R2:579-581,R2:796. - Постоянная ссылка на отчёт — исправлено неверно.
R2:13: «Постоянная ссылка на этот отчёт: https://cons-realestate-gbrain-knowledge-base-research.pages.dev».- Домен не существует:
NXDOMAIN, 17:01Z. Ссылка заявлена, но не работает.
- Итог переговоров — исправлено.
R2:369-386: поляoutcome,lost_by,lost_reason; неуспешный торг Housfy —R2:493-505. ИсточникEXAMPLE-…-negotiations…md:61сверил — совпадает. - Факты и мнения — исправлено.
R2:91-93,R2:583-586, блокgbrain:takesв пилоте (R2:435-439), еженедельная чистка (R2:591-597). - Пакет целиком — исправлено.
R2:200-326прошёл загрузчик gbrain.schema sync --applyне упомянут — см. пункт 9 правок cursor-grok. - Hermes и
fullSurfaceOnly— исправлено.R2:682,R2:360. mounts, а также откат и пример у варианта Б — частично.mountsразобран:R2:727-734.- У варианта Б (
R2:717-725) по-прежнему нет строки «Откат» и нет примера с карточкой On Urbe.
- Подача вопросов и
household/— исправлено.- Вопрос 3 с пользой и риском:
R2:848-851. - Старые вопросы с контекстом:
R2:887-936. gbrain-everything: «типов для недвижимости не добавляет» (R2:119).household/:R2:131.
- Вопрос 3 с пользой и риском:
- Точность ссылок и меток — исправлено, кроме
generated.at.- Исправлено: 28 типов,
:53,backup create,<!-- timeline -->,🔮у прогноза, скрипт пробы приложен (R2:18), порог Postgres (R2:671-673). - Не исправлено: время в шапке — см. Ф-9.
- Исправлено: 28 типов,
1.3. Фактические ошибки из критики cursor-grok
- «24 типа» — исправлено.
R2:112. - «15 + note» у БС2 — исправлено.
R2:113: «в шапке — „15 канонических типов +note“; вpage_typesсейчас 23 имени (строки 61–392)». Скрипт подтвердил: 25 = 23 + 2. - Ссылка
export.ts— исправлено.R2:357:export.ts:73-74. Сверено. - Цена Ollama и
bge-m3— исправлено.R2:649. - «При запуске вернёт триггеры к english» — исправлено, с
хвостом.
R2:615: «каждыйinitSchema(), в том числеgbrain init --migrate-only, возвращает триггеры кenglish(fts-language.ts:86-100)». Сверено.- Хвост: в вопросе 4 осталась старая расплывчатая формулировка — «Риск
— процесс без переменной вернёт
english» (R2:861).
russian.dictбез доказательства — исправлено.R2:624— текст ошибки из пробы. Я её воспроизвёл.- Primitive
entity— исправлено.R2:78: «works_at,founded,invested_in,advises,attended,mentions… по умолчанию извлекаемый и с экспертным поиском». Совпадает сprimitives.ts:36-42. - Голый
---в пилоте — исправлено.R2:411,:441,:487.
1.4. Топ-10 правок из критики cursor-grok
- Номера строк и счёт типов — исправлено.
R2:112,:113,:357,:649. - Takes и
<!-- timeline -->— исправлено.R2:87-93,R2:435-441. - Постоянная ссылка — исправлено неверно. Ссылка
вписана (
R2:13), но домен не существует (NXDOMAIN). - Фраза про триггеры и
russian.dict— исправлено.R2:615-616,R2:624. Хвост вR2:861— см. 1.3. - Hermes и
setup-gbrain— исправлено.R2:682,R2:692. СсылкиSKILL.md:343,379-385сверены. mounts,gbrain-recommendedцеликом,company-brainкак пакет — исправлено.R2:142-153,R2:727-734.won/lostи неуспешная сделка — исправлено.R2:372,R2:493-505.- Почта и контекст вопросов — частично.
- Исправлено: файл правила gws и шесть ящиков
(
R2:557-563); петли пишутся вopen_loops(R2:567), это верно поopen-loops.md:12. - Не исправлено: у вопроса 1 нет пути базы
(
~/.gbrain/brain.pglite) и даты сведений о cheaptrip (R2:821).
- Исправлено: файл правила gws и шесть ящиков
(
- Ключ API и
schema sync --apply— частично.- Исправлено: «Ключ API для этого не нужен (
:15)» (R2:139), сверено сschema-author-tutorial.md:15. - Не исправлено:
sync --applyне упомянут вовсе (grep — 0). Нет и фразы, почему он не нужен.
- Исправлено: «Ключ API для этого не нужен (
household/, имена конвертеров, список клиентов OAuth, «один person на человека» — исправлено.R2:131,R2:529,R2:760,R2:687,R2:715,R2:806.
Счёт по 46 пунктам: исправлено — 41; частично — 2
(опус-8, грок-8); не исправлено или исправлено неверно — 3 (Ф-9 /
опус-10 в части времени, опус-3, грок-3, грок-9 в части
sync --apply). Пункты про время и ссылку повторяются в
обеих критиках.
2. Новые ошибки версии 2
2.1. Ошибки
- Н1 🔴 Факты из WhatsApp по MCP лягут в источник cheaptrip, а
Claude Code не увидит новые источники.
- Код:
$G/src/core/ops/facts.ts:111:const sourceId = ctx.sourceId ?? 'default';—extract_factsпишет в источник подключения. Параметра «источник» у операции нет (facts.ts:64-80);- при
visibility: worldвидимость страницыsource_slugпроверяется в том жеsourceId(facts.ts:139,readPageSnapshot(sourceSlug…, { sourceId })). Страница переписки изrealestate-barcelona-whatsappтам не найдётся, и факты станутprivate(комментарийfacts.ts:137); multi-source-brains.md:121-123: подключение без гранта «reads thedefaultsource plus every federated source». Источники отчёт добавляет с--no-federated(R2:705).
- Отчёт:
- шаг 6 перенастраивает только Grok Bot, Cursor и Codex
(
R2:797); - про токен Claude Code — «уже подключён» (
R2:679), «вероятно, подключены Claude Code и Grok Bot» (R2:688); - шаг 9 — «извлечение — MCP
extract_facts» (R2:807), а шаг 8 ждёт, что «вопросы раздела 5 отвечаются через MCP» (R2:806).
- шаг 6 перенастраивает только Grok Bot, Cursor и Codex
(
- Итог: шаг 8 даст пустые ответы, шаг 9 запишет факты о квартирах в
defaultбазы cheaptrip.
- Код:
- Н2 🟠 «Факты… с уровнем
external_untrusted» — не доказано, вероятно неверно. Пометки🔮нет.R2:807: «факты на карточках, с источником, датой и уровнемexternal_untrusted»;R2:550: «с… пометкой, что это слова агента, а не ваши».memory-trust.md:20:agent_written— «put_page,remember,capture, remote MCP writes».sources-trust.ts:7-8: уровень источника действует на «rows written by the next sync or import», а не на факты, которые агент извлёк по MCP.
- Н3 🟠
claude-cli:haiku— устаревшая модель.R2:540,R2:795:claude-cli:haiku.$G/src/core/ai/recipes/claude-cli.ts:136:'haiku': 'claude-haiku-4-5-20251001'. При этом в списке моделей рецепта естьclaude-haiku-5-5(claude-cli.ts:59).- Под тем же алиасом и
chat_model: claude-cli:sonnet(R2:540) →claude-sonnet-4-6(:135).
- Н4 🟠 Связь
counterpartyобъявлена на компанию, а используется и для людей.- Пакет:
inference.target_type: company(R2:290-294). Таблица связей: «deal→company/person» (R2:340). Пилот:counterparties: […, people/franco-on-urbe](R2:479). link-extraction.ts:1998-1999: подсказка папок для поля берётся изtarget_type(папкиcompany).- 🔮 Полный slug
people/…, скорее всего, разрешится и так, но тип связи на человека будет противоречить объявлению. Нужна отдельная связь наpersonили убратьtarget_type.
- Пакет:
- Н5 ⚪
enrichableнеполно.R2:330: «обогащение в коде по-прежнему зашито наpersonиcompany».enrichable.ts:24-25: «hardcode person/company/deal». - Н6 ⚪ Диапазон
company-brain.yaml:128-208(R2:115): связи начинаются на:130;:128— типrunbook. Смещение на 2 строки. - Н7 ⚪ Время в шапке — то же, что Ф-9:
18:05:00Zпри записи в 16:58Z.
2.2. Сверка новых ссылок версии 2 — 24 штуки
| № | Ссылка | Что заявлено | Итог |
|---|---|---|---|
| 1 | primitives.ts:36-74 |
связи и поля entity, по умолчанию извлекаемый |
✅ :36-42 |
| 2 | compiled-truth.md:116-128 |
<!-- timeline --> основной разделитель |
✅ |
| 3 | takes-vs-facts.md:1-20 |
факты и мнения | ✅ (раньше сверен) |
| 4 | memory-trust.md:11-21 |
уровни доверия | ✅ |
| 5 | load-active.ts:114-125 |
путь ~/.gbrain/schema-packs/<name>/pack.yaml |
✅ |
| 6 | enrichable.ts:12-26 |
обогащение зашито | 🟡 person/company/deal, а не только два (Н5) |
| 7 | fence-format.md:17-18 |
takes_add лучше ручной таблицы |
✅ :16-18 |
| 8 | fence-format.md:32,90-106 |
маркеры и колонки takes | ✅ |
| 9 | builtins.ts:644-672 |
шаблон whatsapp-iso |
✅ |
| 10 | builtins.ts:660 |
timezone_policy: 'inline_utc' |
✅ |
| 11 | extraction-availability.ts:23-28 |
isAvailable('chat', …) |
✅ |
| 12 | claude-cli.md:7-13 |
claude-cli отвечает на chat |
✅ |
| 13 | fts-language.ts:86-100 |
initSchema возвращает english |
✅ |
| 14 | ENGINES.md:572 |
PGLite < 1 000 файлов, Postgres 10K+ | ✅ |
| 15 | HERMES.md:8 |
Hermes запускает serve по stdio |
✅ |
| 16 | harness-adapters.md:15,18 |
Grok Bot thin-cli, Hermes только stdio | ✅ |
| 17 | auth.ts:1456 |
auth list |
✅ |
| 18 | ~/.claude/skills/setup-gbrain/SKILL.md:343,379-385 |
claude mcp add --scope user |
✅ |
| 19 | schema.ts:330-350,705-720 |
validate и diff читают только файлы |
✅ loadPackFromFile |
| 20 | backup.ts:39-40 |
backup create --output |
✅ |
| 21 | schema-author-tutorial.md:15 |
ключ API не нужен | ✅ :15 |
| 22 | remote-mcp.md:427-446 |
live_serve, админка через сервер |
✅ |
| 23 | brains-and-sources.md:130-142 |
--brain, .gbrain-mount |
✅ |
| 24 | company-brain.yaml:128-208 |
связи, frontmatter_links, enrichable |
🟡 со :130 (Н6) |
- Итог: 22 ✅, 2 🟡, 0 ❌.
- Ещё две проверки: текст
ENGINES.md:575иGBRAIN_RECOMMENDED_SCHEMA.md:925-937совпал. - Отдельно запущены две ссылки-скрипта (
R2:18,R2:192) — результаты совпали с отчётом.
3. Итог приёмки
3.1. Чек-лист claude-opus — НЕ ПРИНЯТ
- Правило: все 🔴 — «да», 🟠 «нет» не больше двух.
- Пересчёт пунктов, которые в версии 1 были «нет»:
- стали «да»: С3, Ф9 (24 ссылки: 0 ❌, 2 🟡 с верной сутью), П2, П4, П6, М2, Под1, Под2, Под4;
- Пб1 🔴 — нет: ссылка
R2:13не открывается (NXDOMAIN); - П7 🟠 — нет: в таблице агентов
(
R2:677-683) нет столбца «куда пишет». Для Claude Code — «уже подключён», без источника записи (см. Н1). В версии 1 столбец «Пишет в» был; - Под3 🟠 — нет: непомеченная догадка «уровень
external_untrusted» у фактов (R2:807, Н2).
- Счёт: 🔴 «нет» — 1, 🟠 «нет» — 2. Если ссылка заработает, отчёт пройдёт по этому чек-листу ровно на пороге.
3.2. Чек-лист cursor-grok — НЕ ПРИНЯТ
- Правило: все блокирующие — «да», важных «нет» не больше одного.
- Пересчёт:
- стали «да»: 6, 11, 27, 28, 15;
- 23 (блокирующий) — нет: у варианта Б нет отката и
нет примера с карточкой On Urbe (
R2:717-725); - 17 (важный) — нет: нет
gbrain schema sync --applyи нет фразы, почему он не нужен; - 29 (важный) — нет: непомеченная догадка
R2:807(Н2).
- Счёт: блокирующих «нет» — 1, важных «нет» — 2.
3.3. Оставшиеся правки — что заменить на что
R2:13— ссылка.- Задеплоить отчёт на Cloudflare Pages под этим именем и проверить, что адрес открывается.
- Если имя проекта занято или другое — заменить URL на реально работающий.
- Шаг 6 (
R2:797), Claude Code.- Добавить: «токен Claude Code:
gbrain auth rescope --token <имя Claude Code> --sources realestate-barcelona,realestate-barcelona-whatsapp,default— первый idrealestate-barcelona, сюда пишутся факты (ops/facts.ts:111,multi-source-brains.md:230-247)». - 🔮 Либо отдельный токен для агента недвижимости, чтобы не переносить запись фактов cheaptrip.
- В
R2:679заменить «уже подключён» на «нужен грант наrealestate-barcelona,realestate-barcelona-whatsapp(иначе не видит источники с--no-federated,multi-source-brains.md:121-123)».
- Добавить: «токен Claude Code:
- Таблица
R2:677-683. Вернуть столбец «Пишет в» — первый источник гранта для каждого агента. R2:807иR2:550.- Заменить «с… уровнем
external_untrusted» на: «страницы переписки —external_untrusted(уровень источника,sources-trust.ts:7-8); факты, извлечённые по MCP, — 🔮 вероятноagent_written(memory-trust.md:20), проверить на пилоте». - Или извлекать в окне обслуживания CLI-командой
extract-conversation-factsпо источнику переписки и проверить уровень у результата.
- Заменить «с… уровнем
- Вариант Б (
R2:717-725). Добавить:- «Откат: остановить и удалить вторую службу launchd, удалить
~/.gbrain-realestate; база cheaptrip не затронута»; - пример: «карточку Franco обогащает WhatsApp так же, но агент
спрашивает вторую базу по адресу
127.0.0.1:3132».
- «Откат: остановить и удалить вторую службу launchd, удалить
- Шаг 0.1 или 2 (
R2:784,:793). Добавить фразу: «gbrain schema sync --applyне нужен: он перетипизирует уже загруженные страницы по префиксам (schema-author-tutorial.md:130), а страницplaces/иproperties/в базе ещё нет (4.5)». Либо добавить сам шаг после переноса. R2:540,R2:795.claude-cli:haiku→claude-cli:claude-haiku-5-5(claude-cli.ts:59; алиасhaikuведёт на 4.5,:136).- Пакет, связь
counterparty(R2:290-294,:309-311). Разделить на две связи:counterpartyсtarget_type: company;negotiated_withсtarget_type: person, полеagents:.- Пилот
R2:479: людей перенести вagents:. Заново прогнать скрипт проверки пакета.
R2:861. «Риск — процесс без переменной вернётenglish» → «Риск — писатель без переменной индексирует новые строки по-английски (multi-language-fts.md:106-108), аinitSchemaвозвращает триггеры кenglish(fts-language.ts:86-100)».- Мелочи:
R2:330: «наpersonиcompany» → «наperson,company,deal»;R2:115::128-208→:130-208;R2:7:at— время в UTC (около2026-11-02T16:58:00Z);R2:821: в контекст вопроса 1 — путь~/.gbrain/brain.pgliteи дата сведений.