PROP-049 — the snippet genre: no presupposed disciplines
1. The defect this repairs
01Agents creating fresh VibeVM projects created
vibevm/vibespecs/WAL.xml unasked (owner observation, 2026-08-23). The machinery is
clean — vibe init scaffolds no WAL, and both WAL checks return silently
when the file is absent («a project convention, not part of the package
manager's contract»). The cause is the PACKAGE chain: (a) redbook hard-pulls
flow:wal, whose snippet speaks in unconditional imperatives («canonical…
read before anything else»); (b) four UNRELATED snippets presuppose the WAL
in passing — sync-from-code's «record in the WAL» imperative, health-audit's
and git-atomic-commits' «the WAL» asides — so even without redbook the
compiled STATIC of a small discipline set tells an agent a WAL exists. An
obedient agent reads its static lane and mints the file. Not every external
project wants a centralised WAL (a multi-developer team may run many WALs, or
none); the presupposition takes that choice away.
2. The genre rule
02A boot snippet never presupposes another
discipline. A snippet speaks unconditionally only about its OWN flow;
any mention of another flow's artifacts or duties is CONDITIONAL — and the
only lawful conditional form is structural, not verbal: the mention lives in
a snippet fragment guarded by when = "installed:<group>/<name>", so the
text physically enters a project's lanes only when that discipline is
actually installed. Prose hedges («if you keep a WAL», «or equivalent») are
NOT the lawful form — they are unverifiable by machine and still teach the
concept unasked. This is ##THE-LAYER-LAW's sibling: a presupposition must
never travel ahead of its own discipline.
3. The mechanism — the installed: predicate
03when grows a second predicate class:
installed:<group>/<name>, resolved at INSTALL time. Unlike os:*
(resolved by the reading session), installedness is known when the boot
artifacts are generated: a fragment whose condition holds participates
normally (static compilation included); one whose condition fails is OMITTED
ENTIRELY — no STATIC bytes, no INDEX entry. Physical absence, not a softened
sentence: the tokenomics-preferred form (PROP-048 — the inapplicable is never
loaded).
04The manifest grows optional snippet fragments.
[boot_snippet] stays the single main declaration (unchanged manifests keep
parsing); an optional [[boot_snippet.fragment]] array adds {source, when}
entries — each fragment a separate authored file, each with its own when
(os:* or installed:*). Cross-discipline mentions move from the main
snippet into fragments.
4. The gate — the concepts dictionary check
05A flow declares its concept tokens. The
manifest's optional concepts = […] (under [boot_snippet]) names the
tokens that mean this discipline — for flow:wal: "WAL",
"vibevm/vibespecs/WAL.xml". The dictionary is assembled from the world (authored
packages and installed manifests), never hard-coded into the checker.
06The check: a foreign concept in an
unconditional snippet is an error. A vibe-check cell scans authored
snippet sources: a token owned by package D, found word-bounded in the main
snippet (or any fragment NOT guarded by installed:D) of package P≠D, is an
ERROR naming the token, the owner and the repair («move the mention into a
fragment guarded by installed:<D>, or drop it»). The dependency
exemption: a declared [requires] on D guarantees co-installation, so P's
bare mention of D's concepts is lawful (wal-specspaces presupposes the wal it
hard-requires by construction). Code spans and fences are opaque to the scan,
as to every markup scanner. Proven by a red fixture; a future publish wave
runs the same cell as a C6 gate. Enforcement is three-point: the compiler
(fragments are the only lawful conditional form), the panel/check (this
cell), the publish gate. Softened 2026-08-23 (owner F7 ruling, PROP-050
##CONCEPTS-GATE-SOFTENED):
the cell speaks in WARNINGS, homonymy is lawful (an own concepts
declaration owns the word), several owners dedup into one warning silenced
by a lawful relation to any one of them; the ignore-concept-warnings
subtree mute and the seeping-edges narrowing of the dependency exemption
land with the visibility waves.
5. The repairs shipped with the wave
07The four presupposing snippets move their WAL
mentions into installed:org.vibevm.world/wal fragments — sync-from-code
(the flow line and the «record in the WAL» imperative), health-audit,
git-atomic-commits, conflict-protocol (its «WAL or equivalent» hedge becomes
a fragment too: the hedge form is exactly what §2 outlaws). The main
snippets keep their own-discipline text, rephrased where the WAL was
load-bearing.
08redbook stops hard-pulling flow:wal. The
book still TEACHES the WAL method (its chapters are untouched); adopting the
discipline is an explicit flow:org.vibevm.world/wal install — installation
returns to meaning consent. The host adds its own direct
flow:org.vibevm.world/wal entry (static-transitive, like its
wal-specspaces neighbour), so the host's lanes keep the flow it genuinely
runs. The catalog consequence: once unbundled, the book snippet's member
lines about the wal family are presuppositions like any other — they move
into installed:-guarded fragments, so the edition's catalog shows the
members a project actually installed.
09The wal snippet names its own genre. One
added clause: this flow is the single-developer, central-WAL convention;
a multi-developer project chooses its own session-durability scheme — many
WALs (see flow:wal-specspaces for the registered-subprojects form), or
none — by not installing this flow or by superseding it.
6. Rollback
10The owner's escape hatch, named. Every change is package-local or additive: fragments fold back into main snippets, the redbook dependency line returns, the predicate and the check cell are removable without touching any consumer contract. Nothing here moves an anchor or a public wire format.
7. Companions
11PROP-035
(the link model whose dynamic + when this predicate extends),
PROP-024 ([boot_snippet] manifest
surface), PROP-048 (##THE-LAYER-LAW,
##MECH-DYNAMIC-CONDITIONS), the wal and wal-specspaces flows.