Glossary
01One definition per term, and the only place a term is defined. Every other page links here the first time it uses a word from this list.
adaptation
02A version of documentation in another language: a separate package that mirrors the source block for block and is free sentence by sentence. This manual says «translation» and «adaptation» for the same thing. See translation.
03 spec: The source language is English
The source language is English.org.vibevm.core/vibevm-docscarries[i18n].canonical = "en". Every other language, Russian included, is an adaptation published as its own package (§5): a mirror block for block, free sentence for sentence, with its own jokes and its own glossary of terms. Machine translation may produce a draft and never the text.
agent session
04One run of a coding agent in a project, from the moment it reads its instruction file to the moment it stops. The boot lane is what vibe prepares for the start of a session.
anchor
05The identifier of a section or a fact inside a specification, the part after # in an address. Once published, an anchor never changes; a rename leaves a tombstone.
06 spec: Anchors are immutable; a rename is a tombstone
Anchors are immutable; a rename is a tombstone — for published documentation pages as for specs, and for translations, which must match their source.
block number
07The ordinal pNN every block of a documentation page receives at build time; the same in the web page, the Markdown and the XML, so a human and an agent cite one place. It names the current text and may shift after an edit, like a line number.
08 spec: Numbered blocks
Numbered blocks. Every flow block of the pivot — paragraph, list, table, fence, quote,example,rule,note,figure,prompt; a heading keeps its own id and is not numbered (clarified 2026-09-12 at implementation, followingPIPE-NUMBERING) — receives an ordinal number and the idpNNat build time in the Rust pipeline (§10), never by a client script. The number is the block's position in the current text of the page, counted beforewhenfiltering, so thatp12names the same block in the build for any platform and agent and in every translation; gaps in the rendered output are accepted. The number appears in the HTML island, in the.mdand.xmlprojections (as[p12]at the start of the block) and inllms-full.txt, so a human and an agent cite one place. After an edit an old#p12may point at a neighbouring block, as a link to a file line does after an edit; this is accepted and nothing tries to «remember» it. Headings keep their named anchors{#id}above the number; named anchors are immutable and renamed only by tombstone, positionalpNNlive by the current text.
boot lane
09The ordered reading list an agent follows at the start of a session: the managed block in the instruction file, then STATIC.md in full, then the entries of INDEX.md. Computed by vibe from the dependency graph, never written by hand.
boot snippet
11A package's contribution to the boot lane: one short text declared in [boot_snippet] with a category, read at every session start by every consumer. Documentation packages have none.
12 spec: [boot_snippet] (package-role) drops the filename field…
[boot_snippet](package-role) drops thefilenamefield (theNN-target name) and gainscategory(§2.5);source— the path to the boot file inside the package — is retained. It may carry an optional suggestedlinkdefault, and an optionalwhenactivation condition — the declaration site for §2.3's dynamic-entrywhen, closing the gap Phase 4 flagged. For v1 the onlywhenis an operating-system match, the wire string"os:<name>"with<name>one ofwindows/macos/linux; a snippet carrying awhenisdynamic(§2.4). The package author owns this declaration: whether a boot snippet is OS-specific is the author's knowledge, not the consumer's.
capability
13An abstract ability a package provides or requires, written namespace:name with an optional version constraint; the resolver matches requirers with providers at install time.
14 spec: Decision: A package's identity…
Decision. A package's identity is the tuple(kind, name, version, content_hash). Thecontent_hashis a digest over the deterministically-ordered concatenation of(rel_path_bytes || 0x00 || file_bytes || 0x00)for every file in the package directory, and the value names the recipe that produced it (PROP-044 §4.7):sha256-tree/1:<hex>is recipe 1, whose exclusion list, path normalisation and traversal order are carried as data informats/hash_recipes/1.toml; the baresha256:<hex>is recipe 0, the pre-recipe form, frozen verbatim in code — not configurable, because a frozen recipe that can be edited is not frozen — so that values written before recipes were named stay readable. Two hashes are comparable only at the same recipe; comparing across recipes answers a question nobody asked, and is never done silently. PROP-024 §2.2 re-scopes this to the package's shippable tree — its source, minus build output (.git/,.vibe/,target/,node_modules/,.vibeignoreglobs) — so a code-bearing package's identity is its source, not its build state; that exclusion lands with the code that implements it. The URL used to fetch the content is informational — recorded in the lockfile for debuggability, not for identity.
community documentation
15Documentation of a package that declares its subject but is not named by the subject: shown on the site with its publisher, below the official shelf. See official documentation.
16 spec: Official: documentation is the one whose…
Official documentation is the one whose edges converge: the subject named the package and the package declared the subject. Community documentation has only the edge from the documentation. An edge from the subject alone reads «not published or an error», and the site shows a warning.
companion
17A package tied to another by name for the default case of officiality and by nothing else: the documentation <name>-docs of a package, or the translation <docname>-<lang> of a documentation. A companion keeps its own version line and stays outside family unison.
18 spec: <family>-docs: — the documentation companion (kind…
<family>-docs— the documentation companion (kind = "doc", PROP-057 §3): the official-by-default documentation of the family's subject, in the subject's group. Unlike the three code roles it is a companion, not a member: it is never pinned by the aggregator, it does not take part in the family's unison (§2.2), it keeps its own version line, and it states compatibility with its subject through the version constraint of its[[documents]]table. Its translations follow the same companion form, one package per language, named<family>-docs-<lang>with a lower-case BCP-47 tag (rust-ai-native-docs-ru). Amended 2026-09-11.
contribution
19A binding of a handler to an extension point, declared as an [[extension]] table in a package or a project; the unit the lifecycle runs and reports.
coordinate
21The name of a package: a group, a slash and a name, org.vibevm.world/wal, with @version when a version is meant. The kind is not part of it.
22 spec: Decision: Package identity becomes (group, name…
Decision. Package identity becomes(group, name, version, content_hash).kindleaves the identity tuple.
deploy profile
23A named, ordered list of targets and the providers that apply packaged artifacts to them; vibe deploy runs one profile, vibe undeploy reverses it.
24 spec: Deploy profiles select ordered targets; plan…
Deploy profiles select ordered targets; plan is read-only. The engine owns provider selection, collision locks, intent/checkpoints, receipts, three-digest recovery, inverse sequencing and exact resource ownership.vibe-binplus isolated Claude/Codex/OpenCode skill/plugin adapters implement plan/apply/verify/recover/remove without touching foreign neighbours. Evidence:0a42456e,45d88e80,ae36ac48.
effective set
25The packages that the visibility marks admit from your root: what version resolution sees, what the lock file records and what the dependency tree holds. A private edge of a package that is not your root lies outside it.
26 spec: Version resolution operates on E(R) only…
Version resolution operates onE(R)only: private edges of non-root packages contribute no constraints, fetch nothing, and cannot conflict.vibe.lockrecordsE(R)— the lock of a consumer no longer contains other packages' dev-world entries. Version unification (one node per(group, name), PROP-003/017) is unchanged within the effective set. A welcome simplification vs code ecosystems: the Cargo-RFC-1977 problem («may private deps duplicate at different versions?») does not arise — an invisible package has no copies at all.
embedded registry
27The in-tree packages of a source-built vibe, consulted automatically as a registry: first for a developer's build, after the declared registries for a distributed one.
28 spec: This PROP makes the in-tree packages/…
This PROP makes the in-treepackages/of a source-installedvibean ambient default registry — resolved automatically, with zero configuration in the consuming project.
extension point
29A named place in the lifecycle a contribution binds to: a phase, a slot inside a phase, or a position in the boot compiler, written family:name.
30 spec: An extension point is a string…
An extension point is a string<family>:<name>. Three families:phase:— the default-lifecycle phases andclean(project-scoped moments:phase:build,phase:create, …);compile:— the compiler's two tiers: the §7.2 staged positions (compile:source,compile:document,compile:lane,compile:emitted) and the §7.4 pass tier's single pointcompile:pass, whose position inside the pipeline is carried by the contribution'spass = { … }declaration;slot:— the per-package materialisation moments that already exist as PROP-020 (slot:pre-install,slot:post-install), re-stated in this vocabulary without changing their semantics, timing, or manifest spelling ([[hooks]](../modules/vibe-workspace/PROP-020-install-hooks.xml#manifest) keeps working verbatim; it is now sugar for twoslot:contributions).
fact
31One anchored unit of a specification with a status: a rule, a decision, a lead-in. In XML an element named after its id with fact="true"; in Markdown a paragraph opening with @fact:ID. The addressable atom an agent cites.
32 spec: Decision (ADR-part; owner ruling 2026-08-22, verbatim)…
Decision (ADR-part; owner ruling 2026-08-22, verbatim): «сконвертируй и факты тоже. Предлагаю такой формат<fact-name fact="true" ...>. Таким образом кастомный XML-парсер всегда может найти соответствующие элементы». A fact serialises with its ID as the element name, carrying the DISCRIMINATOR attribute —<THE-LAW fact="true" status="impl/done">body</THE-LAW>— so a reader that knows nothing of the vocabulary still finds every fact by one attribute test. The recognition law: an element IS a fact iff its name isfact(the generic form, which stays in the dialect) or it carriesfact="true". The named form is emitted whenever the id passes the same elementability predicate sections use (fact-id grammar already forbids leading digits, so the fallback tail is vocabulary collisions only); the typed-fact fence binding stays by id and does not change. The owner's second clause binds the scanners: the progress machinery must work when a fact's SOURCE — not a materialised copy — is authored XML; the host lane holds by construction (XML sources enter progress through the canonical MD projection) and is PINNED by explicit tests (an observed .xml source scans unit-for-unit equal to its MD twin), while the specmap engine's native reader learns the named form mirror-wise. The converter recipe bumps again (specdoc/2→specdoc/3); the host re-materialises once, after both shapes land. The owner's third clause (2026-08-22, same sitting) binds the boot lanes: «статические и динамические лоадеры должны хорошо работать с новым синтаксисом фактов» — pinned at the transition's landing by (a) the static-splice determinism test running over a NAMED-shape snippet whose projected facts survive into STATIC, (b) the vibe-spec normal-closure byte-equality test running over BOTH serialisations (generic and named) of one dependency, and (c) the polygon re-run at specdoc/3, whose control package auto-adopts the named shape through to_xml — INDEX targets, STATIC splice and every machine loader then exercise the final syntax end-to-end; the agent half of the dynamic router is §5a's measurement, deliberately run AFTER this transition so it measures the shape that ships. Landed: the recipe isspecdoc/3, the host's 37 slots re-materialised once with named facts live (the redbook README golden pins 45), the recognition law holds in both readers withfact="false"a loud error, progress holds full ParsedDoc parity between an XML source and its hand-pinned MD twin across two scans, and pins (a)–(c) are in the tree — the splice snippet ships<BOOT-RULE fact="true">, the normal closure compiles three lanes byte-equal, the polygon re-ran 3/3. A live lesson worth its line: XML reserves every case-insensitivexml-prefixed name, soXMLBOOTcannot be an element — the predicate refuses it and the generic form carries such ids.
family
33A set of packages sharing a name stem that move in unison: the bundle <family>, the language guide <family>-lang, the server <family>-mcp. A change to any member bumps every member to one version.
34 spec: A package family is a set…
A package family is a set of packages sharing a <family> stem and
delivering one coherent capability across three roles:
feature
35An optional, additive content set of a package, declared in [features] and activated at install; features may depend on features.
36 spec: Decision: A package's vibe-package.toml gains…
Decision. A package'svibe-package.tomlgains a[features]table describing optional, conditionally-activated components:
fingerprint
37The hash of a package's shippable tree, the identity half of a package version, recorded as content_hash in the lock file and verified on every fetch.
38 spec: content_hash is unchanged — computed over…
content_hashis unchanged — computed over package file bytes per PROP-002 §2.1.grouplives invibe.toml, so it influences the hash only as ordinary file content; the tuple lists it explicitly so that changinggroupyields a different package.
freshness fingerprint
39The hash of a phase run's declared inputs, recorded under .vibe/; a phase whose freshness fingerprint did not change is skipped on the next run.
40 spec: Every phase execution owns a fingerprint
Every phase execution owns a fingerprint — a hash over its declared inputs (for install: manifest+sources, already built; for build: the slot sources + project sources the preset names; for create: the prompt documents + their spec closure). A phase whose fingerprint matches the recorded one skips, reporting fresh per contribution — the Gradle up-to-date property grafted onto the Maven ritual. This is the design answer to «если vibe.toml не поменялся, инсталлировать пакеты не нужно», generalised to all nine phases because create (tokens) and build (native compile time) are even more expensive than install.
friend closure
41The packages a project has befriended, directly with friend = true or a friends line, or through a chain of friends-only edges. A friends-only dependency reaches only the projects whose friend closure contains its provider.
git source
43A dependency declared by a git repository and a tag, commit or branch instead of a registry; identity and fingerprint discipline are the same, and a branch is re-walked on update.
44 spec: Identity: Identical content-hash discipline as registry-resolved…
Identity. Identical content-hash discipline as registry-resolved (§2.1): identity is(kind, name, version, content_hash); the URL is informational. Two projects that pull the same git-source from different mirrors and produce the samecontent_hashare bit-identical installs. Force-pushed tag rewrite caught asIntegrityError.
handler
45What a contribution runs: a built-in, a script, a binary, a native library, or an agent prompt.
hook
47A package's pre-install or post-install script, run in the package's slot; installing the package is the consent to run it, and its effects are not tracked.
index (of a registry)
49A repository beside a registry's packages that records every published version's summary and fingerprint; a cache that speeds search and cold installs and is never the truth.
50 spec: Decision: Package repositories are the source…
Decision. Package repositories are the source of truth for content (manifests, files, tags). The index is a derived hot cache, regeneratable from the authoritative package state.
kind
51What a package is for, one of eight: flow, feat, stack, tool, lang, mcp, doc, app. Metadata, not identity; the set grows only by amendment.
52 spec: kind ∈ {flow, feat, stack, tool…
kind ∈ {flow, feat, stack, tool, mcp, lang, doc, app}— eight kinds;mcpshipped with PROP-027;docandappadmitted by PROP-057 through theVIBEVM-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). (§InvariantsINV-VOCABULARYin this file carries the same list.)
learning path
53The order a documentation package declares for people to read its pages in: chapters of pages in reading order, the reference pages last, in an appendix. The order machines read the pages in stays as it is.
54 spec: A documentation package MAY declare…
A documentation package MAY declare a learning path in[navigation]:[[navigation.chapter]]rows, each with anid, atitleandpages— the document paths the chapter holds, in reading order — and optionallyappendix = truefor a chapter of pages a reader looks things up in rather than reads through. The rows in their written order are the path: followed from the first page of the first chapter to the last page of the last, it meets every page of the package once. The path is written for people and moves no other order:pagesin the page manifest and thellmsfiles keep the layer law (spec://org.vibevm.core/vibevm/common/PROP-048#THE-LAYER-LAW), and the page manifest carries the path beside them asnavigation.chapters.
lifecycle
55The fixed order of build steps vibe runs: the one-phase clean lifecycle and the nine-phase default lifecycle from validate to deploy. See phase.
56 spec: vibe has two lifecycles. clean —…
vibe has two lifecycles.clean— one phase, exactly PROP-053.default— nine phases, in this fixed order:
link type
57How a dependency's boot snippet enters a consumer's lane: static, compiled into STATIC.md, or dynamic, listed in INDEX.md and read on demand; set by the consumer, suggested by the package.
58 spec: Decision: Each dependency declares an inclusion…
Decision. Each dependency declares an inclusion type, set by the consumer in itsvibe.tomlon the[requires.packages]entry:
lock file
59vibe.lock: the recorded resolution, one per workspace, with every package's exact version, fingerprint and provenance. Written by vibe, committed by you.
60 spec: With the freshness check, vibe install…
With the freshness check,vibe installbecomes lockfile-respecting: unchanged[requires]⇒ the locked versions are honoured verbatim.
managed block
61The region between the lines <vibevm> and </vibevm> at the end of CLAUDE.md, AGENTS.md and GEMINI.md, the only part of those files vibe writes; it points an agent at the boot lane.
62 spec: Decision: vibe owns exactly one managed…
Decision. vibe owns exactly one managed block inside each agent instruction file — a contiguous region bounded by an opening and a closing marker.
manifest
63vibe.toml: the one file you write to describe a project, a package or a workspace; its tables decide the node's role.
64 spec: Decision: vibe-package.toml is retired…
Decision.vibe-package.tomlis retired as a distinct filename. Every node — project root, workspace member, published package — carries a singlevibe.toml; the role is expressed by which sections are present. This is the cargo model: oneCargo.tomlcarries[package]and/or[workspace].
MCP server
65A program an agent talks to over the Model Context Protocol. vibe's own server exposes a project's packages; a package of kind mcp delivers servers of its own.
66 spec: An mcp package is one whose…
An mcp package is one whose primary deliverable is one or more
Model Context Protocol servers.
mirror
67An alternative address for the same registry, tried for availability and verified against the same fingerprints; never recorded in the lock file.
68 spec: A [[mirror]] is an availability copy…
A[[mirror]]is an availability copy of the same source — same naming, same identity, samecontent_hash. The mirror walk falls through on any availability failure (NetworkUnreachable,AuthFailedon the mirror, server error,content_hashmismatch).RepoNotFoundfrom a mirror bubbles up to the registry-walk layer (same policy as if the canonical primary had saidUnknownPackage), because absence-of-package is a registry-level fact, not a mirror-level one.
official documentation
69Documentation whose edges converge: the subject names the package in [documentation] or by the -docs convention, and the package names the subject in [[documents]]. One may be primary. Computed at every render, stored nowhere as a flag.
override
71A replacement source for one coordinate that short-circuits the registries; marked in the lock file so nobody mistakes it for a published version. The same word names the [override] table that rewrites the visibility marks of edges you do not own.
72 quote from the specification
Decision. [[override]] bypasses the registry layer for a named pkgref:
73 spec: Owner-ruled (2026-08-23): override is lawful…
Owner-ruled (2026-08-23):overrideis lawful in any manifest, not only the root («разрешён не только в корневом манифесте, а где угодно»). Any nodeNmay carry an[override]table whose entries rewrite foreign edges — theiraccess,friend, presence (exclude = true), or a target'sallow-friends— and the rewrite acts whereverNstands on the chain: an aggregator repairs or reshapes a member's edge for all of its own consumers, exactly as it curates its delivery withexclude. The threat model follows the owner's earlier ruling: a deliberate break-in is not an attack (the developer can edit any file on disk anyway); this is the official verb that replaces reflection-style hacks — and it stays quiet (pull-based provenance only).
package
74The unit vibe installs: a folder with a manifest and the text or tools it delivers, published as its own repository, identified by its coordinate, version and content hash. A package is a project made installable.
75 spec: Decision: A package has the identical…
Decision. A package has the identical on-disk shape as a consumer project:
phase
76One step of a lifecycle: validate, install, generate, build, test, create, verify, package, deploy. Naming a phase runs every phase before it.
77 spec: vibe <phase> executes every default-lifecycle phase…
vibe <phase>executes every default-lifecycle phase up to and including the named one, in order — the Maven ritual verbatim.vibe clean <phase>runs the clean lifecycle first, then the default lifecycle up to<phase>(§4.4). A phase with no contributions and no built-in binding completes as a no-op — Maven's empty-phase law, which is what makes nine slots cost nothing for a prompt-only project (itsdeploychain degenerates to validate+install).
project
78Any folder with a vibe.toml; a consumer of packages, marked by a [project] table, or a workspace of them.
79 spec: [package] and [project] are mutually exclusive…
[package]and[project]are mutually exclusive in one file — a node is either a publishable package or a plain project, not both. (Decision 7-α from the design session: keep the two sections distinct rather than folding[project]into a[package]with optionalkind. Explicitness wins;kindstays strictly mandatory wherever[package]appears.)
provider
80What answers how a mechanism runs: a built-in or a package-supplied implementation of a build, package or deploy step, or a model endpoint behind an agent handler. Selected by exact route or pin.
81 spec: A real installed package may displace…
A real installed package may displace a builtin deploy mechanism through an exact route/pin. The engine reuses ABI-1, R5 prebuilt/source record and immutable-image carriage, admits the generated mechanism manifest and exact operation, and invokes all six deploy operations while retaining plan/receipt/recovery ownership. Restart plan/recovery/undeploy re-resolve once at the command boundary and exact-compare the durable sidecar binding, existing record/image/digest/path without build, repair, publication or builtin fallback. Evidence:854707a1,9465291e,24b1fe4a,269bec0d,370ea177,a24e4aff,d475963c.
receipt
82The record a deploy writes for every resource it created: what, where, under which generation, owned by which profile. The only authority for removal.
83 spec: Deploy profiles select ordered targets; plan…
Deploy profiles select ordered targets; plan is read-only. The engine owns provider selection, collision locks, intent/checkpoints, receipts, three-digest recovery, inverse sequencing and exact resource ownership.vibe-binplus isolated Claude/Codex/OpenCode skill/plugin adapters implement plan/apply/verify/recover/remove without touching foreign neighbours. Evidence:0a42456e,45d88e80,ae36ac48.
registry
84A hosting organisation where packages are published, one repository per package; a project lists the registries it trusts in order.
relay
86The mailbox under .vibe/agentic/ where vibe parks an instruction it cannot execute itself; the agent drains it with vibe command.
87 spec: Decision: When a reasoning operation runs…
Decision. When a reasoning operation runs under the relay backend, it does not act. It writes anIntent— a markdown prompt with light frontmatter (id, source command, created-at, status) — to a single-slot mailbox, the project-local.vibe/agentic/command.md(§3), and returns a pointer telling the caller to drain it.
scrape
88The terminal removal of the vibe layer from a project, by contract, with a plan and a health proof; not to be confused with clean.
89 spec: Scrape is the terminal cleaning operation…
Scrape is the terminal cleaning operation defined here: it removes the selected VibeVM repository layer while preserving the native product. The command vocabulary deliberately reserves attach and detach for a future live-tool relationship such as connecting and disconnecting a debugger. Scrape is never an alias for that future runtime operation, and no detach spelling is accepted by this command.
skill
90A file a package declares in [[skill]] that teaches an agent something; vibe skill install projects it into the agents' skill folders.
91 spec: Decision: Installing a skill…
Decision. Installing a skill into an agent is a projection: read the declared skill body from the package (invibedeps/…once installed) or an external source authenticated by the package's matching lock record, and write it into each target agent's skill directory in that agent's own convention (.claude/skills/<name>/…,.opencode/skills/<name>/…,.agents/skills/<name>/…— the paths PROP-015 §2.6 already resolves).
specification
92The normative text of a package or a project under vibevm/vibespecs/: addressable units with statuses, in Markdown or the XML dialect. What documentation quotes and never restates.
store
94The machine-wide cache of fetched package versions under ~/.vibe/cache/, keyed by identity, shared by every project, emptied only on request.
95 spec: Decision (override clause corrected 2026-08-20…
Decision (override clause corrected 2026-08-20 to the later, more specific ruling). The package store is machine-global, not project-scoped — one store per machine at<settings-home>/cache, relocated only with the settings home ($VIBE_SETTINGS); no store-specific override exists —##THE-STORE-IS-DOT-VIBE-CACHEis the governing ruling. (VIBE_REGISTRY_CACHE, which this decision originally named, governs the registry clone cache — a different layer that keeps its own job.)
subject
96A package that a documentation package documents, named in its [[documents]] table with a version range.
97 spec: [[documents]] is REQUIRED in a doc…
[[documents]]is REQUIRED in adocpackage, may list several subjects, and itsversionis a semver constraint.
subskill
98A selectable cut of a package's content, activated by the consumer's context, such as the library version a project uses.
99 spec: Per §2.7 of PROP-004, Tessl's headline…
Per §2.7 of PROP-004, Tessl's headline marketing claim — version-matched documentation — rides on thedescribesfield at the tile level. vibevm goes one step further: the field is available on subskills as well as packages. Aflow:walpackage as a whole may not bind to any one library, but itssubskills/stack/rust/cut binds specifically topkg:cargo/sqlx@0.8.0; anothersubskills/stack/rust-diesel/cut binds topkg:cargo/diesel@2.x. The two coexist in the same package, and the activation channelcontext.if_describes_matchselects the right one for the consumer's actual library version.
traceability map
100specmap.json: the generated graph of specification units, tagged code items and the edges between them, checked by the build and queried by vibe explain, vibe query and vibe select.
101 quote from the specification
spec://org.vibevm.ai-native/core-ai-native/mechanisms/PROP-014#FORCE-INVARIANTS-ARE-MACHINE-CHECKED
translation
102A separate documentation package in another language that names its source in [translates] and mirrors its tree; official when published by the source's group under <docname>-<lang>. See adaptation.
version constraint
104What a manifest asks for: a range such as ^1.0, an exact =1.2.0, or nothing for the newest stable. The lock file records the one version the resolver chose within it.
105 quote from the specification
flow:wal@^0.3 → semver range.
workspace
106A repository developing several packages together, declared by a [workspace] table listing member paths; one lock file at the root and one unified resolution across members.
107 spec: Decision: A vibe.toml may carry…
Decision. Avibe.tomlmay carry a[workspace]table declaring member packages: