Files
Salon_Assistant/design/updates-lifecycle.md
T
2026-07-27 16:07:29 +00:00

76 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Software updates and lifecycle
## Owner transparency
Updates are an **operator** concern. The salon owner does **not** participate in or see software updates under normal operation.
## When
| Trigger | Default |
|---------|---------|
| Scheduled host job (`upgrade.sh`) | **ON by default** at install |
| Manual `./scripts/upgrade.sh` | Always available to operator |
| Owner chat | Does **not** drive platform upgrades |
## How
Host `upgrade.sh` is the parent orchestrator:
1. Snapshot via `nemohermes <name> snapshot create` when available
2. Record release pins; optional volume backup
3. Fetch product release (git tag / image digests)
4. Non-interactive only — no Hermes interactive update/setup wizards
5. Compose pull/build/recreate **preserving volumes**
6. Run migrations if state schema changed
7. Re-apply policy via `openshell` / `nemohermes policy-*`
8. Re-assert inference/aux via `nemohermes inference set` / config set from `.env`
9. Gateway restart if required by platform matrix
10. Doctor; write **operator-only** upgrade journal
## Suppress Hermes interactive update
| Risk | Mitigation |
|------|------------|
| Interactive `hermes update` | Never invoked; versions pinned by product release |
| Startup config wizards | Config pre-written; non-interactive entrypoint |
| Agent-triggered host upgrade | No tools for that; no docker.sock for owner agent |
| Concurrent sealed config writes | Serialize; honor shields/busy; retry |
## Update content vectors
| # | Vector | Upgrade action |
|---|--------|----------------|
| 1 | This product git repo | Fetch/checkout release tag |
| 2 | Host scripts | Replace from release |
| 3 | Docs | Replace |
| 4 | Compose files | Replace + recreate |
| 5 | Product images (if published) | Pull digests |
| 6 | NemoClaw CLI pin | Host install to pin |
| 7 | OpenShell CLI/gateway pin | Host/bootstrap |
| 8 | Sandbox / Hermes agent image | Rebuild/recreate as required |
| 910 | Hermes runtime + NemoClaw integration | With image |
| 11 | Lumina skills | Sync into sandbox |
| 12 | Default identity templates | Merge; never clobber owner name/profile |
| 1314 | Owner memory / Hermes session state | Persist + migrate |
| 15 | Managed config.yaml / placeholders | Regenerate via sealed host commands |
| 16 | OpenShell provider secrets | Persist |
| 1718 | Policy base/overlays/presets | Merge + apply |
| 19 | Square remote MCP registration | Re-assert + health |
| 20 | QBO local MCP package pin | Upgrade process + restart |
| 21 | Vagaro webhook service | Replace |
| 2223 | Channels + allowlists | Rebuild if matrix requires; persist allowlists |
| 2425 | Inference main + aux slots | inference set / config from `.env` |
| 26 | Dashboard/API forwards | Re-bind |
| 27 | Fixtures | Replace; not live connections |
| 28 | Migrations | Run by version |
| 29 | Auto-update timer unit | Enabled by default |
| 30 | Host Docker Engine | Separate documented path |
## Instrumentation
Operator-only events under `state/upgrade/`: `upgrade.started|step|migration|policy|service|doctor|finished|failed`.
## Rollback
Previous pins + volumes; `upgrade.sh --rollback`; doctor.