Seed approved structure: design SSOT, operator docs, scaffolds.

Product layout for Lumina / Salon_Assistant at 0.1.0-design.
No product implementation until explicit build.
This commit is contained in:
Ty
2026-07-27 09:44:35 -07:00
commit 48566993f6
108 changed files with 1813 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
# 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.