Lumi/docs/update-audit-0.2.0.md
2026-07-18 15:48:54 +02:00

58 lines
3.1 KiB
Markdown

# 0.2.0 Update Compatibility Audit
This audit compares pre-merge `main` (`1173b8a`, core 0.1.9) with the initially
published merge (`c917615`, incorrectly numbered 1.2.0). The merge changed 191
files: 75 core/runtime files, 85 plugin files, 20 generated knowledge files, and
11 other project files.
## Confirmed Upgrade Failures
1. **Core imported an independently preserved plugin.** `src/web/server.js`
loaded `plugins/okf/backend/file_knowledge` during startup. Core-only updates
deliberately preserve the whole `plugins/` directory, so a 0.1.9 install did
not receive the new OKF plugin file and crashed before the web server started.
2. **A newly added package was required before dependencies were updated.** The
OBS connector loaded `obs-websocket-js` at module initialization. Core updates
preserve `node_modules/` and the old updater did not reconcile it with the new
lockfile, producing another startup crash.
3. **Core and plugin delivery were not coordinated.** The merged repository had
patch-bumped plugins, but a core update copied none of them by design. There
was no historical release catalog or exact-version plugin installer to let an
administrator bring an old installation to a known release set.
4. **The release number was wrong.** 1.2.0 was a mistaken major-version jump from
0.1.9. Normal semantic-version ordering would reject the corrected 0.2.0 as a
downgrade for an already affected install.
No unresolved static relative imports remain in the repaired tree. Plugin data
remains isolated under each plugin's `data/` directory, and current plugin
manifests match the 0.2.0 release catalog.
## Repairs
- Core now uses the OKF capability registered at
`global.lumiFrameworks.okf.saveCorrection`; if OKF is absent, only that action
shows an install/enable message.
- OBS WebSocket is an optional dependency and is loaded behind a guarded
connector boundary. Its absence cannot stop the overlay or web server.
- `run.js` reconciles required direct dependencies with `package-lock.json`
before each application start. Optional integration failure is degraded, not
fatal.
- `release-index.json` maps core, plugin, and Lumi AI tool versions to immutable
release tags. Admins can install or reinstall an exact core/plugin version.
- `update-manifest.json` declares 0.2.0 as the supported replacement for 1.2.0,
allowing affected installations to repair themselves despite semver ordering.
- Repository checkout and post-copy verification both confirm the requested
version. Plugin updates preserve plugin data and now restart before reporting
the selected code as active.
## Data Safety
The repair does not replace `data/`, `plugins/`, `node_modules/`, configuration,
storage, uploads, logs, databases, secrets, environment files,
`knowledge/community/`, or `knowledge/corrections/`. It creates a compressed
rollback snapshot first. The repair ZIP contains only managed core files, a
preservation manifest, and SHA-256 hashes; it contains no user or plugin data.
The snapshot database copy is a safety backup, not a migration or replacement.
The repair introduces no destructive database migration.