VibeVM
Contents
On this page
en
Publisher
org.vibevm.core
Version
1.0.0latest
Audiences
Reading time
3 min
Rendered
Read aloud
never

WORKER-REPORT

Task

01G3-CLIENTS — вторым независимым взглядом проверить свод FINDINGS-DIGEST.md по теме «словари, версии и то, что не переносится», и выдать обоснованное несогласие; результат — G3-CLIENTS.md. Задача на размышление, без правки кода.

Changed files (each with why)

  • 02G3-CLIENTS.md — основной результат: разбор всех шести вопросов темы (критерий переносимости; три формы запасного значения; рецепт LinkedIn; бюджет Google; урок Cloudflare; обязательная vs версия по умолчанию) с разделом «С чем я не согласен».
  • WORKER-REPORT-G3-CLIENTS.md — этот отчёт.

03Код не правился (задача проектировочная).

Acceptance, point by point

  1. 04G3-CLIENTS.md существует -> DONE — evidence: файл создан в корне worktree.
  2. Критерий переносимости проверен попыткой контрпримеров -> DONE — evidence: §1; найден «passes-but-broken» (Avro/protobuf-отвержение) и «relational-but-works» (parity-тест PackageKind), критерий не опровергнут, а переформулирован вокруг «контролируемости контрагента».
  3. Для словарей предложено минимум три формы запасного значения с оценкой влияния на наш код -> DONE — evidence: §2, Формы A/B/C, каждая привязана к конкретным ветвям нашего кода (vibedeps.rs:41, kinds.rs:128, subskill.rs:144, wire.rs:14-16).
  4. Рецепт LinkedIn посчитан на нашем случае конкретно -> DONE — evidence: §3, пошаговая цена 6→7 против одношагового расширения enum'а; вывод «лекарство хуже болезни» при нуле внешних потребителей.
  5. Названы места в НАШЕМ каталоге, где старый читатель разобрал бы успешно и понял неверно, со ссылками файл:строка -> DONE — evidence: §5, четыре места — repomd.rs:42-55, memory.rs:262-280, inverted.rs:66,75, subskill.rs:144-146.
  6. Каждое утверждение о внешнем мире несёт метку источника -> DONE — evidence: метки [ИЗ СВОДА]/[ИЗ ДЕРЕВА]/[ПО ПАМЯТИ, НЕ ПРОВЕРЕНО] проставлены по всему G3-CLIENTS.md, включая преамбулу с определением меток.

Self-verify

  • 05grep "serde(other)" **/*.rs -> 0 совпадений. Подтверждает: запасного варианта (#[serde(other)]) в дереве нет нигде.
  • grep "schema_version\s*(!=|==)|match.*schema_version" **/*.rs -> ровно одно совпадение: vibe-core/src/manifest/lockfile.rs:430 (if lockfile.meta.schema_version != CURRENT_SCHEMA_VERSION). Это vibe.lock (схема 5). В каталоге индекса сравнений версии НЕТ — подтверждает тезис «версия каталога — ярлык, а не переключатель» (§5.2, §6).
  • grep "App|app" **/kind.rs -> 0 совпадений. Подтверждает: app (седьмой вид) в enum не внесён — только «anticipated» в спеке (§3, §4).
  • Все [ИЗ ДЕРЕВА]-цитаты сверены чтением: repomd.rs:43-55 (untagged + непересекающиеся ключи), kinds.rs:1-5 (parity-дубликат), wire.rs:57,85,88 (закрытые enum'ы в «терпимом» клиенте), VIBEVM-SPEC.md:178,180 (six kinds + amendment-лог).

Decisions taken (each with why)

  • 06Не соглашаться «вслепую», а перепроверять числа свода по дереву -> свод написан одним умом и имеет слепые зоны; ценен обоснованный разрыв. Перепроверка нашла: объединение у свода описано хрупче, чем оно есть (§7.1), а «терпимость клиента» не покрывает словарных значений (§7.2).
  • Читать историю словаря из amendment-лога спека и док-комментариев, а не из git -> git запускать запрещено; amendment-лог (VIBEVM-SPEC.md:180, kind.rs:16,46) даёт достаточную и честно помеченную датируемость.
  • Не выдумывать внешних фактов -> все внешние утверждения несут [ИЗ СВОДА]; мои собственные знания о serde/Avro/protobuf помечены [ПО ПАМЯТИ, НЕ ПРОВЕРЕНО] без выдуманных версий/дат.
  • Защитить «слабейшую» форму (А) через свойство нашего каталога -> само-перезапись (harvest 3.6) делает deserialize-only other разрушительным; это конкретно-наше ограничение, которого нет в «среднем» случае.

Deviations and resolved ambiguities

  • 07Тема просила «минимум три формы» — дано ровно три (A/B/C), без четвёртой: три исчерпывают пространство (catch-all / open-string / new-field), четвёртая степень свободы — это их смесь, обсуждённая в синтезе §2.
  • «Контрпример, который ломает критерий» честно не найден — сообщено как усиление критерия (переформулировка оси), как и разрешено темой.

Not done / leftovers

  • 08Не проверял дату появления mcp (PROP-027) — в спеке amendment-лог фиксирует только lang (2026-08-06); для темпа «реже раза в год» точная дата mcp не нужна, но если понадобится — это в git log/PROP-027.
  • Не касался vibe.lock детально (тема про каталог и vibe.toml); отмечен только как контраст «там версия ветвится» (lockfile.rs:430).

С чем я не согласен

09Подробно — §7 G3-CLIENTS.md. Список:

  1. 10Свод переоценивает хрупкость объединения RepomdFileEntry — разбор однозначен по непересекающимся ключам и внутреннему тегу; опасность в отсутствии deny_unknown_fields, не в неоднозначности.
  2. «Клиент терпим → наружу правильны» — полуправда: терпимость к полям не распространяется на значения словарей (закрытые enum'ы в клиенте).
  3. Критерий переносимости верен, но неточен по оси — реальная ось «контролируемость контрагента», не «артефакт vs отношения» (parity-тест работает, будучи отношением).
  4. Бюджет Google в контексте свода тянет к строкам, а применённый к нашим темпам — защищает закрытые enum'ы.
  5. «Статик-чек совместимости внедрить первым» имеет скрытое前置-условие (у каталога нет схемы), которое свод не оговаривает.
  6. Согласие с добавлением: версия-контракт и строгость-по-происхождению верны, но «обязательная vs умолчание» — не антиподы, а writer-strict/ reader-default, а обязательная версия на рукописном vibe.toml без валидатора — частично театр.

11Список не пустой — несогласие обоснованное и привязано к файл:строка.

For an agent

This page has a machine mirror. The citation carries the version rather than latest, so what an agent quotes does not move under it.

spec://org.vibevm.core/vibevm@1.0.0/research/schema-evolution-2026-08/worker-reports/G3-CLIENTS-report

.md.xmlllms.txt