Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LifeOS/Workflows/Update.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ curl -s -X POST http://localhost:31337/notify -H "Content-Type: application/json
- **Latest version**: read `tag_name` from `https://api.github.com/repos/<LIFEOS_REPO>/releases/latest` — the same endpoint the bootstrap resolves against (`LIFEOS_REPO` defaults in `install/install.sh`).
- **Equal** → report "already current" and exit.
- **Behind** → fetch the newer payload FIRST: run the shipped bootstrap, `bash <skillRoot>/install/install.sh`. It is additive — it replaces only the LifeOS skill dir and backs up the prior one. Then re-read the NEW skill's `Workflows/Update.md` and continue from its step 3 (steps may have changed between versions).
- **Network unreachable** → say so and stop after re-running the additive legs that work from the on-disk skill (steps 4–6). Step 3's overlay needs a full fetched payload: on an installed system `<skillRoot>/install/` holds only the bootstrap files, so `OverlaySystem.ts` will refuse with a `bootstrap-only` blocker until the fetch in the "Behind" branch has run. That refusal is expected, not a failure.
- **Network unreachable** → say so and stop after re-running step 6, the only leg that works from the on-disk skill. Steps 3–5 all need a full fetched payload: on an installed system `<skillRoot>/install/` holds only the bootstrap files, so `OverlaySystem.ts` refuses with a `bootstrap-only` blocker, `InstallHooks.ts` fails with `payload hooks.json not found`, and `ScaffoldUser.ts` fails with `template USER not found`, until the fetch in the "Behind" branch has run. Those refusals are expected, not failures.

Never diff the on-disk payload's version against the install marker — the payload is what wrote the marker, so that comparison always says "already current" and the update never fetches anything.
3. **Re-overlay system** — refresh every system-owned file that changed (which `copyMissing` cannot do — it only writes files that are absent, so an update otherwise leaves most of the machinery stale while `VERSION` bumps). Run `bun Tools/OverlaySystem.ts --config-root <configRoot>` first to preview, then `--apply`. It overwrites only system-owned paths (hooks, skills, agents, LIFEOS/{TOOLS,DOCUMENTATION,ALGORITHM,RULES,PULSE}, CLAUDE.md, the system prompt), never touches `USER/`, `LIFEOS/MEMORY/`, or `settings.json`, never deletes, skips symlinks, and writes `VERSION` last (only on a fully successful apply, so a partial update can't claim the new version). It backs up an existing CLAUDE.md and system prompt to a timestamped `.pre-overlay-*.bak` before overwriting — read the tool's `backups`/`note` output and reconcile any local edits from those, since step 6's `ActivateImports.ts --apply` then re-activates the identity imports the fresh CLAUDE.md ships commented.
Expand Down
2 changes: 1 addition & 1 deletion LifeOS/install/skills/LifeOS/Workflows/Update.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ curl -s -X POST http://localhost:31337/notify -H "Content-Type: application/json
- **Latest version**: read `tag_name` from `https://api.github.com/repos/<LIFEOS_REPO>/releases/latest` — the same endpoint the bootstrap resolves against (`LIFEOS_REPO` defaults in `install/install.sh`).
- **Equal** → report "already current" and exit.
- **Behind** → fetch the newer payload FIRST: run the shipped bootstrap, `bash <skillRoot>/install/install.sh`. It is additive — it replaces only the LifeOS skill dir and backs up the prior one. Then re-read the NEW skill's `Workflows/Update.md` and continue from its step 3 (steps may have changed between versions).
- **Network unreachable** → say so and stop after re-running the additive legs that work from the on-disk skill (steps 4–6). Step 3's overlay needs a full fetched payload: on an installed system `<skillRoot>/install/` holds only the bootstrap files, so `OverlaySystem.ts` will refuse with a `bootstrap-only` blocker until the fetch in the "Behind" branch has run. That refusal is expected, not a failure.
- **Network unreachable** → say so and stop after re-running step 6, the only leg that works from the on-disk skill. Steps 3–5 all need a full fetched payload: on an installed system `<skillRoot>/install/` holds only the bootstrap files, so `OverlaySystem.ts` refuses with a `bootstrap-only` blocker, `InstallHooks.ts` fails with `payload hooks.json not found`, and `ScaffoldUser.ts` fails with `template USER not found`, until the fetch in the "Behind" branch has run. Those refusals are expected, not failures.

Never diff the on-disk payload's version against the install marker — the payload is what wrote the marker, so that comparison always says "already current" and the update never fetches anything.
3. **Re-overlay system** — refresh every system-owned file that changed (which `copyMissing` cannot do — it only writes files that are absent, so an update otherwise leaves most of the machinery stale while `VERSION` bumps). Run `bun Tools/OverlaySystem.ts --config-root <configRoot>` first to preview, then `--apply`. It overwrites only system-owned paths (hooks, skills, agents, LIFEOS/{TOOLS,DOCUMENTATION,ALGORITHM,RULES,PULSE}, CLAUDE.md, the system prompt), never touches `USER/`, `LIFEOS/MEMORY/`, or `settings.json`, never deletes, skips symlinks, and writes `VERSION` last (only on a fully successful apply, so a partial update can't claim the new version). It backs up an existing CLAUDE.md and system prompt to a timestamped `.pre-overlay-*.bak` before overwriting — read the tool's `backups`/`note` output and reconcile any local edits from those, since step 6's `ActivateImports.ts --apply` then re-activates the identity imports the fresh CLAUDE.md ships commented.
Expand Down