diff --git a/docs/examples/log-watcher/justfile b/docs/examples/log-watcher/justfile
index db4e570..a8ad12f 100644
--- a/docs/examples/log-watcher/justfile
+++ b/docs/examples/log-watcher/justfile
@@ -12,9 +12,11 @@ default: accept
# build the self-contained executable from wo.toml: `woc
` reads the
# manifest and produces target/log-watcher (needs the compiler and runtime
-# built once: `just woc-build` and `just wovm-build` at the root)
+# built once: `just woc-build` and `just wovm-build` at the root). WO_RUNTIME
+# points woc at the repo's freshly built VM — the manifest pins no path, so an
+# installed woc self-locates its own wovm instead.
build:
- {{ROOT}}/compiler/_build/default/bin/woc .
+ WO_RUNTIME={{ROOT}}/runtime/wovm {{ROOT}}/compiler/_build/default/bin/woc .
@ls -la target/log-watcher
# the language track's acceptance test: this sample must compile with zero
diff --git a/docs/examples/log-watcher/wo.toml b/docs/examples/log-watcher/wo.toml
index 6e9e4cf..01fec06 100644
--- a/docs/examples/log-watcher/wo.toml
+++ b/docs/examples/log-watcher/wo.toml
@@ -10,8 +10,7 @@ description = "The Haxe log-watcher ported file-for-file: the systems-track samp
[runtime]
wo = ">= 0.1"
-# `woc .` in this directory (or `woc docs/examples/log-watcher` from the
-# repo root) builds target/log-watcher from this manifest. Paths resolve
-# against this file's directory.
-[build]
-runtime = "../../../runtime/wovm"
+# `woc ` builds target/log-watcher from this manifest. No runtime path is
+# pinned here so the project is portable: an installed `woc` finds `wovm` beside
+# its own binary. For an in-repo build, point woc at the freshly built VM with
+# WO_RUNTIME=/runtime/wovm — the module justfile's `build` recipe does.