v0.9.2 — write at close-out, know when to update
Two behavior changes, both about timing — when the wiki gets written, and when you learn a new version exists.
Wiki authoring moves to the session close-out
The injected operating rules told a session what to record but never when. Long work sessions therefore kept writing wiki pages mid-task: meta-work spending the context the actual task needed, producing records made before the session's whole picture existed. Rule 3 now opens with the timing contract:
- mid-session, the session does not create or edit wiki pages — capture already preserves the transcript, so deferring loses nothing
/wiki-savefiles the whole session at the end, including the decision from its first hour that was deliberately left unwritten at the time- the one exception: you explicitly ask to record something now (any
/wiki-*command counts)
This costs +317 bytes of cold-start rules per session, against thousands of tokens per mid-session page write. Verified behaviorally on live sessions: a decision-bearing prompt now answers "I'll file this at /wiki-save", and an explicit "record this now" still records.
The engine tells you when a newer version exists — and never updates itself
You no longer have to watch the Releases page. The daemon asks origin once a day — a git fetch plus an object read of origin/main's package.json; nothing is checked out and nothing runs — and your next session then starts with one line:
[llmwiki] engine update available: v0.9.1 → v0.9.2 — apply when you choose: cd ~/llmwiki && git pull && ./setup.sh (the engine never updates itself)
Applying stays your act, deliberately. Hooks execute this engine's code inside every session, so auto-applying whatever origin/main currently says would turn one compromised account into code execution on every consumer machine at their next session start. A clone is not consent (v0.9.0) — and pulling new code is a fresh act of consent.
Details that make the line trustworthy:
- it compares origin's recorded version against your clone's live
package.json, so it disappears the moment you pull — no daily lag - version strings from the remote are treated as untrusted input: only a plain
x.y.zsurvives, re-validated on every read; a tampered state file reads as nothing llmwiki doctorgrew an[update]section; an available update never fails doctor — being behind is information, not a defect- the check runs from the daemon only (session start does zero network and stays offline-safe), and the record is an owned state file removed by
./setup.sh --uninstall --purge-data
Upgrading: git pull && ./setup.sh — one last manual look at the Releases page; after this version the engine tells you. Coming from v0.8.x, the required enrollment step in v0.9.0 still applies.
Verified with 765 tests, tsc --noEmit, live-session behavioral probes for the authoring rule, and real-hook renders of the update notice in both rule languages.