<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title>vibevm — boot snippet: project foundation</title>
  <p p="1"><fact id="project-identity" status="impl/done">**Project:** vibevm — a CLI software project manager for spec-driven AI-assisted development.
**Binary:** `vibe`.
**Source of truth:** [`VIBEVM-SPEC.md`](../../VIBEVM-SPEC.md) (project root). This is the entire implementation specification.</fact></p>
  <section title="Session boot sequence">
    <p p="2"><fact id="boot-sequence-lead" status="impl/done">Every session starts here. In order:</fact></p>
    <list ordered="true" p="3">
      <item><fact id="BOOT-STEP-BOOT-DIR" status="impl/done">Read this file and the rest of `vibevm/vibespecs/boot/` end to end — including the generated `INDEX.md` (the computed boot manifest) and `STATIC.xml` (the priority lane). `vibe` owns the boot order; see `VIBEVM-SPEC.md` §6.</fact></item>
      <item><fact id="BOOT-STEP-WAL" status="impl/done">Read `vibevm/vibespecs/WAL.xml` — current project state (checkpoint, not log).</fact></item>
      <item><fact id="BOOT-STEP-PROPS" status="impl/done">Read the relevant PROP/FEAT under `vibevm/vibespecs/common/` and `vibevm/vibespecs/modules/` for the task at hand.</fact></item>
      <item><fact id="BOOT-STEP-START-WORK" status="impl/done">Only then start work.</fact></item>
    </list>
    <p p="4"><fact id="WAL-STALENESS-CHECK" status="impl/done">If `vibevm/vibespecs/WAL.xml` is older than 24 hours, verify the state with the user before doing destructive work.</fact></p>
  </section>
  <section title="The four non-negotiable rules">
    <p p="5"><fact id="four-rules-lead" status="impl/done">See [`CLAUDE.md`](../../CLAUDE.md) (and its identical copies `AGENTS.md` / `GEMINI.md`) for the full text. Authoritative reference: [spec://org.vibevm.core/vibevm/common/PROP-000#commits](../common/PROP-000.xml#commits). Summary only:</fact></p>
    <list ordered="true" p="6">
      <item><fact id="RULE-ATTRIBUTION" status="impl/done">**Attribution — keep this repository human-authored.** Never mark commits, branches, comments, or any artefact as machine-authored. The rule itself (and its copy in PROP-000 §12.1) is the only place in the project where that topic is discussed.</fact></item>
      <item><fact id="RULE-CONVENTIONAL-COMMITS" status="impl/done">**Conventional Commits** — short subject, long explanatory body answering *why*.</fact></item>
      <item><fact id="RULE-ATOMIC-GROUPING" status="impl/done">**Group commits by meaning** — one logical unit per commit, split mixed working trees.</fact></item>
      <item><fact id="RULE-AUTONOMY" status="impl/done">**Autonomy on routine changes only** — commit and push routine work without asking; stop and ask for history rewrites, force-push, large blobs, CI/signing changes, and anything whose reversal costs work.</fact></item>
    </list>
  </section>
  <section title="Files you MUST NOT touch without explicit instruction">
    <list ordered="false" p="7">
      <item><fact id="NOTOUCH-REFS-BOOK" status="impl/done">`refs/book/` — the user's book, read-only reference material.</fact></item>
    </list>
  </section>
  <section title="Units marked `void` — do not implement">
    <list ordered="false" p="8">
      <item><fact id="VOID-NOT-WORK" status="impl/done">A unit whose state is `void` (`@spec/void`, or `state="void"` in a `&lt;status&gt;` element) **asserts nothing** and is not work. It was either split into heirs and left as a pointer to them, or cancelled with no replacement; its text survives only so its name is not reused and inbound links do not break. Do not implement it, do not plan from it, do not count it as outstanding.</fact></item>
      <item><fact id="VOID-TEXT-STILL-READS" status="impl/done">The trap, and the only reason this rule is needed: the prose is unchanged. A tombstone still reads like the requirement it used to be, because it was one. The marker is the only thing saying otherwise, so read it before acting on the paragraph.</fact></item>
      <item><fact id="VOID-FOLLOW-HEIRS" status="impl/done">If the unit names successors, they carry the claim and the work is theirs. If it names none, the claim was withdrawn and there is nothing to do.</fact></item>
    </list>
  </section>
  <section title="Reading layers (per book, `refs/book/`)">
    <p p="9"><fact id="reading-layers-lead" status="impl/done">vibevm's instance of the **two-process-model** flow (`spec://org.vibevm.world/two-process-model/flows/two-process-model/TWO-PROCESS-MODEL#root`) — human and agent as two processes sharing one repository; these are its reading layers, information flowing top-down, the human winning conflicts:</fact></p>
    <list ordered="false" p="10">
      <item><fact id="LAYER-HEAD" status="impl/done">**Head** (human's memory) — not your concern, but respect that it exists. Human wins conflicts with the spec.</fact></item>
      <item><fact id="LAYER-WAL" status="impl/done">**WAL** (`vibevm/vibespecs/WAL.xml`) — volatile, rewritten each session, describes *current* state.</fact></item>
      <item><fact id="LAYER-SPEC" status="impl/done">**Spec** (other files under `spec/`) — stable decisions, addressable via `spec://…` URIs.</fact></item>
      <item><fact id="LAYER-CODE" status="impl/done">**Code** (everything under `crates/`, including each crate's own `tests/`) — artefacts. Losing them is inconvenient; losing the spec is a catastrophe.</fact></item>
    </list>
    <p p="11"><fact id="SYNC-FROM-CODE-PATH" status="impl/done">Information flows top-down. If code changes first, reconcile up via the **sync-from-code** flow (`spec://org.vibevm.world/sync-from-code/flows/sync-from-code/SYNC-PROTOCOL#root`; also `refs/book/` chapter 3) — propose a spec update, do not rewrite code back.</fact></p>
  </section>
  <section title="Hard conventions">
    <list ordered="false" p="12">
      <item><fact id="CONV-LANGUAGE" status="impl/done">**Language:** Rust. See [spec://org.vibevm.core/vibevm/common/PROP-000#language](../common/PROP-000.xml#language).</fact></item>
      <item><fact id="CONV-MANIFESTS" status="impl/done">**Manifests:** TOML. One `vibe.toml` per node — the role is set by section (`[project]` ⊕ `[package]`, optionally `[workspace]`); lockfile = `vibe.lock`.</fact></item>
      <item><fact id="CONV-TERMINOLOGY" status="impl/done">**Terminology:** only eight installable kinds — `flow`, `feat`, `stack`, `tool`, `mcp`, `lang`, `doc`, `app` (the register grows only by owner amendment to `VIBEVM-SPEC.md` §4.1; `app` is anticipated). The owner-approved PROP-054 vocabulary admits `lifecycle` and `phase` as VibeVM terms. `goal` remains prior-art language. `plugin` is permitted only when it precisely means a package-supplied extension/mechanism implementation, compiler plugin or external ecosystem artifact such as Agent Plugin; it is not a stored identity, a synonym for contribution/execution/handler or another installable kind. Machine prose prefers package → extension point/mechanism → contribution → execution → handler/provider. Authoritative amendment: [PROP-054 `##VOCABULARY-ADMITTED`](../common/PROP-054-lifecycle-and-extensions.xml#VOCABULARY-ADMITTED).</fact></item>
      <item><fact id="CONV-REPO-URLS" status="impl/done">**Repository URLs:** vibevm source = `git@gitverse.ru:vibevm/vibevm.git` / `https://gitverse.ru/vibevm/vibevm`. Package registry = the GitHub organization `https://github.com/vibespecs` (deliberate split-host posture — see `vibevm/vibespecs/boot/90-user.xml` and [PROP-000 §7](../common/PROP-000.xml#registry)). The legacy GitVerse monorepo `git@gitverse.ru:anarchic/vibespecs.git` is read-only transition state.</fact></item>
    </list>
  </section>
  <section title="Uncertainty protocol">
    <p p="13"><fact id="uncertainty-lead" status="impl/done">When the spec is silent on a question:</fact></p>
    <list ordered="true" p="14">
      <item><fact id="UNC-STEP-SPEC" status="impl/done">Re-read the relevant section of `VIBEVM-SPEC.md`.</fact></item>
      <item><fact id="UNC-STEP-BOOK" status="impl/done">Re-read the relevant chapter in `refs/book/`.</fact></item>
      <item><fact id="UNC-STEP-ANALOGS" status="impl/done">Look at the closest analog under `refs/src/` (cargo, uv, spec-kit).</fact></item>
      <item><fact id="UNC-STEP-REVIEW-MARKER" status="impl/done">If still unclear: mark the decision with `&lt;!-- REVIEW: … --&gt;`, pick the conservative interpretation, proceed, flag in the end-of-session report. Never silently invent semantic behavior.</fact></item>
    </list>
  </section>
  <section title="End of session">
    <list ordered="false" p="15">
      <item><fact id="EOS-WAL-REWRITE" status="impl/done">Update `vibevm/vibespecs/WAL.xml` to reflect the *current* state (rewrite, not append — it is a checkpoint).</fact></item>
      <item><fact id="EOS-MILESTONE-COMMIT" status="impl/done">Propose a milestone commit if work is a logical unit. For routine work, follow rule 4 above: commit and push using rules 2–3. For non-routine operations, stop and ask the user first.</fact></item>
    </list>
  </section>
</spec>
