VibeVM
Contents
On this page
ru
Publisher
org.vibevm.core
Version
1.0.0latest
Adapts
org.vibevm.core/vibevm-docs
Audiences
dev
Reading time
3 min
Rendered
Read aloud
never

Прослеживаемость: спецификации, код и карта

01Каждый публичный кусок кода в vibe указывает на правило, которое он воплощает, а сгенерированная карта отвечает в обе стороны: какой код стоит за этим правилом, какому правилу отвечает этот код.

02
vibe explain "spec://org.vibevm.core/vibevm/common/PROP-000#KIND-SET"
spec unit spec://org.vibevm.core/vibevm/common/PROP-000#KIND-SET
  unmarked — `kind ∈ {flow, feat, stack, tool, mcp, lang, doc, app}` — eight kinds; `mcp` shipped with [PROP-027](../modules/vibe-mcp/PROP-027-mcp-packages.xml); `doc` and `app` admitted by [PROP-057](PROP-057-documentation-packages-and-site.xml) through the `VIBEVM-SPEC.md` §4.1 amendment of 2026-09-12 (pending the owner's ratification at the merge of the docs-2026-09 branch; the code learns the two kinds in that campaign's phase 2). (§Invariants `INV-VOCABULARY` in this file carries the same list.) <status stage="spec" state="done" action="continue" actionstage="impl"/> (vibevm/vibespecs/common/PROP-000.xml:75)
  hash sha256:1effee7da317e236ec9b0745d0e02f922cd93134fd731a758428dce62db2a81f
  edges in:
    documents ← `authoring::write-a-lang-package` (vibevm/vibepacks/org.vibevm.core/vibevm-docs-ru/v1.0.0/vibevm/vibespecs/authoring/write-a-lang-package.xml:14)
    documents ← `authoring::write-a-lang-package` (vibevm/vibepacks/org.vibevm.core/vibevm-docs/v1.0.0/vibevm/vibespecs/authoring/write-a-lang-package.xml:14)
    documents ← `glossary::index` (vibevm/vibepacks/org.vibevm.core/vibevm-docs-ru/v1.0.0/vibevm/vibespecs/glossary/index.xml:107)
    documents ← `glossary::index` (vibevm/vibepacks/org.vibevm.core/vibevm-docs/v1.0.0/vibevm/vibespecs/glossary/index.xml:107)
    documents ← `model::packages-and-kinds` (vibevm/vibepacks/org.vibevm.core/vibevm-docs-ru/v1.0.0/vibevm/vibespecs/model/packages-and-kinds.xml:39)
    documents ← `model::packages-and-kinds` (vibevm/vibepacks/org.vibevm.core/vibevm-docs/v1.0.0/vibevm/vibespecs/model/packages-and-kinds.xml:45)

Пометки в коде

03Элемент Rust, который воплощает правило, несёт атрибут с адресом правила; тест, который его проверяет, несёт проверяющий атрибут; модуль, который обслуживает целый раздел, объявляет область. Связи живут в коде, рядом с тем, что описывают, и потому едут с каждым рефакторингом и каждой копией. Глаголы: implements, verifies, documents, deviates и informs; отклонение обязано сказать почему.

04 цитата из спецификации
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#FORCE-EDGES-TRAVEL-WITH-THE-ARTEFACTS
05 цитата из спецификации
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#RULE-VERBS-AND-MANDATORY-REASON

06implements — утверждение о коде, который выполняется. Объявление типа его не несёт: ребро от объявления неотличимо от покрытия, и карта, которая считала бы объявления, была бы зелёной ни о чём.

07 цитата из спецификации
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#RULE-IMPLEMENTS-IS-A-CLAIM-ABOUT-CODE-THAT-RUNS

Карта

08cargo xtask specmap обходит крейты в поисках пометок и дерево спецификаций в поисках единиц и пишет specmap.json: узлы для каждой единицы спецификации с её ревизией и хешем содержимого, узлы для каждого помеченного элемента кода и рёбра между ними. Карта закоммичена, и cargo xtask specmap --check падает, когда дерево сдвинулось, а карта нет. Политика того, что сканируется, какие крейты под воротами, а какие освобождены, живёт в specmap.toml; сам движок поставляется с пакетом дисциплины и вендорится, никогда не правится на месте.

09 цитата из спецификации
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#FORCE-INVARIANTS-ARE-MACHINE-CHECKED

10Карту стерегут трое ворот. Храповик сирот: публичный элемент в крейте под воротами без пометки проваливает проверку, если только он не диспозиционирован с идентификатором долга. Ворота разрешения: каждое ребро в собственное пространство имён этого проекта должно приземлиться на существующий якорь. Правило подозрения: когда ревизия единицы спецификации поднимается, каждое ребро, закреплённое за старой ревизией, становится подозрительным, и проверка его называет, чтобы код перечитали против правила, которое сдвинулось.

11 цитата из спецификации
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#INVALIDATION-SPEC-BUMP-MAKES-EDGES-SUSPECT

12Сгенерированный код исключён из ворот сирот; пометки вместо него несёт вход генератора, схема, и их читает сканер схем.

13 цитата из спецификации
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#RULE-GENERATED-CODE-IS-EXCLUDED

Как спросить карту

14Команды ниже работают в чекауте самого vibe, чьи спецификации несут карту; установленный пакет отвечает, только если поставил свою. vibe explain "spec://…#anchor" строит карту заново в памяти и печатает подграф одной цели: что её воплощает, проверяет или документирует. vibe query фильтрует карту по адресу, символу или виду и возвращает множество подходящих узлов. vibe select --where "lacks:verifies scope:spec://…" обходит граф с предикатом: каждое правило без проверяющего, элементы, которые воплощают правило, и один переход вокруг них. --json отдаёт каждый ответ агенту.

15
vibe select --where "uri:spec://org.vibevm.core/vibevm/common/PROP-000#KIND-SET depth:1"
map select · grammar v1 · uri=spec://org.vibevm.core/vibevm/common/PROP-000#KIND-SET AND depth=1
7 results

  d0 spec -          `kind ∈ {flow, feat, stack, tool, mcp, lang, doc, app}` — eight kinds; `mcp` shipped with [PROP-027](../modules/vibe-mcp/PROP-027-mcp-packages.xml); `doc` and `app` admitted by [PROP-057](PROP-057-documentation-packages-and-site.xml) through the `VIBEVM-SPEC.md` §4.1 amendment of 2026-09-12 (pending the owner's ratification at the merge of the docs-2026-09 branch; the code learns the two kinds in that campaign's phase 2). (§Invariants `INV-VOCABULARY` in this file carries the same list.) <status stage="spec" state="done" action="continue" actionstage="impl"/>  vibevm/vibespecs/common/PROP-000.xml:75  spec://org.vibevm.core/vibevm/common/PROP-000#KIND-SET
  d1 code doc-page   authoring::write-a-lang-package  vibevm/vibepacks/org.vibevm.core/vibevm-docs-ru/v1.0.0/vibevm/vibespecs/authoring/write-a-lang-package.xml:1
  d1 code doc-page   authoring::write-a-lang-package  vibevm/vibepacks/org.vibevm.core/vibevm-docs/v1.0.0/vibevm/vibespecs/authoring/write-a-lang-package.xml:1
  d1 code doc-page   glossary::index  vibevm/vibepacks/org.vibevm.core/vibevm-docs-ru/v1.0.0/vibevm/vibespecs/glossary/index.xml:1
  d1 code doc-page   glossary::index  vibevm/vibepacks/org.vibevm.core/vibevm-docs/v1.0.0/vibevm/vibespecs/glossary/index.xml:1
  d1 code doc-page   model::packages-and-kinds  vibevm/vibepacks/org.vibevm.core/vibevm-docs-ru/v1.0.0/vibevm/vibespecs/model/packages-and-kinds.xml:1
  d1 code doc-page   model::packages-and-kinds  vibevm/vibepacks/org.vibevm.core/vibevm-docs/v1.0.0/vibevm/vibespecs/model/packages-and-kinds.xml:1

Документация на карте

16Это руководство входит в ту же карту. Каждый блок rule на странице — ребро documents от страницы к правилу, которое она цитирует, просканированное на стороне хоста через шов сканера движка. Ребро не несёт пина ревизии: цитата живая, страница показывает текущий текст правила, и единственная проверка — что якорь существует. Устарела ли проза вокруг цитаты — вопрос к человеку, а не флаг подозрения.

17 spec: The rule element is read…
The rule element is read on the host side: a host module scans documentation pages and injects into the traceability engine through its public CodeScanner seam (build_with_scanner, check_with_scanner, write_with_scanner, CompositeScanner). The engine and its vendored copies are not edited and sync-engines is not run. Documentation pages lie outside spec_roots, the page-scan policy lives in a host file rather than in specmap.toml, and the scanner is injected at both points of xtask/src/specmap.rs — the main pass and the resolve gate — so the coverage gate cannot be green by emptiness. The edge's tail is a CodeItem with the sentinel crate_name = "<doc>", after the precedent of the JTD scanner's "<schema>"; the engine's wire schema does not change.
18 spec: Every rule yields a documents edge…
Every rule yields a documents edge without a pin: the citation is live, and the page shows the fact's current text by address at every render. vibe doc check --citations checks one thing — that the anchor exists; a vanished anchor without a tombstone fails the build. There are no revisions, no text hashes and no «the spec moved ahead»: such checks would need a history the project does not keep by design.

Особые случаи и правила

19Единицы бывают четырёх видов, и у каждого своё ребро по умолчанию: требование воплощают и проверяют, дизайн информирует, руководство документирует; предложение решает, и это пока не глагол, который система несёт.

20 цитата из спецификации
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#DECISION-FOUR-UNIT-KINDS

21Карту носят, а не генерируют: соответствие между прозой и кодом нельзя вывести, только написать и проверить, и потому пометки в коде, а ворота в сборке.

22 цитата из спецификации
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#CONSEQUENCE-MAPPING-IS-CARRIED-NOT-GENERATED

23Пакет может нести собственную карту, package.specmap.json, сгенерированную vibe specmap перед публикацией, так что потребитель спрашивает установленный пакет, не пересобирая его.

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-docs@1.0.0/architecture/traceability

.md.xmlllms.txt